<?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>227887</bug_id>
          
          <creation_ts>2021-07-12 14:17:55 -0700</creation_ts>
          <short_desc>Drop all file locks synchronously in network process when it is about to suspend</short_desc>
          <delta_ts>2021-07-23 16:25:34 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <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>
          <dependson>227771</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sihui Liu">sihui_liu</reporter>
          <assigned_to name="Sihui Liu">sihui_liu</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1776450</commentid>
    <comment_count>0</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-07-12 14:17:55 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776451</commentid>
    <comment_count>1</comment_count>
      <attachid>433360</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-07-12 14:22:51 -0700</bug_when>
    <thetext>Created attachment 433360
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776454</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-12 14:31:05 -0700</bug_when>
    <thetext>I don&apos;t &quot;Drop file locks synchronously on PrepareToSuspend message&quot; something we want. I wish there was better communication before implementing such things.

I start schedule a database write, home out of Safari, I want my database write to happen (before we suspend or after) but it should happen.

Aggressively aborting database operations on homing out seems very wrong to me. What&apos;s the point of us taking the process assertion then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776455</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-12 14:35:17 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #2)
&gt; I don&apos;t &quot;Drop file locks synchronously on PrepareToSuspend message&quot;
&gt; something we want. I wish there was better communication before implementing
&gt; such things.
&gt; 
&gt; I start schedule a database write, home out of Safari, I want my database
&gt; write to happen (before we suspend or after) but it should happen.
&gt; 
&gt; Aggressively aborting database operations on homing out seems very wrong to
&gt; me. What&apos;s the point of us taking the process assertion then?

Geoff had a proposal on the other bug that seemed reasonable. I don&apos;t really understand how we ended up with an &quot;abort everything on PrepareToSuspend&quot; proposal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776471</commentid>
    <comment_count>4</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-07-12 15:28:55 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #3)
&gt; (In reply to Chris Dumez from comment #2)
&gt; &gt; I don&apos;t &quot;Drop file locks synchronously on PrepareToSuspend message&quot;
&gt; &gt; something we want. I wish there was better communication before implementing
&gt; &gt; such things.
&gt; &gt; 
&gt; &gt; I start schedule a database write, home out of Safari, I want my database
&gt; &gt; write to happen (before we suspend or after) but it should happen.
&gt; &gt; 
&gt; &gt; Aggressively aborting database operations on homing out seems very wrong to
&gt; &gt; me. What&apos;s the point of us taking the process assertion then?
&gt; 
&gt; Geoff had a proposal on the other bug that seemed reasonable. I don&apos;t really
&gt; understand how we ended up with an &quot;abort everything on PrepareToSuspend&quot;
&gt; proposal.

This patch is more about providing a way to drop all database locks synchronously, which aims to solve crash of process being suspended before asynchronous suspend task. We may use it in imminent PrepareToSuspend or invalidation handler. I just put it in PrepareToSuspend because that&apos;s current IDB behavior: abort on PrepareToSuspend messages.

The other bug(https://bugs.webkit.org/show_bug.cgi?id=227778) is about not aborting things aggressively on non-imminent suspension. We may solve it for IDB by scheduling async task to suspend thread on non-imminent PrepareToSuspend like we did for LocalStorage. It&apos;s easier to do that if we can remove current IDB suspend code after this patch.

I am just uploading the initial patch for review and discussion. Will also need to check perf and tests results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776497</commentid>
    <comment_count>5</comment_count>
      <attachid>433372</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-07-12 16:56:40 -0700</bug_when>
    <thetext>Created attachment 433372
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776500</commentid>
    <comment_count>6</comment_count>
      <attachid>433374</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-07-12 17:05:41 -0700</bug_when>
    <thetext>Created attachment 433374
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776517</commentid>
    <comment_count>7</comment_count>
      <attachid>433381</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-07-12 17:47:07 -0700</bug_when>
    <thetext>Created attachment 433381
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776710</commentid>
    <comment_count>8</comment_count>
      <attachid>433440</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-07-13 12:07:04 -0700</bug_when>
    <thetext>Created attachment 433440
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776715</commentid>
    <comment_count>9</comment_count>
      <attachid>433442</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-07-13 12:19:44 -0700</bug_when>
    <thetext>Created attachment 433442
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776717</commentid>
    <comment_count>10</comment_count>
      <attachid>433443</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-07-13 12:21:41 -0700</bug_when>
    <thetext>Created attachment 433443
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1776957</commentid>
    <comment_count>11</comment_count>
      <attachid>433443</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-07-14 10:05:09 -0700</bug_when>
    <thetext>Comment on attachment 433443
Patch

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

Overall, this seems like a risky change to make at this point in the cycle. I don&apos;t know if we have evidence that this is still an issue after our previous fixes either.
I personally worry about the current behavior of IDB being way too aggressive and I wish we&apos;d fix that before shipping, not make everything else like IDB.

&gt; Source/WebKit/ChangeLog:9
&gt; +        current implementation is IndexedDB releases locks by aborting transactions synchronously on PrepareToSuspend,

The current behavior of IndexedDB is bad and we know it&apos;s bad: we don&apos;t want to trigger an IndexedDB write, home out of Safari and have that IndexedDB write get lost.
As a result, aligning other better implementations with the bad IDB one is not the way to go IMO.

&gt; Source/WebCore/platform/sql/SQLiteDatabase.cpp:-237
&gt; -            SQLiteTransactionInProgressAutoCounter transactionCounter;

Dropping this seems like a regression. The database file may be locked during the closing of the database and this SQLiteTransactionInProgressAutoCounter was what was causing us to take a process assertion for the process. I get that your SQLiteLockScope below is going to keep it working for the network process. However, I don&apos;t see what keeps it working for database activity in the WebProcess (which relies on the SQLiteDatabaseTracker and setIsHoldingLockedFiles IPC).

&gt; Source/WebCore/platform/sql/SQLiteDatabase.h:61
&gt; +    WEBCORE_EXPORT bool open(const String&amp; filename, OpenMode = OpenMode::ReadWriteCreate, IsInterruptable = IsInterruptable::No);

This new flag is super confusing to me. What does this mean? Why am given a choice? When do I want my database to be interruptible or not?

&gt; Source/WebCore/platform/sql/SQLiteStatement.cpp:72
&gt; +        SQLiteLockScope lockScope;

So now unrelated database operations (IndexedDB, local storage, ITP) which happen on different databases and on different threads have to be synchronized via locking?
I can&apos;t imagine this being great for perf and it feels odd since they are completely unrelated and should be able to proceed in parallel.

&gt; Source/WebCore/platform/sql/SQLiteStatement.cpp:73
&gt; +        error = sqlite3_step(m_statement);

So we used to take a process assertion from the duration of *transactions*, now we only take them for the duration to the statement stepping. Why is that better/ok? Isn&apos;t the database file locked during a transaction, no matter if we&apos;re stepping at the moment or not?

&gt; Source/WebCore/platform/sql/SQLiteStatement.cpp:84
&gt; +    Locker databaseLock { m_database.databaseMutex() };

Funny how this function says WithoutLock() and the first thing it does is locking. I guess you meant &quot;without that other lock&quot; since there is more than one lock now. Still looks weird.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:-2233
&gt; -    WebResourceLoadStatisticsStore::suspend([callbackAggregator] { });

I strongly disagree with this change.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:-2250
&gt; -    m_storageManagerSet-&gt;suspend([callbackAggregator] { });

ditto.

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2239
&gt; +    m_databaseAssertionScope.interrupt();

Is this &quot;interruptAndSuspend&quot;? ...

&gt; Source/WebKit/NetworkProcess/NetworkProcess.cpp:2268
&gt; +    m_databaseAssertionScope.resume();

... Since we&apos;re resuming here

&gt; Source/WebKit/NetworkProcess/NetworkProcess.h:576
&gt; +    DatabaseAssertionScope m_databaseAssertionScope;

It is super confusing to have a &quot;scope&quot; as a data member. It makes it look like we&apos;re holding a database assertion as long as the NetworkProcess object lives.

&gt; Source/WebKit/Shared/DatabaseAssertionScope.cpp:57
&gt; +    m_assertionReleaseTimer.stop();

I don&apos;t understand how this can be thread-safe. As far as I understand it, end() can get called on any database thread. m_assertionReleaseTimer is a RunLoop timer which fires on the main thread. Stopping and Starting this timer on a background thread while the main thread starts firing the timer (and thus is updating the internal state of the RunLoopTimer) seems like it would be an issue, no?

&gt; Source/WebKit/Shared/DatabaseAssertionScope.cpp:66
&gt; +        m_assertionReleaseTimer.startOneShot(1_s);

What prevents this timer from firing while in the middle of a database operation? It seems we only stop it when ending a database operation. What if:
1. I start a database operation
2. End a database operation which starts the timer
3. Start a database operation that takes over 1 second to complete

Wouldn&apos;t that timer fire on the main thread in the middle of the database operation?

It looks like assertionReleaseTimerFired() does grab a lock so it won&apos;t release the process assertion in the middle of the database operation at least. However, at soon as that database operation releases the lock, assertionReleaseTimerFired() will release the process assertion no matter what, even if other database operations have started, no?

&gt; Source/WebKit/Shared/DatabaseAssertionScope.h:54
&gt; +    WeakHashSet&lt;WebCore::SQLiteDatabase&gt; m_databases;

WeakHashSet seems very unsafe to me. I suspect you&apos;d see assertion hits on iOS-wk2 debug.
Those SQLiteDatabase belong to many different threads (ITP thread, LocalStorage thread, IDB thread) and get constructed/destroyed on those threads. How can you safely iterate over those on any thread?

I guess you have locking in place that makes it safe but WeakPtr doesn&apos;t know that and its assertions will very likely hit in debug.

&gt; Source/WebKit/Shared/DatabaseAssertionScope.h:55
&gt; +    bool m_interrupted { false };

Style: Prefix for boolean variables please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1777998</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-19 14:18:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/80802224&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779179</commentid>
    <comment_count>13</comment_count>
      <attachid>434121</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-07-23 14:29:41 -0700</bug_when>
    <thetext>Created attachment 434121
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779181</commentid>
    <comment_count>14</comment_count>
      <attachid>434123</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-07-23 14:31:15 -0700</bug_when>
    <thetext>Created attachment 434123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779184</commentid>
    <comment_count>15</comment_count>
      <attachid>434125</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-07-23 14:38:01 -0700</bug_when>
    <thetext>Created attachment 434125
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779204</commentid>
    <comment_count>16</comment_count>
      <attachid>434131</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-07-23 15:34:51 -0700</bug_when>
    <thetext>Created attachment 434131
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1779218</commentid>
    <comment_count>17</comment_count>
      <attachid>434135</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-07-23 16:00:49 -0700</bug_when>
    <thetext>Created attachment 434135
Patch</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433360</attachid>
            <date>2021-07-12 14:22:51 -0700</date>
            <delta_ts>2021-07-12 16:56:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>WIP</filename>
            <type>text/plain</type>
            <size>36113</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlcy50eHQKaW5kZXggM2NiZmE1YWI1YTRiLi41ZjFkNDRlMWQzOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMu
dHh0CkBAIC0yMTg4LDYgKzIxODgsNyBAQCBwbGF0Zm9ybS9zcWwvU1FMaXRlQXV0aG9yaXplci5j
cHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVE
YXRhYmFzZVRyYWNrZXIuY3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAKK3Bs
YXRmb3JtL3NxbC9TUUxpdGVMb2NrU2NvcGUuY3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVt
ZW50LmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlLmNwcAog
cGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDUxMmU2ZGRjODU5MC4uMDJh
Y2VmMTVhYzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0yOTMxLDYgKzI5MzEsNyBAQAogCQk5M0Y2QjgxRjI1NjdBMDhDMDBB
MDg0ODggLyogU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGNkI4MUMyNTY3OUY3MDAwQTA4
NDg4IC8qIFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Y2QjgyMjI1NjdBNjU2MDBB
MDg0ODggLyogU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y2QjgxQjI1Njc5RjZGMDBBMDg0ODgg
LyogU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGNkYxRUUxMjdGNzBCMTAwNTVDQjA2IC8q
IFdlYkdMQ29udGV4dEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0Y2RjFFQjEyN0Y3MEIxMDA1NUNCMDYgLyogV2ViR0xDb250ZXh0RXZlbnQu
aCAqLzsgfTsKKwkJOTNGOEYwRjMyNjk4MjYxMzAwQTlGMzMxIC8qIFNRTGl0ZUxvY2tTY29wZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOEYwRjEy
Njk4MjYxMjAwQTlGMzMxIC8qIFNRTGl0ZUxvY2tTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjkyNTQzMEY3RUY1QjgwMDdFMzdDOSAv
KiBSYWRpb0J1dHRvbkdyb3Vwcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNGOTI1NDEwRjdFRjVCODAwN0UzN0M5IC8qIFJhZGlvQnV0dG9uR3JvdXBz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNG
OUI2RTEwQkEwRkI3MjAwODU0MDY0IC8qIEpTQ29tbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOUI2REYwQkEwRkI3MjAwODU0MDY0IC8qIEpT
Q29tbWVudC5oICovOyB9OwogCQk5M0Y5QjdBMTBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNl
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
RjlCNzlGMEJBNjAzMjYwMDg1NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5oICovOyB9OwpAQCAtMTE4
MzQsNiArMTE4MzUsOCBAQAogCQk5M0Y4QjMwNTBBMzAwRkUxMDBGNjFBQjggLyogQ29kZUdlbmVy
YXRvci5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBDb2RlR2VuZXJhdG9y
LnBtOyBwYXRoID0gc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5M0Y4QjMwNjBBMzAwRkVBMDBGNjFBQjggLyogQ29kZUdlbmVyYXRvckpTLnBt
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IENvZGVHZW5lcmF0b3JKUy5wbTsg
cGF0aCA9IHNjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB3cmFwc0xpbmVzID0gMDsgfTsKIAkJOTNGOEIzMDcwQTMwMEZFQTAwRjYxQUI4IC8qIGdlbmVy
YXRlLWJpbmRpbmdzLnBsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9ICJnZW5l
cmF0ZS1iaW5kaW5ncy5wbCI7IHBhdGggPSAic2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbCI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRjhGMEVGMjY5ODI2MTIwMEE5RjMzMSAv
KiBTUUxpdGVMb2NrU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU1FMaXRlTG9ja1Njb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNG
OEYwRjEyNjk4MjYxMjAwQTlGMzMxIC8qIFNRTGl0ZUxvY2tTY29wZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTUUxpdGVMb2NrU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTNGOTI1NDEwRjdFRjVCODAwN0UzN0M5IC8qIFJhZGlvQnV0dG9uR3JvdXBz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJhZGlvQnV0dG9uR3JvdXBzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjkyNTQyMEY3RUY1QjgwMDdFMzdDOSAv
KiBSYWRpb0J1dHRvbkdyb3Vwcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBSYWRpb0J1dHRvbkdyb3Vwcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzRjlCNkRFMEJBMEZCNzIwMDg1NDA2NCAvKiBKU0NvbW1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDb21tZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE4NTI4LDYgKzE4NTMxLDggQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCiAJCQkJMUEyRTZFNzgwQ0M1NTZENTAwNEEyMDYyIC8qIFNRTGl0ZUF1dGhv
cml6ZXIuY3BwICovLAorCQkJCTkzRjhGMEVGMjY5ODI2MTIwMEE5RjMzMSAvKiBTUUxpdGVMb2Nr
U2NvcGUuY3BwICovLAorCQkJCTkzRjhGMEYxMjY5ODI2MTIwMEE5RjMzMSAvKiBTUUxpdGVMb2Nr
U2NvcGUuaCAqLywKIAkJCQkxQTIyNDY0MzBDQzk4RERCMDBDMDUyNDAgLyogU1FMaXRlRGF0YWJh
c2UuY3BwICovLAogCQkJCTFBMjI0NjQ0MENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVEYXRhYmFz
ZS5oICovLAogCQkJCTdFNDc0RTFEMTI0OTREQzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRy
YWNrZXIuY3BwICovLApAQCAtMzIzMjMsNiArMzIzMjgsNyBAQAogCQkJCTk0REU1QzhFMUQ4MDgw
MjcwMDE2NEYyQSAvKiBDU1NTZWxlY3RvclBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgw
RTZDRTgwQTE5ODlDQTAwN0ZCOEM1IC8qIENTU1NoYWRvd1ZhbHVlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODBFNkUwRjBBMTk5MTFDMDA3RkI4QzUgLyogQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJOTNGOEYwRjMyNjk4MjYxMzAwQTlGMzMxIC8qIFNRTGl0ZUxvY2tT
Y29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZEMEMwQTE5ODlDQTAwN0ZCOEM1IC8qIENT
U1N0eWxlUnVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThFQTgwMDcwQTE5NTE2RTAwQThFRjVG
IC8qIENTU1N0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0REU1QzkyMUQ4MzAxMUQw
MDE2NEYyQSAvKiBDU1NTdXBwb3J0c1BhcnNlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAppbmRleCBhMTExMDI1Njgx
ZTQuLmI1ODNjNjYwOTRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlRGF0YWJhc2UuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiTWVtb3J5UmVsZWFz
ZS5oIgogI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIlNRTGl0
ZUZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJTUUxpdGVMb2NrU2NvcGUuaCIKICNpbmNsdWRlICJT
UUxpdGVTdGF0ZW1lbnQuaCIKICNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDxzcWxpdGUzLmg+
CkBAIC04OCw3ICs4OSw3IEBAIFNRTGl0ZURhdGFiYXNlOjp+U1FMaXRlRGF0YWJhc2UoKQogICAg
IGNsb3NlKCk7CiB9CiAKLWJvb2wgU1FMaXRlRGF0YWJhc2U6Om9wZW4oY29uc3QgU3RyaW5nJiBm
aWxlbmFtZSwgT3Blbk1vZGUgb3Blbk1vZGUpCitib29sIFNRTGl0ZURhdGFiYXNlOjpvcGVuKGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIE9wZW5Nb2RlIG9wZW5Nb2RlLCBJc0ludGVycnVwdGFibGUg
aW50ZXJydXB0YWJsZSkKIHsKICAgICBpbml0aWFsaXplU1FMaXRlSWZOZWNlc3NhcnkoKTsKIApA
QCAtMTE0LDcgKzExNSwxNCBAQCBib29sIFNRTGl0ZURhdGFiYXNlOjpvcGVuKGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIE9wZW5Nb2RlIG9wZW5Nb2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIAotICAgICAgICBtX29wZW5FcnJvciA9IHNxbGl0ZTNfb3Blbl92MihGaWxlU3lzdGVt
OjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZW5hbWUpLmRhdGEoKSwgJm1fZGIsIGZsYWdz
LCBudWxscHRyKTsKKyAgICAgICAgeworICAgICAgICAgICAgU1FMaXRlTG9ja1Njb3BlIGxvY2tT
Y29wZTsKKyAgICAgICAgICAgIG1fb3BlbkVycm9yID0gc3FsaXRlM19vcGVuX3YyKEZpbGVTeXN0
ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlbmFtZSkuZGF0YSgpLCAmbV9kYiwgZmxh
Z3MsIG51bGxwdHIpOworICAgICAgICAgICAgbV9pbnRlcnJ1cHRhYmxlID0gaW50ZXJydXB0YWJs
ZTsKKyAgICAgICAgICAgIGlmIChtX29wZW5FcnJvciA9PSBTUUxJVEVfT0spCisgICAgICAgICAg
ICAgICAgbG9ja1Njb3BlLmFkZERhdGFiYXNlKCp0aGlzKTsKKyAgICAgICAgfQorCiAgICAgICAg
IGlmIChtX29wZW5FcnJvciAhPSBTUUxJVEVfT0spIHsKICAgICAgICAgICAgIG1fb3BlbkVycm9y
TWVzc2FnZSA9IG1fZGIgPyBzcWxpdGUzX2Vycm1zZyhtX2RiKSA6ICJzcWxpdGVfb3BlbiByZXR1
cm5lZCBudWxsIjsKICAgICAgICAgICAgIExPR19FUlJPUigiU1FMaXRlIGRhdGFiYXNlIGZhaWxl
ZCB0byBsb2FkIGZyb20gJXNcbkNhdXNlIC0gJXMiLCBmaWxlbmFtZS5hc2NpaSgpLmRhdGEoKSwK
QEAgLTE2Nyw3ICsxNzUsMTEgQEAgc3RhdGljIGludCB3YWxBdXRvbWF0aWNUcnVuY2F0aW9uSG9v
ayh2b2lkKiBjb250ZXh0LCBzcWxpdGUzKiBkYiwgY29uc3QgY2hhciogZGIKIAogICAgIGlmICh3
YWxQYWdlQ291bnQgPj0gY2hlY2twb2ludFRocmVzaG9sZCkgewogICAgICAgICBpbnQgbmV3V2Fs
UGFnZUNvdW50ID0gMDsKLSAgICAgICAgaW50IHJlc3VsdCA9IHNxbGl0ZTNfd2FsX2NoZWNrcG9p
bnRfdjIoZGIsIGRiTmFtZSwgU1FMSVRFX0NIRUNLUE9JTlRfVFJVTkNBVEUsICZuZXdXYWxQYWdl
Q291bnQsIG51bGxwdHIpOworICAgICAgICBpbnQgcmVzdWx0OworICAgICAgICB7CisgICAgICAg
ICAgICBTUUxpdGVMb2NrU2NvcGUgbG9ja1Njb3BlOworICAgICAgICAgICAgcmVzdWx0ID0gc3Fs
aXRlM193YWxfY2hlY2twb2ludF92MihkYiwgZGJOYW1lLCBTUUxJVEVfQ0hFQ0tQT0lOVF9UUlVO
Q0FURSwgJm5ld1dhbFBhZ2VDb3VudCwgbnVsbHB0cik7CisgICAgICAgIH0KIAogI2lmIExPR19E
SVNBQkxFRAogICAgICAgICBVTlVTRURfVkFSSUFCTEUocmVzdWx0KTsKQEAgLTE5NCw3ICsyMDYs
NiBAQCB2b2lkIFNRTGl0ZURhdGFiYXNlOjplbmFibGVBdXRvbWF0aWNXQUxUcnVuY2F0aW9uKCkK
IAogdm9pZCBTUUxpdGVEYXRhYmFzZTo6dXNlV0FMSm91cm5hbE1vZGUoKQogewotICAgIG1fdXNl
V0FMID0gdHJ1ZTsKICAgICB7CiAgICAgICAgIGF1dG8gd2FsU3RhdGVtZW50ID0gcHJlcGFyZVN0
YXRlbWVudCgiUFJBR01BIGpvdXJuYWxfbW9kZT1XQUw7Il9zKTsKICAgICAgICAgaWYgKHdhbFN0
YXRlbWVudCAmJiB3YWxTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7CkBAIC0yMzIs
MTIgKzI0MywxMSBAQCB2b2lkIFNRTGl0ZURhdGFiYXNlOjpjbG9zZShTaG91bGRTZXRFcnJvclN0
YXRlIHNob3VsZFNldEVycm9yU3RhdGUpCiAgICAgICAgIH0KIAogICAgICAgICBpbnQgY2xvc2VS
ZXN1bHQ7Ci0gICAgICAgIGlmIChtX3VzZVdBTCkgewotICAgICAgICAgICAgLy8gQ2xvc2UgaW4g
dGhlIHNjb3BlIG9mIGNvdW50ZXIgYXMgaXQgbWF5IGFjcXVpcmUgbG9jayBvZiBkYXRhYmFzZS4K
LSAgICAgICAgICAgIFNRTGl0ZVRyYW5zYWN0aW9uSW5Qcm9ncmVzc0F1dG9Db3VudGVyIHRyYW5z
YWN0aW9uQ291bnRlcjsKLSAgICAgICAgICAgIGNsb3NlUmVzdWx0ID0gc3FsaXRlM19jbG9zZShk
Yik7Ci0gICAgICAgIH0gZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBTUUxpdGVMb2NrU2Nv
cGUgbG9ja1Njb3BlOwogICAgICAgICAgICAgY2xvc2VSZXN1bHQgPSBzcWxpdGUzX2Nsb3NlKGRi
KTsKKyAgICAgICAgICAgIGxvY2tTY29wZS5yZW1vdmVEYXRhYmFzZSgqdGhpcyk7CisgICAgICAg
IH0KIAogICAgICAgICBpZiAoY2xvc2VSZXN1bHQgIT0gU1FMSVRFX09LKQogICAgICAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoU1FMRGF0YWJhc2UsICJTUUxpdGVEYXRhYmFzZTo6Y2xvc2U6IEZh
aWxlZCB0byBjbG9zZSBkYXRhYmFzZSAoJWQpIC0gJXtwdWJsaWN9cyIsIGNsb3NlUmVzdWx0LCBs
YXN0RXJyb3JNc2coKSk7CkBAIC00NTgsOCArNDY4LDE1IEBAIGludCBTUUxpdGVEYXRhYmFzZTo6
cnVuSW5jcmVtZW50YWxWYWN1dW1Db21tYW5kKCkKIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmludGVy
cnVwdCgpCiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YWJhc2VDbG9zaW5nTXV0ZXggfTsK
LSAgICBpZiAobV9kYikKLSAgICAgICAgc3FsaXRlM19pbnRlcnJ1cHQobV9kYik7CisgICAgCisg
ICAgaWYgKCFtX2RiKQorICAgICAgICByZXR1cm47CisKKyAgICBzcWxpdGUzX2ludGVycnVwdCht
X2RiKTsKKworICAgIEFTQ0lJTGl0ZXJhbCBxdWVyeVN0cmluZyA9IG1faW50ZXJydXB0YWJsZSA9
PSBJc0ludGVycnVwdGFibGU6OlllcyA/ICJDT01NSVQiX3MgOiAiUk9MTEJBQ0siX3M7CisgICAg
aWYgKGF1dG8gcXVlcnkgPSBwcmVwYXJlU3RhdGVtZW50KHF1ZXJ5U3RyaW5nKSkKKyAgICAgICAg
cXVlcnktPnN0ZXBXaXRob3V0TG9jaygpOwogfQogCiBpbnQ2NF90IFNRTGl0ZURhdGFiYXNlOjps
YXN0SW5zZXJ0Um93SUQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZURhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0
YWJhc2UuaAppbmRleCA0YjIyYzhmZTY4ZTMuLjA5Y2YwZmFmMGEzNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgKQEAgLTU3LDcgKzU3LDggQEAgcHVi
bGljOgogICAgIFdFQkNPUkVfRVhQT1JUIH5TUUxpdGVEYXRhYmFzZSgpOwogCiAgICAgZW51bSBj
bGFzcyBPcGVuTW9kZSB7IFJlYWRPbmx5LCBSZWFkV3JpdGUsIFJlYWRXcml0ZUNyZWF0ZSB9Owot
ICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgb3Blbihjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBPcGVu
TW9kZSA9IE9wZW5Nb2RlOjpSZWFkV3JpdGVDcmVhdGUpOworICAgIGVudW0gY2xhc3MgSXNJbnRl
cnJ1cHRhYmxlIDogYm9vbCB7IE5vLCBZZXMgfTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9w
ZW4oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgT3Blbk1vZGUgPSBPcGVuTW9kZTo6UmVhZFdyaXRl
Q3JlYXRlLCBJc0ludGVycnVwdGFibGUgPSBJc0ludGVycnVwdGFibGU6Ok5vKTsKICAgICBib29s
IGlzT3BlbigpIGNvbnN0IHsgcmV0dXJuIG1fZGI7IH0KICAgICBlbnVtIGNsYXNzIFNob3VsZFNl
dEVycm9yU3RhdGUgOiBib29sIHsgTm8sIFllcyB9OwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
Y2xvc2UoU2hvdWxkU2V0RXJyb3JTdGF0ZSA9IFNob3VsZFNldEVycm9yU3RhdGU6Olllcyk7CkBA
IC0xODEsOCArMTgyLDYgQEAgcHJpdmF0ZToKICAgICBzdGQ6OmF0b21pYzx1bnNpZ25lZD4gbV9z
dGF0ZW1lbnRDb3VudCB7IDAgfTsKICNlbmRpZgogCi0gICAgYm9vbCBtX3VzZVdBTCB7IGZhbHNl
IH07Ci0KICAgICBMb2NrIG1fYXV0aG9yaXplckxvY2s7CiAgICAgUmVmUHRyPERhdGFiYXNlQXV0
aG9yaXplcj4gbV9hdXRob3JpemVyIFdURl9HVUFSREVEX0JZX0xPQ0sobV9hdXRob3JpemVyTG9j
ayk7CiAKQEAgLTE5Myw2ICsxOTIsOCBAQCBwcml2YXRlOgogCiAgICAgaW50IG1fb3BlbkVycm9y
IHsgU1FMSVRFX0VSUk9SIH07CiAgICAgQ1N0cmluZyBtX29wZW5FcnJvck1lc3NhZ2U7CisKKyAg
ICBJc0ludGVycnVwdGFibGUgbV9pbnRlcnJ1cHRhYmxlIHsgSXNJbnRlcnJ1cHRhYmxlOjpObyB9
OwogfTsKIAogaW5saW5lIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmluY3JlbWVudFN0YXRlbWVudENv
dW50KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxl
U3lzdGVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVt
LmNwcAppbmRleCA3NmU0NWFmMzRlZDAuLjhiOWIzMjFkYzY0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcApAQCAtMzIsNiArMzIsNyBA
QAogI2luY2x1ZGUgIlNRTGl0ZUZpbGVTeXN0ZW0uaCIKIAogI2luY2x1ZGUgIlNRTGl0ZURhdGFi
YXNlLmgiCisjaW5jbHVkZSAiU1FMaXRlTG9ja1Njb3BlLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3Rh
dGVtZW50LmgiCiAjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNsdWRl
IDxzcWxpdGUzLmg+CkBAIC05NCw2ICs5NSw3IEBAIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6ZGVs
ZXRlRGF0YWJhc2VGaWxlKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6dHJ1bmNhdGVEYXRhYmFzZUZpbGUoc3Fs
aXRlMyogZGF0YWJhc2UpCiB7CisgICAgU1FMaXRlTG9ja1Njb3BlIGxvY2tTY29wZTsKICAgICBy
ZXR1cm4gc3FsaXRlM19maWxlX2NvbnRyb2woZGF0YWJhc2UsIDAsIFNRTElURV9UUlVOQ0FURV9E
QVRBQkFTRSwgMCkgPT0gU1FMSVRFX09LOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlTG9ja1Njb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2NvcGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uYjg1Yjc5MzJmMGQzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUxvY2tTY29wZS5jcHAKQEAgLTAsMCArMSw3NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTUUxpdGVMb2Nr
U2NvcGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgTG9jayBzY29wZUxvY2s7
CitzdGF0aWMgU1FMaXRlTG9ja1Njb3BlSW1wbCogc19pbXBsIHsgbnVsbHB0ciB9OworCit2b2lk
IFNRTGl0ZUxvY2tTY29wZTo6c2V0SW1wbChTUUxpdGVMb2NrU2NvcGVJbXBsKiBpbXBsKQorewor
ICAgIExvY2tlciBsb2NrZXIgeyBzY29wZUxvY2sgfTsKKyAgICBzX2ltcGwgPSBpbXBsOworfQor
Cit2b2lkIFNRTGl0ZUxvY2tTY29wZTo6bG9jaygpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlf
QU5BTFlTSVMKK3sKKyAgICBzY29wZUxvY2subG9jaygpOworfQorCit2b2lkIFNRTGl0ZUxvY2tT
Y29wZTo6dW5sb2NrKCkgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUworeworICAg
IHNjb3BlTG9jay51bmxvY2soKTsKK30KKworU1FMaXRlTG9ja1Njb3BlOjpTUUxpdGVMb2NrU2Nv
cGUoKQoreworICAgIHNjb3BlTG9jay5sb2NrKCk7CisgICAgaWYgKHNfaW1wbCkKKyAgICAgICAg
c19pbXBsLT5iZWdpbigpOworfQorCitTUUxpdGVMb2NrU2NvcGU6On5TUUxpdGVMb2NrU2NvcGUo
KQoreworICAgIGlmIChzX2ltcGwpCisgICAgICAgIHNfaW1wbC0+ZW5kKCk7CisgICAgc2NvcGVM
b2NrLnVubG9jaygpOworfQorCit2b2lkIFNRTGl0ZUxvY2tTY29wZTo6YWRkRGF0YWJhc2UoU1FM
aXRlRGF0YWJhc2UmIGRhdGFiYXNlKQoreworICAgIGlmIChzX2ltcGwpCisgICAgICAgIHNfaW1w
bC0+YWRkRGF0YWJhc2UoZGF0YWJhc2UpOworfQorCit2b2lkIFNRTGl0ZUxvY2tTY29wZTo6cmVt
b3ZlRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQoreworICAgIGlmIChzX2ltcGwp
CisgICAgICAgIHNfaW1wbC0+cmVtb3ZlRGF0YWJhc2UoZGF0YWJhc2UpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlTG9ja1Njb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlTG9j
a1Njb3BlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42MjIxZTZk
OWZiOGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlTG9ja1Njb3BlLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNRTGl0ZURhdGFiYXNlOworY2xhc3Mg
U1FMaXRlVHJhbnNhY3Rpb247CisKK2NsYXNzIFNRTGl0ZUxvY2tTY29wZUltcGwgeworcHVibGlj
OgorICAgIHZpcnR1YWwgflNRTGl0ZUxvY2tTY29wZUltcGwoKSA9IGRlZmF1bHQ7CisKKyAgICB2
aXJ0dWFsIHZvaWQgYmVnaW4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGVuZCgpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgYWRkRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHJlbW92ZURhdGFiYXNlKFNRTGl0ZURhdGFiYXNlJikgPSAwOworfTsKKworY2xh
c3MgU1FMaXRlTG9ja1Njb3BlIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
dm9pZCBzZXRJbXBsKFNRTGl0ZUxvY2tTY29wZUltcGwqKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgdm9pZCBsb2NrKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgdW5sb2Nr
KCk7CisKKyAgICBTUUxpdGVMb2NrU2NvcGUoKTsKKyAgICB+U1FMaXRlTG9ja1Njb3BlKCk7CisK
KyAgICB2b2lkIGFkZERhdGFiYXNlKFNRTGl0ZURhdGFiYXNlJik7CisgICAgdm9pZCByZW1vdmVE
YXRhYmFzZShTUUxpdGVEYXRhYmFzZSYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAppbmRl
eCBiMDg0OWU2ZjgwOGMuLmQ5YzRhMDFkNmUzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJTUUxpdGVTdGF0ZW1lbnQuaCIKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJT
UUxpdGVMb2NrU2NvcGUuaCIKICNpbmNsdWRlICJTUUxWYWx1ZS5oIgogI2luY2x1ZGUgPHNxbGl0
ZTMuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpAQCAtNjYsNiArNjcsMjIgQEAgaW50
IFNRTGl0ZVN0YXRlbWVudDo6c3RlcCgpCiB7CiAgICAgTG9ja2VyIGRhdGFiYXNlTG9jayB7IG1f
ZGF0YWJhc2UuZGF0YWJhc2VNdXRleCgpIH07CiAKKyAgICBpbnQgZXJyb3I7CisgICAgeworICAg
ICAgICBTUUxpdGVMb2NrU2NvcGUgbG9ja1Njb3BlOworICAgICAgICBlcnJvciA9IHNxbGl0ZTNf
c3RlcChtX3N0YXRlbWVudCk7CisgICAgfQorCisgICAgaWYgKGVycm9yICE9IFNRTElURV9ET05F
ICYmIGVycm9yICE9IFNRTElURV9ST1cpCisgICAgICAgIExPRyhTUUxEYXRhYmFzZSwgInNxbGl0
ZTNfc3RlcCBmYWlsZWQgKCVpKVxuRXJyb3IgLSAlcyIsIGVycm9yLCBzcWxpdGUzX2Vycm1zZyht
X2RhdGFiYXNlLnNxbGl0ZTNIYW5kbGUoKSkpOworCisgICAgcmV0dXJuIGVycm9yOworfQorCitp
bnQgU1FMaXRlU3RhdGVtZW50OjpzdGVwV2l0aG91dExvY2soKQoreworICAgIExvY2tlciBkYXRh
YmFzZUxvY2sgeyBtX2RhdGFiYXNlLmRhdGFiYXNlTXV0ZXgoKSB9OworCiAgICAgaW50IGVycm9y
ID0gc3FsaXRlM19zdGVwKG1fc3RhdGVtZW50KTsKICAgICBpZiAoZXJyb3IgIT0gU1FMSVRFX0RP
TkUgJiYgZXJyb3IgIT0gU1FMSVRFX1JPVykKICAgICAgICAgTE9HKFNRTERhdGFiYXNlLCAic3Fs
aXRlM19zdGVwIGZhaWxlZCAoJWkpXG5FcnJvciAtICVzIiwgZXJyb3IsIHNxbGl0ZTNfZXJybXNn
KG1fZGF0YWJhc2Uuc3FsaXRlM0hhbmRsZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9zcWwvU1FMaXRlU3RhdGVtZW50LmgKaW5kZXggY2YyZjEyMGYyZTc1Li44YWNmZDY5MmY1ZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmgKQEAg
LTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGJpbmRQ
YXJhbWV0ZXJDb3VudCgpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IHN0ZXAoKTsK
KyAgICBpbnQgc3RlcFdpdGhvdXRMb2NrKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IHJlc2V0
KCk7CiAgICAgCiAgICAgLy8gc3RlcHMgYW5kIGZpbmFsaXplcyB0aGUgcXVlcnkuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGFlYTJm
YWE1OGExNS4uOGNhYzY5NzYwNzQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkF1dGhl
bnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkF1eGlsaWFyeVByb2Nlc3NNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUFzc2VydGlv
blNjb3BlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWQuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5
TWVzc2FnZXMuaCIKICNpZiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQpA
QCAtMTU4LDkgKzE1OSw3IEBAIE5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2VzcyhBdXhpbGlh
cnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1lCiAjaWYgRU5BQkxFKENP
TlRFTlRfRVhURU5TSU9OUykKICAgICAsIG1fbmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIo
KnRoaXMpCiAjZW5kaWYKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICwgbV93ZWJTUUxp
dGVEYXRhYmFzZVRyYWNrZXIoW3RoaXNdKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpIHsgc2V0
SXNIb2xkaW5nTG9ja2VkRmlsZXMoaXNIb2xkaW5nTG9ja2VkRmlsZXMpOyB9KQotI2VuZGlmCisg
ICAgLCBtX2RhdGFiYXNlQXNzZXJ0aW9uU2NvcGUoIk5ldHdvcmsgUHJvY2VzcyBpcyBob2xkaW5n
IGxvY2tlZCBmaWxlcyIpCiAgICAgLCBtX21lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KGNyZWF0
ZU1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KCp0aGlzKSkKIHsKICAgICBOZXR3b3JrUHJvY2Vz
c1BsYXRmb3JtU3RyYXRlZ2llczo6aW5pdGlhbGl6ZSgpOwpAQCAtMjIxNSwxMiArMjIxNCw2IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25J
bW1pbmVudCwgQ29tcGxldGlvbkhhbmRsCiB7CiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3Bl
bnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCksIGlzU3VzcGVu
c2lvbkltbWluZW50PSVkIiwgdGhpcywgaXNTdXNwZW5zaW9uSW1taW5lbnQpOwogCi0jaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBmb3IgKGF1dG8mIHNlcnZlciA6IG1fd2ViSURCU2VydmVy
cy52YWx1ZXMoKSkKLSAgICAgICAgc2VydmVyLT5zdXNwZW5kKCk7Ci0gICAgbV9zaG91bGRTdXNw
ZW5kSURCU2VydmVyID0gdHJ1ZTsKLSNlbmRpZgotCiAgICAgbG93TWVtb3J5SGFuZGxlcihDcml0
aWNhbDo6WWVzKTsKIAogICAgIFJlZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNrQWdn
cmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFt0aGlzLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewpAQCAtMjIyOCwx
MCArMjIyMSw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoYm9vbCBp
c1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRsCiAgICAgICAgIFVOVVNFRF9WQVJJ
QUJMRSh0aGlzKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKLSAgICAK
LSNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6c3VzcGVuZChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwotI2Vu
ZGlmCiAKICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChhdXRvJiBuZXR3b3JrU2Vzc2lv
bikgewogICAgICAgICBwbGF0Zm9ybUZsdXNoQ29va2llcyhuZXR3b3JrU2Vzc2lvbi5zZXNzaW9u
SUQoKSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKQEAgLTIyNDcsNyArMjIzNiw3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1p
bmVudCwgQ29tcGxldGlvbkhhbmRsCiAgICAgfQogI2VuZGlmCiAKLSAgICBtX3N0b3JhZ2VNYW5h
Z2VyU2V0LT5zdXNwZW5kKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CisgICAgbV9kYXRhYmFz
ZUFzc2VydGlvblNjb3BlLmludGVycnVwdCgpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjph
cHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgpCkBAIC0yMjcwLDIyICsyMjU5LDEzIEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZSgpCiB7CiAgICAgZm9yIChhdXRvJiBjb25uZWN0aW9u
IDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMudmFsdWVzKCkpCiAgICAgICAgIGNvbm5lY3Rpb24t
PmVuZFN1c3BlbnNpb24oKTsKLQotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXN1bWUoKTsKLSNlbmRpZgog
ICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBmb3IgKGF1dG8mIHNlcnZlciA6
IG1fc3dTZXJ2ZXJzLnZhbHVlcygpKQogICAgICAgICBzZXJ2ZXItPmVuZFN1c3BlbnNpb24oKTsK
ICNlbmRpZgotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgZm9yIChhdXRvJiBzZXJ2ZXIg
OiBtX3dlYklEQlNlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgIHNlcnZlci0+cmVzdW1lKCk7Ci0g
ICAgbV9zaG91bGRTdXNwZW5kSURCU2VydmVyID0gZmFsc2U7Ci0jZW5kaWYKIAotICAgIG1fc3Rv
cmFnZU1hbmFnZXJTZXQtPnJlc3VtZSgpOworICAgIG1fZGF0YWJhc2VBc3NlcnRpb25TY29wZS5y
ZXN1bWUoKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlZmV0Y2hETlMoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAppbmRleCA3OTQ4MDk3YWEzZGMuLmMyMTc0NmU3ZDFkZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgIkF1eGlsaWFyeVByb2Nlc3MuaCIKICNpbmNsdWRlICJDYWNoZU1vZGVsLmgiCiAj
aW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGUu
aCIKICNpbmNsdWRlICJEb3dubG9hZElELmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgi
CiAjaW5jbHVkZSAiTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmgiCkBAIC01ODAsNiArNTgx
LDcgQEAgcHJpdmF0ZToKICAgICBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIgbV93ZWJTUUxpdGVE
YXRhYmFzZVRyYWNrZXI7CiAgICAgUmVmUHRyPFByb2Nlc3NBc3NlcnRpb24+IG1faG9sZGluZ0xv
Y2tlZEZpbGVBc3NlcnRpb247CiAjZW5kaWYKKyAgICBEYXRhYmFzZUFzc2VydGlvblNjb3BlIG1f
ZGF0YWJhc2VBc3NlcnRpb25TY29wZTsKIAogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFN0
cmluZz4gbV9pZGJEYXRhYmFzZVBhdGhzOwogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFJl
ZlB0cjxXZWJJREJTZXJ2ZXI+PiBtX3dlYklEQlNlcnZlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURh
dGFiYXNlLmNwcAppbmRleCA1NjlmZGIyZGY4ZjUuLjcwYzk0OWJiMDEwZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9j
YWxTdG9yYWdlRGF0YWJhc2UuY3BwCkBAIC03NSw3ICs3NSw3IEBAIGJvb2wgTG9jYWxTdG9yYWdl
RGF0YWJhc2U6Om9wZW5EYXRhYmFzZShTaG91bGRDcmVhdGVEYXRhYmFzZSBzaG91bGRDcmVhdGVE
YXRhYmFzCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIW1fZGF0YWJh
c2Uub3BlbihtX2RhdGFiYXNlUGF0aCkpIHsKKyAgICBpZiAoIW1fZGF0YWJhc2Uub3BlbihtX2Rh
dGFiYXNlUGF0aCwgU1FMaXRlRGF0YWJhc2U6Ok9wZW5Nb2RlOjpSZWFkV3JpdGVDcmVhdGUsIFNR
TGl0ZURhdGFiYXNlOjpJc0ludGVycnVwdGFibGU6OlllcykpIHsKICAgICAgICAgTE9HX0VSUk9S
KCJGYWlsZWQgdG8gb3BlbiBkYXRhYmFzZSBmaWxlICVzIGZvciBsb2NhbCBzdG9yYWdlIiwgbV9k
YXRhYmFzZVBhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJv
Y2Vzc0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9j
ZXNzSU9TLm1tCmluZGV4IDY0OTRiNWE3OThhZi4uNWQwMDEwZTAyYjI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQpA
QCAtMTAwLDIxICsxMDAsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclNlcnZpY2VXb3Jr
ZXJFbnRpdGxlbWVudE92ZXJyaWRlKENvbXBsZXRpb25IYW5kbGVyPHZvaQogCiAjZW5kaWYgLy8g
IVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRJc0hvbGRp
bmdMb2NrZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQotewotICAgIGlmICghaXNI
b2xkaW5nTG9ja2VkRmlsZXMpIHsKLSAgICAgICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlv
biA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobV9ob2xkaW5n
TG9ja2VkRmlsZUFzc2VydGlvbiAmJiBtX2hvbGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uLT5pc1Zh
bGlkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFdlIHN5bmNocm9ub3VzbHkgdGFrZSBh
IHByb2Nlc3MgYXNzZXJ0aW9uIHdoZW4gYmVnaW5uaW5nIGEgU1FMaXRlIHRyYW5zYWN0aW9uIHNv
IHRoYXQgd2UgZG9uJ3QgZ2V0IHN1c3BlbmRlZAotICAgIC8vIHdoaWxlIGhvbGRpbmcgYSBsb2Nr
ZWQgZmlsZS4gV2Ugd291bGQgZ2V0IGtpbGxlZCBpZiBzdXNwZW5kZWQgd2hpbGUgaG9sZGluZyBs
b2NrZWQgZmlsZXMuCi0gICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbiA9IFByb2Nlc3NB
c3NlcnRpb246OmNyZWF0ZShnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJOZXR3b3JrIFByb2Nlc3Mg
aXMgaG9sZGluZyBsb2NrZWQgZmlsZXMiX3MsIFByb2Nlc3NBc3NlcnRpb25UeXBlOjpGaW5pc2hU
YXNrVW5pbnRlcnJ1cHRhYmxlLCBQcm9jZXNzQXNzZXJ0aW9uOjpNb2RlOjpTeW5jKTsKLX0KLQog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRGF0YWJhc2VBc3NlcnRpb25TY29wZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhYmFzZUFzc2VydGlvblNjb3BlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjZkZTliYzRiMTQxOAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RhdGFiYXNlQXNzZXJ0aW9uU2NvcGUu
Y3BwCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGUuaCIKKworI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5oPgorI2luY2x1ZGUg
IlByb2Nlc3NBc3NlcnRpb24uaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK0RhdGFiYXNlQXNz
ZXJ0aW9uU2NvcGU6OkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGUoY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyKQorICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBtX2Fzc2VydGlvblJl
bGVhc2VUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZEYXRhYmFzZUFzc2VydGlvblNjb3Bl
Ojphc3NlcnRpb25SZWxlYXNlVGltZXJGaXJlZCkKK3sKKyAgICBXZWJDb3JlOjpTUUxpdGVMb2Nr
U2NvcGU6OnNldEltcGwodGhpcyk7Cit9CisKK0RhdGFiYXNlQXNzZXJ0aW9uU2NvcGU6On5EYXRh
YmFzZUFzc2VydGlvblNjb3BlKCkKK3sKKyAgICBXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6OnNl
dEltcGwobnVsbHB0cik7Cit9CisKK3ZvaWQgRGF0YWJhc2VBc3NlcnRpb25TY29wZTo6YmVnaW4o
KQoreworICAgIGlmIChtX2Fzc2VydGlvbiAmJiBtX2Fzc2VydGlvbi0+aXNWYWxpZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2Fzc2VydGlvbiA9IFByb2Nlc3NBc3NlcnRpb246OmNyZWF0
ZShnZXRDdXJyZW50UHJvY2Vzc0lEKCksIG1faWRlbnRpZmllciwgUHJvY2Vzc0Fzc2VydGlvblR5
cGU6OkZpbmlzaFRhc2tVbmludGVycnVwdGFibGUsIFByb2Nlc3NBc3NlcnRpb246Ok1vZGU6OlN5
bmMpOworfQorCit2b2lkIERhdGFiYXNlQXNzZXJ0aW9uU2NvcGU6OmVuZCgpCit7CisgICAgbV9h
c3NlcnRpb25SZWxlYXNlVGltZXIuc3RvcCgpOworICAgIAorICAgIGJvb2wgc2hvdWxkUmVsZWFz
ZUFzc2VydGlvbiA9IHRydWU7CisgICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6IG1fZGF0YWJhc2Vz
KSB7CisgICAgICAgIGlmIChkYXRhYmFzZS50cmFuc2FjdGlvbkluUHJvZ3Jlc3MoKSkKKyAgICAg
ICAgICAgIHNob3VsZFJlbGVhc2VBc3NlcnRpb24gPSBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAo
c2hvdWxkUmVsZWFzZUFzc2VydGlvbikKKyAgICAgICAgbV9hc3NlcnRpb25SZWxlYXNlVGltZXIu
c3RhcnRPbmVTaG90KDFfcyk7Cit9CisKK3ZvaWQgRGF0YWJhc2VBc3NlcnRpb25TY29wZTo6YWRk
RGF0YWJhc2UoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQoreworICAgIG1fZGF0
YWJhc2VzLmFkZCgmZGF0YWJhc2UpOworfQorCit2b2lkIERhdGFiYXNlQXNzZXJ0aW9uU2NvcGU6
OnJlbW92ZURhdGFiYXNlKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKK3sKKyAg
ICBtX2RhdGFiYXNlcy5yZW1vdmUoZGF0YWJhc2UpOworfQorCit2b2lkIERhdGFiYXNlQXNzZXJ0
aW9uU2NvcGU6OmludGVycnVwdCgpCit7CisgICAgaWYgKG1faW50ZXJydXB0ZWQpCisgICAgICAg
IHJldHVybjsKKyAgICBtX2ludGVycnVwdGVkID0gdHJ1ZTsKKworICAgIFdlYkNvcmU6OlNRTGl0
ZUxvY2tTY29wZTo6bG9jaygpOworICAgIGZvciAoYXV0byYgZGF0YWJhc2UgOiBtX2RhdGFiYXNl
cykKKyAgICAgICAgZGF0YWJhc2UuaW50ZXJydXB0KCk7CisKKyAgICBtX2Fzc2VydGlvblJlbGVh
c2VUaW1lci5zdG9wKCk7CisgICAgbV9hc3NlcnRpb24gPSBudWxscHRyOworfQorCit2b2lkIERh
dGFiYXNlQXNzZXJ0aW9uU2NvcGU6OnJlc3VtZSgpCit7CisgICAgaWYgKCFtX2ludGVycnVwdGVk
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2ludGVycnVwdGVkID0gZmFsc2U7CisgICAgV2Vi
Q29yZTo6U1FMaXRlTG9ja1Njb3BlOjp1bmxvY2soKTsKK30KKwordm9pZCBEYXRhYmFzZUFzc2Vy
dGlvblNjb3BlOjphc3NlcnRpb25SZWxlYXNlVGltZXJGaXJlZCgpCit7CisgICAgV2ViQ29yZTo6
U1FMaXRlTG9ja1Njb3BlOjpsb2NrKCk7CisgICAgbV9hc3NlcnRpb24gPSBudWxscHRyOworICAg
IFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZTo6dW5sb2NrKCk7Cit9CisKK30gLy8gbmFtZXBhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhYmFzZUFzc2VydGlv
blNjb3BlLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhYmFzZUFzc2VydGlvblNjb3BlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40ZWFlM2IyMjEyYjcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhYmFzZUFzc2VydGlvblNj
b3BlLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiV2ViQ29yZS9TUUxpdGVMb2NrU2NvcGUuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K2NsYXNzIFByb2Nlc3NBc3NlcnRpb247CisKK2NsYXNzIERhdGFiYXNlQXNzZXJ0aW9uU2NvcGUg
ZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U1FMaXRlTG9ja1Njb3BlSW1wbCB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoRGF0YWJhc2VBc3NlcnRpb25TY29wZSkKK3B1YmxpYzoKKyAgICBleHBs
aWNpdCBEYXRhYmFzZUFzc2VydGlvblNjb3BlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcik7Cisg
ICAgfkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGUoKTsKKworICAgIHZvaWQgYmVnaW4oKSBmaW5hbDsK
KyAgICB2b2lkIGVuZCgpIGZpbmFsOworICAgIHZvaWQgYWRkRGF0YWJhc2UoV2ViQ29yZTo6U1FM
aXRlRGF0YWJhc2UmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZURhdGFiYXNlKFdlYkNvcmU6OlNR
TGl0ZURhdGFiYXNlJikgZmluYWw7CisKKyAgICB2b2lkIGludGVycnVwdCgpOworICAgIHZvaWQg
cmVzdW1lKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBhc3NlcnRpb25SZWxlYXNlVGltZXJGaXJl
ZCgpOworCisgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKKyAgICBSZWZQdHI8UHJvY2Vzc0Fzc2Vy
dGlvbj4gbV9hc3NlcnRpb247CisgICAgUnVuTG9vcDo6VGltZXI8RGF0YWJhc2VBc3NlcnRpb25T
Y29wZT4gbV9hc3NlcnRpb25SZWxlYXNlVGltZXI7CisgICAgV2Vha0hhc2hTZXQ8V2ViQ29yZTo6
U1FMaXRlRGF0YWJhc2U+IG1fZGF0YWJhc2VzOworICAgIGJvb2wgbV9pbnRlcnJ1cHRlZCB7IGZh
bHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVNhbXBsZUN1cnNvci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVD
dXJzb3IuY3BwCmluZGV4IGZiZTQyMjczMDZmOC4uYWMxNDY4Y2MzNDI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFTYW1wbGVDdXJz
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9N
ZWRpYVNhbXBsZUN1cnNvci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoV0VCTV9G
T1JNQVRfUkVBREVSKQogCiAjaW5jbHVkZSAiTWVkaWFUcmFja1JlYWRlci5oIgorI2luY2x1ZGUg
PFdlYkNvcmUvTG9nZ2luZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTYW1wbGUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NhbXBsZU1hcC5oPgogI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24v
TWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CkBAIC0zOTgsNyArMzk5LDcgQEAgT1NTdGF0dXMgTWVk
aWFTYW1wbGVDdXJzb3I6OmdldFBsYXlhYmxlSG9yaXpvbihDTVRpbWUqIHBsYXlhYmxlSG9yaXpv
bikgY29uc3QKIAogV1RGTG9nQ2hhbm5lbCYgTWVkaWFTYW1wbGVDdXJzb3I6OmxvZ0NoYW5uZWwo
KSBjb25zdAogewotICAgIHJldHVybiBMb2dNZWRpYTsKKyAgICByZXR1cm4gV2ViQ29yZTo6TG9n
TWVkaWE7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhVHJhY2tSZWFkZXIuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhVHJhY2tSZWFk
ZXIuY3BwCmluZGV4IDFkYzFjYWUwMzAwOC4uMWQ5ZWY4ZjdiODQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFUcmFja1JlYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlh
VHJhY2tSZWFkZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgT1NTdGF0dXMgTWVkaWFUcmFja1Jl
YWRlcjo6Y3JlYXRlQ3Vyc29yQXRMYXN0U2FtcGxlSW5EZWNvZGVPcmRlcihNVFBsdWdpblNhbXBs
ZUMKIAogV1RGTG9nQ2hhbm5lbCYgTWVkaWFUcmFja1JlYWRlcjo6bG9nQ2hhbm5lbCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkxvZ01lZGlhOworICAgIHJldHVybiBMb2dNZWRpYTsK
IH0KIAogY29uc3Qgdm9pZCogTWVkaWFUcmFja1JlYWRlcjo6bmV4dFNhbXBsZUN1cnNvckxvZ0lk
ZW50aWZpZXIodWludDY0X3QgY3Vyc29ySUQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5k
ZXggNGNmZDA5ZmFhZDA2Li5mMWViYmRhMzhmYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAg
LTE0MSw2ICsxNDEsNyBAQCBTaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRv
clByb3h5TWFjLm1tCiAKIFNoYXJlZC9BUElXZWJBcmNoaXZlLm1tCiBTaGFyZWQvQVBJV2ViQXJj
aGl2ZVJlc291cmNlLm1tCitTaGFyZWQvRGF0YWJhc2VBc3NlcnRpb25TY29wZS5jcHAKIFNoYXJl
ZC9Eb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tCiBTaGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZvcm1h
dGlvbi5jcHAKIFNoYXJlZC9WaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWVlNjY1
YTU1OGI5Li5hNWI0Y2UwMWRkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQ4NCw2ICsxNDg0LDcgQEAKIAkJOTM2OEVFREUyMzAz
QTkwMjAwQkRCMTFBIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNjhFRURDMjMwM0E4
RDgwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07
CiAJCTkzNjhFRURGMjMwM0E5RUQwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzY4RUVE
RDIzMDNBOEQ4MDBCREIxMUEgLyogU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oICovOyB9Owog
CQk5MzZCMDU5ODIzMDM5MDk3MDAyRkMwNkIgLyogU3RvcmFnZU1hbmFnZXJTZXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNkIwNTk1MjMwMzkwMEIw
MDJGQzA2QiAvKiBTdG9yYWdlTWFuYWdlclNldC5oICovOyB9OworCQk5MzcwNkVGRjI2OUNDOTlB
MDAyREExMjcgLyogRGF0YWJhc2VBc3NlcnRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOEYwRjUyNjk4QjNBQjAwQTlGMzMxIC8qIERh
dGFiYXNlQXNzZXJ0aW9uU2NvcGUuaCAqLzsgfTsKIAkJOTM3MzVFQkIxQzkyOTg2MzAwMzM2RkE3
IC8qIFdLUHJldmlld0FjdGlvbkl0ZW1JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM3MzVFQkExQzkyOTg2MzAwMzM2RkE3IC8qIFdLUHJl
dmlld0FjdGlvbkl0ZW1JbnRlcm5hbC5oICovOyB9OwogCQk5MzkxMDc0RjFCRjZCQzY1MDA4QzE3
QUQgLyogV0tQcmV2aWV3RWxlbWVudEluZm9JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MTA3NEUxQkY2QkM2NTAwOEMxN0FEIC8qIFdL
UHJldmlld0VsZW1lbnRJbmZvSW50ZXJuYWwuaCAqLzsgfTsKIAkJOTM5MUYyQ0IxMjFCNjdBRDAw
RUJGN0U4IC8qIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTFGMjgzMTIxQjM4RjUwMEVCRjdFOCAvKiBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggKi87IH07CkBAIC00OTQwLDYgKzQ5NDEsOCBAQAog
CQk5M0U2QTRFRDFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tIaXRUZXN0UmVzdWx0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzRjU0OUIzMUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90
Q29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1NuYXBz
aG90Q29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y1NDlC
NTFFMzE3NERBMDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24ubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNGOEYwRjQyNjk4QjNBQjAwQTlGMzMx
IC8qIERhdGFiYXNlQXNzZXJ0aW9uU2NvcGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YWJh
c2VBc3NlcnRpb25TY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRjhG
MEY1MjY5OEIzQUIwMEE5RjMzMSAvKiBEYXRhYmFzZUFzc2VydGlvblNjb3BlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERhdGFiYXNlQXNzZXJ0aW9uU2NvcGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTUwRjI4N0UyNTI0MTRFOTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS01vdXNlRGV2aWNlT2JzZXJ2ZXIu
aDsgcGF0aCA9IGlvcy9XS01vdXNlRGV2aWNlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTUwRjI4N0YyNTI0MTRFQTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNl
cnZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLTW91c2VE
ZXZpY2VPYnNlcnZlci5tbTsgcGF0aCA9IGlvcy9XS01vdXNlRGV2aWNlT2JzZXJ2ZXIubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1OTM2NzVEMjUyRTVFMzAwMEQzRjBBMCAvKiBX
S1N0eWx1c0RldmljZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFdLU3R5bHVzRGV2aWNlT2JzZXJ2ZXIuaDsgcGF0aCA9IGlvcy9XS1N0eWx1c0RldmljZU9ic2Vy
dmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NzQzLDYgKzY3NDYsOCBAQAog
CQkJCTJEN0ZEMTkwMjIzQzczMEYwMDc4ODdGMSAvKiBEb2N1bWVudEVkaXRpbmdDb250ZXh0Lmgg
Ki8sCiAJCQkJMkQ3RkQxOTEyMjNDNzMxMDAwNzg4N0YxIC8qIERvY3VtZW50RWRpdGluZ0NvbnRl
eHQubW0gKi8sCiAJCQkJQzUxNzM4ODAxMkRGOEY0RjAwRUUzRjQ3IC8qIERyYWdDb250cm9sbGVy
QWN0aW9uLmggKi8sCisJCQkJOTNGOEYwRjQyNjk4QjNBQjAwQTlGMzMxIC8qIERhdGFiYXNlQXNz
ZXJ0aW9uU2NvcGUuY3BwICovLAorCQkJCTkzRjhGMEY1MjY5OEIzQUIwMEE5RjMzMSAvKiBEYXRh
YmFzZUFzc2VydGlvblNjb3BlLmggKi8sCiAJCQkJMEZCNjU5MjIxMjA4QjREQjAwNDQ4MTZDIC8q
IERyYXdpbmdBcmVhSW5mby5oICovLAogCQkJCTJEOUNENUVFMjFGQTc1RUUwMDI5QUNGQSAvKiBF
ZGl0aW5nUmFuZ2UuY3BwICovLAogCQkJCUUxMDVGRTUzMThEN0I5REUwMDhGNTdBOCAvKiBFZGl0
aW5nUmFuZ2UuaCAqLywKQEAgLTEyMzk3LDYgKzEyNDAyLDcgQEAKIAkJCQk0NEM1MTg0NDI2NkJF
OEM0MDA2REQ1MjIgLyogVENDU29mdExpbmsuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMUEwQkQ2
MUE0OEU2QzYwMDU0RUY3NCAvKiBUQ0NTUEkuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQTQxN0NC
MTJDMDBDQ0EwMDJCRTY3QiAvKiBUZXh0Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTM3
MDZFRkYyNjlDQzk5QTAwMkRBMTI3IC8qIERhdGFiYXNlQXNzZXJ0aW9uU2NvcGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUzQ0ZCQkM4MjIyNEQxQjUwMDI2NjU0NiAvKiBUZXh0Q2hlY2tlckNvbXBs
ZXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNUU0REE0MTJEM0JEM0QwMDk5QTJCQiAvKiBU
ZXh0Q2hlY2tlclN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTFBMEJENzFBNDhFNkM2MDA1
NEVGNzQgLyogVGV4dElucHV0U1BJLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IGVlYTAwMDQ0YmFmYi4uNTg4
OGUxY2Q0MzAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFn
ZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJh
Y2tlci5jcHAKQEAgLTM4NSwxMyArMzg1LDYgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6ZGVsZXRl
QWxsT3JpZ2lucygpCiAgICAgfSk7CiB9CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotc3Rh
dGljIHZvaWQgdHJ1bmNhdGVEYXRhYmFzZUZpbGUoU1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQot
ewotICAgIHNxbGl0ZTNfZmlsZV9jb250cm9sKGRhdGFiYXNlLnNxbGl0ZTNIYW5kbGUoKSwgMCwg
U1FMSVRFX1RSVU5DQVRFX0RBVEFCQVNFLCAwKTsKLX0KLSNlbmRpZgotCiB2b2lkIFN0b3JhZ2VU
cmFja2VyOjpzeW5jRGVsZXRlQWxsT3JpZ2lucygpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CkBAIC00MjksNyArNDIyLDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0
ZUFsbE9yaWdpbnMoKQogCiAgICAgaWYgKG1fZGF0YWJhc2UuaXNPcGVuKCkpIHsKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgICAgICB0cnVuY2F0ZURhdGFiYXNlRmlsZShtX2RhdGFiYXNl
KTsKKyAgICAgICAgU1FMaXRlRmlsZVN5c3RlbTo6dHJ1bmNhdGVEYXRhYmFzZUZpbGUobV9kYXRh
YmFzZSk7CiAjZW5kaWYKICAgICAgICAgbV9kYXRhYmFzZS5jbG9zZSgpOwogICAgIH0KQEAgLTU0
Myw3ICs1MzYsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlT3JpZ2luKGNvbnN0
IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKIAogICAgIGlmIChzaG91bGREZWxldGVUcmFja2Vy
RmlsZXMpIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICB0cnVuY2F0ZURhdGFi
YXNlRmlsZShtX2RhdGFiYXNlKTsKKyAgICAgICAgU1FMaXRlRmlsZVN5c3RlbTo6dHJ1bmNhdGVE
YXRhYmFzZUZpbGUobV9kYXRhYmFzZSk7CiAjZW5kaWYKICAgICAgICAgbV9kYXRhYmFzZS5jbG9z
ZSgpOwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433372</attachid>
            <date>2021-07-12 16:56:40 -0700</date>
            <delta_ts>2021-07-12 17:14:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227887-20210712165639.patch</filename>
            <type>text/plain</type>
            <size>42871</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5ODU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQ1ZGU3M2RkZDIzMzUx
MmQ3ZmU0NzIxZTMzNWU4YTgyYWE5MmVhZC4uNDkzZDQzMTQ2OGYxNjdlZWYzNDM3NGFjZTIzMjUw
ZmM5MTAzMzhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTA3LTEyICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgZmlsZSBsb2NrcyBz
eW5jaHJvbm91c2x5IG9uIFByZXBhcmVUb1N1c3BlbmQgbWVzc2FnZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3ODg3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvdGVjdCBTUUxpdGUgQVBJIGNhbGxz
IHRoYXQgbWF5IGFjcXVpcmUgZGF0YWJhc2UgZmlsZSBsb2NrIHdpdGggU1FMaXRlTG9ja1Njb3Bl
LiBBIGdsb2JhbCBsb2NrIGlzIGhlbGQgYXQgd2hlbiAKKyAgICAgICAgU1FMaXRlTG9ja1Njb3Bl
IGlzIGNyZWF0ZWQgYW5kIHJlbGVhc2VkIHdoZW4gU1FMaXRlTG9ja1Njb3BlIGlzIGRlc3Ryb3ll
ZC4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6Om9wZW4pOiBBZGQgYSBuZXcg
cGFyYW1ldGVyIGludGVycnVwdGFibGUgdG8gaW5kaWNhdGUgaWYgdGhlIGRhdGFiYXNlIHdhbnQg
aXRzCisgICAgICAgIHRyYW5zYWN0aW9uIHRvIGJlIGFib3J0ZWQgb3IgY29tbWl0dGVkIG9uIGlu
dGVycnVwdC4KKyAgICAgICAgKFdlYkNvcmU6OndhbEF1dG9tYXRpY1RydW5jYXRpb25Ib29rKToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjp1c2VXQUxKb3VybmFsTW9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2U6OmludGVycnVwdCk6IFJlbGVhc2UgZmlsZSBsb2NrIGJ5IGludGVy
cnVwdGluZyBsb25nIHF1ZXJ5IGFuZCBlbmRpbmcgdHJhbnNhY3Rpb24uCisgICAgICAgICogcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0
ZUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6dHJ1
bmNhdGVEYXRhYmFzZUZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2Nv
cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZTo6c2V0SW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6OlNRTGl0ZUxvY2tTY29wZSk6
CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6On5TUUxpdGVMb2NrU2NvcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMaXRlTG9ja1Njb3BlOjphZGREYXRhYmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6OnJlbW92ZURhdGFiYXNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9zcWwvU1FMaXRlTG9ja1Njb3BlLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVt
ZW50OjpzdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudDo6c3RlcFdpdGhv
dXRMb2NrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50Lmg6CisKIDIw
MjEtMDctMTIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dCBjYW4ndCBkcmF3IHRleHQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
MWI3OGY2OGY1MjM4OTQ2NWE1YjFjMzI1ZTU3ZGI2MjlhYjU1ZTJhZC4uOGExMGU3N2YwMDAyNTA0
ZDcyOGQzOGEyYWVhYzc4ZGMzYTliYTA5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAy
MS0wNy0xMiAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9w
IGZpbGUgbG9ja3Mgc3luY2hyb25vdXNseSBvbiBQcmVwYXJlVG9TdXNwZW5kIG1lc3NhZ2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzg4NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gbmV0d29y
ayBwcm9jZXNzIGlzIGFib3V0IHRvIHN1c3BlbmQsIGl0IHNob3VsZCByZWxlYXNlIGFsbCBkYXRh
YmFzZSBmaWxlIGxvY2tzIGFzIHNvb24gYXMgcG9zc2libGUuIE91cgorICAgICAgICBjdXJyZW50
IGltcGxlbWVudGF0aW9uIGlzIEluZGV4ZWREQiByZWxlYXNlcyBsb2NrcyBieSBhYm9ydGluZyB0
cmFuc2FjdGlvbnMgc3luY2hyb25vdXNseSBvbiBQcmVwYXJlVG9TdXNwZW5kLAorICAgICAgICBh
bmQgTG9jYWxTdG9yYWdlIGFuZCBJVFAgc2NoZWR1bGVzIHN1c3BlbmQgdGFzayB0byBiYWNrZ3Jv
dW5kIHRocmVhZHMuIEl0J3MgcG9zc2libGUgdGhhdCBzdXNwZW5kIHRhc2sKKyAgICAgICAgZG9l
cyBub3QgZ2V0IHRvIHJ1biBiZWZvcmUgbmV0d29yayBwcm9jZXNzIGdldHMgc3VzcGVuZGVkIGFj
Y29yZGluZyB0byBjcmFzaCBsb2dzLCBzbyBsZXQncyBtYWtlIHRoZSBiZWhhdmlvcgorICAgICAg
ICBjb25zaXN0ZW50IGFjcm9zcyBhbGwgZGF0YWJhc2VzLCBhbmQgbWFrZSBzdXJlIG5ldHdvcmsg
cHJvY2VzcyByZWxlYXNlcyBsb2NrcyBxdWlja2x5IG9uIFByZXBhcmVUb1N1c3BlbmQuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnJlc3VtZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURh
dGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2U6Om9wZW5E
YXRhYmFzZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9T
Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0SXNIb2xkaW5nTG9ja2Vk
RmlsZXMpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9EYXRhYmFzZUFzc2VydGlvblNjb3Bl
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGU6OkRh
dGFiYXNlQXNzZXJ0aW9uU2NvcGUpOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZUFzc2VydGlv
blNjb3BlOjp+RGF0YWJhc2VBc3NlcnRpb25TY29wZSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFi
YXNlQXNzZXJ0aW9uU2NvcGU6OmJlZ2luKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VBc3Nl
cnRpb25TY29wZTo6ZW5kKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VBc3NlcnRpb25TY29w
ZTo6YWRkRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZUFzc2VydGlvblNjb3Bl
OjpyZW1vdmVEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uU2Nv
cGU6OmludGVycnVwdCk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGU6
OnJlc3VtZSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGU6OmFzc2Vy
dGlvblJlbGVhc2VUaW1lckZpcmVkKToKKyAgICAgICAgKiBTaGFyZWQvRGF0YWJhc2VBc3NlcnRp
b25TY29wZS5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVy
L01lZGlhRm9ybWF0UmVhZGVyLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0
UmVhZGVyL01lZGlhVHJhY2tSZWFkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVRyYWNr
UmVhZGVyOjpsb2dDaGFubmVsIGNvbnN0KToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIxLTA3LTEy
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cmV2ZXJ0aW5nIHIyNzk4MzUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDYyM2U3YjY1YmIyNzZm
MjE5YWU3NzM2MmNmOGZkMmU0YTUyMzUwYzIuLmU5YzlmZjQyOTBlMTgxZDU1OGM3OGI5ZjQ2ZDU1
MDQxYzAwNzBhNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEt
MDctMTIgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBm
aWxlIGxvY2tzIHN5bmNocm9ub3VzbHkgb24gUHJlcGFyZVRvU3VzcGVuZCBtZXNzYWdlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc4ODcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3Rv
cmFnZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6c3luY0Rl
bGV0ZUFsbE9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6c3luY0Rl
bGV0ZU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OnRydW5jYXRlRGF0YWJhc2VGaWxlKTogRGVs
ZXRlZC4KKwogMjAyMS0wNi0yMSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAog
ICAgICAgICBNYWtlIEluUHJvY2Vzc0lEQlNlcnZlciB1c2UgV29ya1F1ZXVlIGluc3RlYWQgb2Yg
VGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDNjYmZhNWFiNWE0YmY1ODQ0OTZhYjYxMzNjZTMwOGQ0
OTkyM2JhMDIuLjVmMWQ0NGUxZDM5NWY4NDg3NjQ0ZTQ2MTQ4YTc4ZDRhZWRjMTg1M2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CkBAIC0yMTg4LDYgKzIxODgsNyBAQCBwbGF0Zm9ybS9zcWwvU1FMaXRlQXV0aG9y
aXplci5jcHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKIHBsYXRmb3JtL3NxbC9T
UUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5j
cHAKK3BsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2NvcGUuY3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRl
U3RhdGVtZW50LmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3Bl
LmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGUyYTJmOThhNWIx
YWE2Y2JlOWY3NzA2YzUxMDAxN2M1OGY0NGU0Y2IuLmRjMjczZDAzMWMyY2M2YjBjOGNkOGYyN2M3
NDhhOWI0MGExZDFmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTI5MzEsNiArMjkzMSw3IEBACiAJCTkzRjZCODFGMjU2N0Ew
OEMwMEEwODQ4OCAvKiBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y2QjgxQzI1Njc5Rjcw
MDBBMDg0ODggLyogU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjZCODIyMjU2N0E2
NTYwMEEwODQ4OCAvKiBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjZCODFCMjU2NzlGNkYwMEEw
ODQ4OCAvKiBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Y2RjFFRTEyN0Y3MEIxMDA1NUNC
MDYgLyogV2ViR0xDb250ZXh0RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzRjZGMUVCMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRF
dmVudC5oICovOyB9OworCQk5M0Y4RjBGMzI2OTgyNjEzMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Nj
b3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y4
RjBGMTI2OTgyNjEyMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGOTI1NDMwRjdFRjVCODAwN0Uz
N0M5IC8qIFJhZGlvQnV0dG9uR3JvdXBzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0Y5MjU0MTBGN0VGNUI4MDA3RTM3QzkgLyogUmFkaW9CdXR0b25H
cm91cHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5M0Y5QjZFMTBCQTBGQjcyMDA4NTQwNjQgLyogSlNDb21tZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y5QjZERjBCQTBGQjcyMDA4NTQwNjQg
LyogSlNDb21tZW50LmggKi87IH07CiAJCTkzRjlCN0ExMEJBNjAzMjYwMDg1NDA2NCAvKiBKU0NE
QVRBU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNGOUI3OUYwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmggKi87IH07CkBA
IC0xMTgzNCw2ICsxMTgzNSw4IEBACiAJCTkzRjhCMzA1MEEzMDBGRTEwMEY2MUFCOCAvKiBDb2Rl
R2VuZXJhdG9yLnBtICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IENvZGVHZW5l
cmF0b3IucG07IHBhdGggPSBzY3JpcHRzL0NvZGVHZW5lcmF0b3IucG07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzRjhCMzA2MEEzMDBGRUEwMEY2MUFCOCAvKiBDb2RlR2VuZXJhdG9y
SlMucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gQ29kZUdlbmVyYXRvckpT
LnBtOyBwYXRoID0gc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHdyYXBzTGluZXMgPSAwOyB9OwogCQk5M0Y4QjMwNzBBMzAwRkVBMDBGNjFBQjggLyog
Z2VuZXJhdGUtYmluZGluZ3MucGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0g
ImdlbmVyYXRlLWJpbmRpbmdzLnBsIjsgcGF0aCA9ICJzY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdz
LnBsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNGOEYwRUYyNjk4MjYxMjAwQTlG
MzMxIC8qIFNRTGl0ZUxvY2tTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTUUxpdGVMb2NrU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5M0Y4RjBGMTI2OTgyNjEyMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTGl0ZUxvY2tTY29wZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5M0Y5MjU0MTBGN0VGNUI4MDA3RTM3QzkgLyogUmFkaW9CdXR0b25H
cm91cHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFkaW9CdXR0b25Hcm91
cHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGOTI1NDIwRjdFRjVCODAwN0Uz
N0M5IC8qIFJhZGlvQnV0dG9uR3JvdXBzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJhZGlvQnV0dG9uR3JvdXBzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNGOUI2REUwQkEwRkI3MjAwODU0MDY0IC8qIEpTQ29tbWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NvbW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTg1MzUsNiArMTg1MzgsOCBAQAogCQkJCTdFNDc0RTFCMTI0OTRE
QzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCAqLywKIAkJCQlCNUE2
ODQyMzBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5jcHAgKi8sCiAJCQkJQjVB
Njg0MjEwRkZBQkU5ODAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uaCAqLywKKwkJCQk5M0Y4
RjBFRjI2OTgyNjEyMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmNwcCAqLywKKwkJCQk5M0Y4
RjBGMTI2OTgyNjEyMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmggKi8sCiAJCQkJMUEyMjQ2
NDUwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZVN0YXRlbWVudC5jcHAgKi8sCiAJCQkJMUEyMjQ2
NDYwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZVN0YXRlbWVudC5oICovLAogCQkJCUVCRTVCMjI3
MjQ1QTI5Q0YwMDNBNUE4OCAvKiBTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZS5jcHAgKi8s
CkBAIC0zNTM4NSw2ICszNTM5MCw3IEBACiAJCQkJNTEyQkRCNEIxQzQ1NkZGQTAwNjQ5NERGIC8q
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExRUMxMzAxQzUw
QUJGNTAwMzJGOTgzIC8qIFNRTGl0ZUlEQkN1cnNvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEx
RUMxMkMxQzUwQUJCRjAwMzJGOTgzIC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5M0Y4RjBGMzI2OTgyNjEzMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTIyNDY0QzBDQzk4RERCMDBDMDUyNDAgLyogU1FMaXRlU3Rh
dGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFQkU1QjIyNjI0NUEyNkVGMDAzQTVBODggLyog
U1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjI0
NjRFMENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAppbmRl
eCBhMTExMDI1NjgxZTQ2OTMxMjNmYmM4Y2I0OTBhODM3MGRiMzljMTgzLi5iNTgzYzY2MDk0ZWQ2
MDVhNTkwMjNjYzUzZDk2OGYzNWMyYTg0YWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJN
ZW1vcnlSZWxlYXNlLmgiCiAjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5j
bHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIlNRTGl0ZUxvY2tTY29wZS5oIgog
I2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUg
PHNxbGl0ZTMuaD4KQEAgLTg4LDcgKzg5LDcgQEAgU1FMaXRlRGF0YWJhc2U6On5TUUxpdGVEYXRh
YmFzZSgpCiAgICAgY2xvc2UoKTsKIH0KIAotYm9vbCBTUUxpdGVEYXRhYmFzZTo6b3Blbihjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBPcGVuTW9kZSBvcGVuTW9kZSkKK2Jvb2wgU1FMaXRlRGF0YWJh
c2U6Om9wZW4oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgT3Blbk1vZGUgb3Blbk1vZGUsIElzSW50
ZXJydXB0YWJsZSBpbnRlcnJ1cHRhYmxlKQogewogICAgIGluaXRpYWxpemVTUUxpdGVJZk5lY2Vz
c2FyeSgpOwogCkBAIC0xMTQsNyArMTE1LDE0IEBAIGJvb2wgU1FMaXRlRGF0YWJhc2U6Om9wZW4o
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgT3Blbk1vZGUgb3Blbk1vZGUpCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogCi0gICAgICAgIG1fb3BlbkVycm9yID0gc3FsaXRlM19vcGVuX3Yy
KEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlbmFtZSkuZGF0YSgpLCAm
bV9kYiwgZmxhZ3MsIG51bGxwdHIpOworICAgICAgICB7CisgICAgICAgICAgICBTUUxpdGVMb2Nr
U2NvcGUgbG9ja1Njb3BlOworICAgICAgICAgICAgbV9vcGVuRXJyb3IgPSBzcWxpdGUzX29wZW5f
djIoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVuYW1lKS5kYXRhKCks
ICZtX2RiLCBmbGFncywgbnVsbHB0cik7CisgICAgICAgICAgICBtX2ludGVycnVwdGFibGUgPSBp
bnRlcnJ1cHRhYmxlOworICAgICAgICAgICAgaWYgKG1fb3BlbkVycm9yID09IFNRTElURV9PSykK
KyAgICAgICAgICAgICAgICBsb2NrU2NvcGUuYWRkRGF0YWJhc2UoKnRoaXMpOworICAgICAgICB9
CisKICAgICAgICAgaWYgKG1fb3BlbkVycm9yICE9IFNRTElURV9PSykgewogICAgICAgICAgICAg
bV9vcGVuRXJyb3JNZXNzYWdlID0gbV9kYiA/IHNxbGl0ZTNfZXJybXNnKG1fZGIpIDogInNxbGl0
ZV9vcGVuIHJldHVybmVkIG51bGwiOwogICAgICAgICAgICAgTE9HX0VSUk9SKCJTUUxpdGUgZGF0
YWJhc2UgZmFpbGVkIHRvIGxvYWQgZnJvbSAlc1xuQ2F1c2UgLSAlcyIsIGZpbGVuYW1lLmFzY2lp
KCkuZGF0YSgpLApAQCAtMTY3LDcgKzE3NSwxMSBAQCBzdGF0aWMgaW50IHdhbEF1dG9tYXRpY1Ry
dW5jYXRpb25Ib29rKHZvaWQqIGNvbnRleHQsIHNxbGl0ZTMqIGRiLCBjb25zdCBjaGFyKiBkYgog
CiAgICAgaWYgKHdhbFBhZ2VDb3VudCA+PSBjaGVja3BvaW50VGhyZXNob2xkKSB7CiAgICAgICAg
IGludCBuZXdXYWxQYWdlQ291bnQgPSAwOwotICAgICAgICBpbnQgcmVzdWx0ID0gc3FsaXRlM193
YWxfY2hlY2twb2ludF92MihkYiwgZGJOYW1lLCBTUUxJVEVfQ0hFQ0tQT0lOVF9UUlVOQ0FURSwg
Jm5ld1dhbFBhZ2VDb3VudCwgbnVsbHB0cik7CisgICAgICAgIGludCByZXN1bHQ7CisgICAgICAg
IHsKKyAgICAgICAgICAgIFNRTGl0ZUxvY2tTY29wZSBsb2NrU2NvcGU7CisgICAgICAgICAgICBy
ZXN1bHQgPSBzcWxpdGUzX3dhbF9jaGVja3BvaW50X3YyKGRiLCBkYk5hbWUsIFNRTElURV9DSEVD
S1BPSU5UX1RSVU5DQVRFLCAmbmV3V2FsUGFnZUNvdW50LCBudWxscHRyKTsKKyAgICAgICAgfQog
CiAjaWYgTE9HX0RJU0FCTEVECiAgICAgICAgIFVOVVNFRF9WQVJJQUJMRShyZXN1bHQpOwpAQCAt
MTk0LDcgKzIwNiw2IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmVuYWJsZUF1dG9tYXRpY1dBTFRy
dW5jYXRpb24oKQogCiB2b2lkIFNRTGl0ZURhdGFiYXNlOjp1c2VXQUxKb3VybmFsTW9kZSgpCiB7
Ci0gICAgbV91c2VXQUwgPSB0cnVlOwogICAgIHsKICAgICAgICAgYXV0byB3YWxTdGF0ZW1lbnQg
PSBwcmVwYXJlU3RhdGVtZW50KCJQUkFHTUEgam91cm5hbF9tb2RlPVdBTDsiX3MpOwogICAgICAg
ICBpZiAod2FsU3RhdGVtZW50ICYmIHdhbFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cp
IHsKQEAgLTIzMiwxMiArMjQzLDExIEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmNsb3NlKFNob3Vs
ZFNldEVycm9yU3RhdGUgc2hvdWxkU2V0RXJyb3JTdGF0ZSkKICAgICAgICAgfQogCiAgICAgICAg
IGludCBjbG9zZVJlc3VsdDsKLSAgICAgICAgaWYgKG1fdXNlV0FMKSB7Ci0gICAgICAgICAgICAv
LyBDbG9zZSBpbiB0aGUgc2NvcGUgb2YgY291bnRlciBhcyBpdCBtYXkgYWNxdWlyZSBsb2NrIG9m
IGRhdGFiYXNlLgotICAgICAgICAgICAgU1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0Nv
dW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwotICAgICAgICAgICAgY2xvc2VSZXN1bHQgPSBzcWxp
dGUzX2Nsb3NlKGRiKTsKLSAgICAgICAgfSBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIFNR
TGl0ZUxvY2tTY29wZSBsb2NrU2NvcGU7CiAgICAgICAgICAgICBjbG9zZVJlc3VsdCA9IHNxbGl0
ZTNfY2xvc2UoZGIpOworICAgICAgICAgICAgbG9ja1Njb3BlLnJlbW92ZURhdGFiYXNlKCp0aGlz
KTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmIChjbG9zZVJlc3VsdCAhPSBTUUxJVEVfT0spCiAg
ICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTUUxEYXRhYmFzZSwgIlNRTGl0ZURhdGFiYXNl
OjpjbG9zZTogRmFpbGVkIHRvIGNsb3NlIGRhdGFiYXNlICglZCkgLSAle3B1YmxpY31zIiwgY2xv
c2VSZXN1bHQsIGxhc3RFcnJvck1zZygpKTsKQEAgLTQ1OCw4ICs0NjgsMTUgQEAgaW50IFNRTGl0
ZURhdGFiYXNlOjpydW5JbmNyZW1lbnRhbFZhY3V1bUNvbW1hbmQoKQogdm9pZCBTUUxpdGVEYXRh
YmFzZTo6aW50ZXJydXB0KCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhYmFzZUNsb3Np
bmdNdXRleCB9OwotICAgIGlmIChtX2RiKQotICAgICAgICBzcWxpdGUzX2ludGVycnVwdChtX2Ri
KTsKKyAgICAKKyAgICBpZiAoIW1fZGIpCisgICAgICAgIHJldHVybjsKKworICAgIHNxbGl0ZTNf
aW50ZXJydXB0KG1fZGIpOworCisgICAgQVNDSUlMaXRlcmFsIHF1ZXJ5U3RyaW5nID0gbV9pbnRl
cnJ1cHRhYmxlID09IElzSW50ZXJydXB0YWJsZTo6WWVzID8gIkNPTU1JVCJfcyA6ICJST0xMQkFD
SyJfczsKKyAgICBpZiAoYXV0byBxdWVyeSA9IHByZXBhcmVTdGF0ZW1lbnQocXVlcnlTdHJpbmcp
KQorICAgICAgICBxdWVyeS0+c3RlcFdpdGhvdXRMb2NrKCk7CiB9CiAKIGludDY0X3QgU1FMaXRl
RGF0YWJhc2U6Omxhc3RJbnNlcnRSb3dJRCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZS5oCmluZGV4IDRiMjJjOGZlNjhlMzVmYmRkMDk3MjU4NjhjNGM5YTBl
NWNhYjJjZjAuLjA5Y2YwZmFmMGEzNjY2MzUyZGRhY2Y0ZGJmMWMyODU4OWVhMmEwMzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCkBAIC01Nyw3ICs1
Nyw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB+U1FMaXRlRGF0YWJhc2UoKTsKIAog
ICAgIGVudW0gY2xhc3MgT3Blbk1vZGUgeyBSZWFkT25seSwgUmVhZFdyaXRlLCBSZWFkV3JpdGVD
cmVhdGUgfTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZW4oY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgT3Blbk1vZGUgPSBPcGVuTW9kZTo6UmVhZFdyaXRlQ3JlYXRlKTsKKyAgICBlbnVtIGNs
YXNzIElzSW50ZXJydXB0YWJsZSA6IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBvcGVuKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIE9wZW5Nb2RlID0gT3Blbk1vZGU6
OlJlYWRXcml0ZUNyZWF0ZSwgSXNJbnRlcnJ1cHRhYmxlID0gSXNJbnRlcnJ1cHRhYmxlOjpObyk7
CiAgICAgYm9vbCBpc09wZW4oKSBjb25zdCB7IHJldHVybiBtX2RiOyB9CiAgICAgZW51bSBjbGFz
cyBTaG91bGRTZXRFcnJvclN0YXRlIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNsb3NlKFNob3VsZFNldEVycm9yU3RhdGUgPSBTaG91bGRTZXRFcnJvclN0YXRl
OjpZZXMpOwpAQCAtMTgxLDggKzE4Miw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjphdG9taWM8dW5z
aWduZWQ+IG1fc3RhdGVtZW50Q291bnQgeyAwIH07CiAjZW5kaWYKIAotICAgIGJvb2wgbV91c2VX
QUwgeyBmYWxzZSB9OwotCiAgICAgTG9jayBtX2F1dGhvcml6ZXJMb2NrOwogICAgIFJlZlB0cjxE
YXRhYmFzZUF1dGhvcml6ZXI+IG1fYXV0aG9yaXplciBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fYXV0
aG9yaXplckxvY2spOwogCkBAIC0xOTMsNiArMTkyLDggQEAgcHJpdmF0ZToKIAogICAgIGludCBt
X29wZW5FcnJvciB7IFNRTElURV9FUlJPUiB9OwogICAgIENTdHJpbmcgbV9vcGVuRXJyb3JNZXNz
YWdlOworCisgICAgSXNJbnRlcnJ1cHRhYmxlIG1faW50ZXJydXB0YWJsZSB7IElzSW50ZXJydXB0
YWJsZTo6Tm8gfTsKIH07CiAKIGlubGluZSB2b2lkIFNRTGl0ZURhdGFiYXNlOjppbmNyZW1lbnRT
dGF0ZW1lbnRDb3VudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
RmlsZVN5c3RlbS5jcHAKaW5kZXggNzZlNDVhZjM0ZWQwOTNmZDlmMjc2ZGQ1ZDRiOTIyYTQxNjM0
ZDlhZS4uOGI5YjMyMWRjNjQ4MTAwZmNiZjRjNWMyMmY1MGYxNGIxNWEzMTg4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcApAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIlNRTGl0ZUZpbGVTeXN0ZW0uaCIKIAogI2luY2x1ZGUgIlNR
TGl0ZURhdGFiYXNlLmgiCisjaW5jbHVkZSAiU1FMaXRlTG9ja1Njb3BlLmgiCiAjaW5jbHVkZSAi
U1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4K
ICNpbmNsdWRlIDxzcWxpdGUzLmg+CkBAIC05NCw2ICs5NSw3IEBAIGJvb2wgU1FMaXRlRmlsZVN5
c3RlbTo6ZGVsZXRlRGF0YWJhc2VGaWxlKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6dHJ1bmNhdGVEYXRhYmFz
ZUZpbGUoc3FsaXRlMyogZGF0YWJhc2UpCiB7CisgICAgU1FMaXRlTG9ja1Njb3BlIGxvY2tTY29w
ZTsKICAgICByZXR1cm4gc3FsaXRlM19maWxlX2NvbnRyb2woZGF0YWJhc2UsIDAsIFNRTElURV9U
UlVOQ0FURV9EQVRBQkFTRSwgMCkgPT0gU1FMSVRFX09LOwogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlTG9ja1Njb3BlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2NvcGUuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4
NWI3OTMyZjBkM2IxYjllZjMyNGM5ZWRjMWQ0NzdlNDM1N2ZkN2MKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlTG9ja1Njb3BlLmNwcApAQCAtMCww
ICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNR
TGl0ZUxvY2tTY29wZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBMb2NrIHNj
b3BlTG9jazsKK3N0YXRpYyBTUUxpdGVMb2NrU2NvcGVJbXBsKiBzX2ltcGwgeyBudWxscHRyIH07
CisKK3ZvaWQgU1FMaXRlTG9ja1Njb3BlOjpzZXRJbXBsKFNRTGl0ZUxvY2tTY29wZUltcGwqIGlt
cGwpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjb3BlTG9jayB9OworICAgIHNfaW1wbCA9IGlt
cGw7Cit9CisKK3ZvaWQgU1FMaXRlTG9ja1Njb3BlOjpsb2NrKCkgV1RGX0lHTk9SRVNfVEhSRUFE
X1NBRkVUWV9BTkFMWVNJUworeworICAgIHNjb3BlTG9jay5sb2NrKCk7Cit9CisKK3ZvaWQgU1FM
aXRlTG9ja1Njb3BlOjp1bmxvY2soKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lT
Cit7CisgICAgc2NvcGVMb2NrLnVubG9jaygpOworfQorCitTUUxpdGVMb2NrU2NvcGU6OlNRTGl0
ZUxvY2tTY29wZSgpCit7CisgICAgc2NvcGVMb2NrLmxvY2soKTsKKyAgICBpZiAoc19pbXBsKQor
ICAgICAgICBzX2ltcGwtPmJlZ2luKCk7Cit9CisKK1NRTGl0ZUxvY2tTY29wZTo6flNRTGl0ZUxv
Y2tTY29wZSgpCit7CisgICAgaWYgKHNfaW1wbCkKKyAgICAgICAgc19pbXBsLT5lbmQoKTsKKyAg
ICBzY29wZUxvY2sudW5sb2NrKCk7Cit9CisKK3ZvaWQgU1FMaXRlTG9ja1Njb3BlOjphZGREYXRh
YmFzZShTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UpCit7CisgICAgaWYgKHNfaW1wbCkKKyAgICAg
ICAgc19pbXBsLT5hZGREYXRhYmFzZShkYXRhYmFzZSk7Cit9CisKK3ZvaWQgU1FMaXRlTG9ja1Nj
b3BlOjpyZW1vdmVEYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UpCit7CisgICAgaWYg
KHNfaW1wbCkKKyAgICAgICAgc19pbXBsLT5yZW1vdmVEYXRhYmFzZShkYXRhYmFzZSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVMb2NrU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVMb2NrU2NvcGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MjIxZTZkOWZiOGNhYzEyNWIwMTQ3ODgxMTZm
NDE0ZDAyZTBlM2UyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZUxvY2tTY29wZS5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTUUxpdGVEYXRhYmFzZTsK
K2NsYXNzIFNRTGl0ZVRyYW5zYWN0aW9uOworCitjbGFzcyBTUUxpdGVMb2NrU2NvcGVJbXBsIHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TUUxpdGVMb2NrU2NvcGVJbXBsKCkgPSBkZWZhdWx0Owor
CisgICAgdmlydHVhbCB2b2lkIGJlZ2luKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmQoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZERhdGFiYXNlKFNRTGl0ZURhdGFiYXNlJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYpID0gMDsKK307
CisKK2NsYXNzIFNRTGl0ZUxvY2tTY29wZSB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHZvaWQgc2V0SW1wbChTUUxpdGVMb2NrU2NvcGVJbXBsKik7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIHZvaWQgbG9jaygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lk
IHVubG9jaygpOworCisgICAgU1FMaXRlTG9ja1Njb3BlKCk7CisgICAgflNRTGl0ZUxvY2tTY29w
ZSgpOworCisgICAgdm9pZCBhZGREYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYpOworICAgIHZvaWQg
cmVtb3ZlRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5j
cHAKaW5kZXggYjA4NDllNmY4MDhjYTM4MGIwOGM2Mjc0YjA0ZDE0OWNjMDMzYzA4Ny4uYjM3MWNk
YjRlNWIyZjJkYzBkNmFiNmFiN2VjNDU3MWY1ZTI2YmRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTUUxWYWx1ZS5oIgorI2luY2x1ZGUgIlNR
TGl0ZUxvY2tTY29wZS5oIgogI2luY2x1ZGUgPHNxbGl0ZTMuaD4KICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CkBAIC02Niw2ICs2NywyMiBAQCBp
bnQgU1FMaXRlU3RhdGVtZW50OjpzdGVwKCkKIHsKICAgICBMb2NrZXIgZGF0YWJhc2VMb2NrIHsg
bV9kYXRhYmFzZS5kYXRhYmFzZU11dGV4KCkgfTsKIAorICAgIGludCBlcnJvcjsKKyAgICB7Cisg
ICAgICAgIFNRTGl0ZUxvY2tTY29wZSBsb2NrU2NvcGU7CisgICAgICAgIGVycm9yID0gc3FsaXRl
M19zdGVwKG1fc3RhdGVtZW50KTsKKyAgICB9CisKKyAgICBpZiAoZXJyb3IgIT0gU1FMSVRFX0RP
TkUgJiYgZXJyb3IgIT0gU1FMSVRFX1JPVykKKyAgICAgICAgTE9HKFNRTERhdGFiYXNlLCAic3Fs
aXRlM19zdGVwIGZhaWxlZCAoJWkpXG5FcnJvciAtICVzIiwgZXJyb3IsIHNxbGl0ZTNfZXJybXNn
KG1fZGF0YWJhc2Uuc3FsaXRlM0hhbmRsZSgpKSk7CisKKyAgICByZXR1cm4gZXJyb3I7Cit9CisK
K2ludCBTUUxpdGVTdGF0ZW1lbnQ6OnN0ZXBXaXRob3V0TG9jaygpCit7CisgICAgTG9ja2VyIGRh
dGFiYXNlTG9jayB7IG1fZGF0YWJhc2UuZGF0YWJhc2VNdXRleCgpIH07CisKICAgICBpbnQgZXJy
b3IgPSBzcWxpdGUzX3N0ZXAobV9zdGF0ZW1lbnQpOwogICAgIGlmIChlcnJvciAhPSBTUUxJVEVf
RE9ORSAmJiBlcnJvciAhPSBTUUxJVEVfUk9XKQogICAgICAgICBMT0coU1FMRGF0YWJhc2UsICJz
cWxpdGUzX3N0ZXAgZmFpbGVkICglaSlcbkVycm9yIC0gJXMiLCBlcnJvciwgc3FsaXRlM19lcnJt
c2cobV9kYXRhYmFzZS5zcWxpdGUzSGFuZGxlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaAppbmRleCBjZjJmMTIwZjJlNzUzYWQ4ZDEzMTcwZmQw
ZDg3MDAxNjlkZWJjMTU1Li44YWNmZDY5MmY1ZWQzZTI4NDg3OTdjNWNhMWM5ODBiODk4ZTQxYmNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oCkBA
IC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBiaW5k
UGFyYW1ldGVyQ291bnQoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGludCBzdGVwKCk7
CisgICAgaW50IHN0ZXBXaXRob3V0TG9jaygpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCByZXNl
dCgpOwogICAgIAogICAgIC8vIHN0ZXBzIGFuZCBmaW5hbGl6ZXMgdGhlIHF1ZXJ5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBhZWEy
ZmFhNThhMTU4MWYwMGJmNTZiY2VlZWQxNzdiNDRhNDM2MDk2Li44Y2FjNjk3NjA3NDNlMjFkODcy
OWQyYjY1Yzk4NTc0Y2Y0MDBmYTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkF1dGhl
bnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkF1eGlsaWFyeVByb2Nlc3NNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUFzc2VydGlv
blNjb3BlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWQuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5
TWVzc2FnZXMuaCIKICNpZiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQpA
QCAtMTU4LDkgKzE1OSw3IEBAIE5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2VzcyhBdXhpbGlh
cnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1lCiAjaWYgRU5BQkxFKENP
TlRFTlRfRVhURU5TSU9OUykKICAgICAsIG1fbmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIo
KnRoaXMpCiAjZW5kaWYKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICwgbV93ZWJTUUxp
dGVEYXRhYmFzZVRyYWNrZXIoW3RoaXNdKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpIHsgc2V0
SXNIb2xkaW5nTG9ja2VkRmlsZXMoaXNIb2xkaW5nTG9ja2VkRmlsZXMpOyB9KQotI2VuZGlmCisg
ICAgLCBtX2RhdGFiYXNlQXNzZXJ0aW9uU2NvcGUoIk5ldHdvcmsgUHJvY2VzcyBpcyBob2xkaW5n
IGxvY2tlZCBmaWxlcyIpCiAgICAgLCBtX21lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KGNyZWF0
ZU1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KCp0aGlzKSkKIHsKICAgICBOZXR3b3JrUHJvY2Vz
c1BsYXRmb3JtU3RyYXRlZ2llczo6aW5pdGlhbGl6ZSgpOwpAQCAtMjIxNSwxMiArMjIxNCw2IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25J
bW1pbmVudCwgQ29tcGxldGlvbkhhbmRsCiB7CiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3Bl
bnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCksIGlzU3VzcGVu
c2lvbkltbWluZW50PSVkIiwgdGhpcywgaXNTdXNwZW5zaW9uSW1taW5lbnQpOwogCi0jaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBmb3IgKGF1dG8mIHNlcnZlciA6IG1fd2ViSURCU2VydmVy
cy52YWx1ZXMoKSkKLSAgICAgICAgc2VydmVyLT5zdXNwZW5kKCk7Ci0gICAgbV9zaG91bGRTdXNw
ZW5kSURCU2VydmVyID0gdHJ1ZTsKLSNlbmRpZgotCiAgICAgbG93TWVtb3J5SGFuZGxlcihDcml0
aWNhbDo6WWVzKTsKIAogICAgIFJlZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNrQWdn
cmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFt0aGlzLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewpAQCAtMjIyOCwx
MCArMjIyMSw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoYm9vbCBp
c1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRsCiAgICAgICAgIFVOVVNFRF9WQVJJ
QUJMRSh0aGlzKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKLSAgICAK
LSNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6c3VzcGVuZChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwotI2Vu
ZGlmCiAKICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChhdXRvJiBuZXR3b3JrU2Vzc2lv
bikgewogICAgICAgICBwbGF0Zm9ybUZsdXNoQ29va2llcyhuZXR3b3JrU2Vzc2lvbi5zZXNzaW9u
SUQoKSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKQEAgLTIyNDcsNyArMjIzNiw3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1p
bmVudCwgQ29tcGxldGlvbkhhbmRsCiAgICAgfQogI2VuZGlmCiAKLSAgICBtX3N0b3JhZ2VNYW5h
Z2VyU2V0LT5zdXNwZW5kKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CisgICAgbV9kYXRhYmFz
ZUFzc2VydGlvblNjb3BlLmludGVycnVwdCgpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjph
cHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgpCkBAIC0yMjcwLDIyICsyMjU5LDEzIEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZSgpCiB7CiAgICAgZm9yIChhdXRvJiBjb25uZWN0aW9u
IDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMudmFsdWVzKCkpCiAgICAgICAgIGNvbm5lY3Rpb24t
PmVuZFN1c3BlbnNpb24oKTsKLQotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXN1bWUoKTsKLSNlbmRpZgog
ICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBmb3IgKGF1dG8mIHNlcnZlciA6
IG1fc3dTZXJ2ZXJzLnZhbHVlcygpKQogICAgICAgICBzZXJ2ZXItPmVuZFN1c3BlbnNpb24oKTsK
ICNlbmRpZgotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgZm9yIChhdXRvJiBzZXJ2ZXIg
OiBtX3dlYklEQlNlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgIHNlcnZlci0+cmVzdW1lKCk7Ci0g
ICAgbV9zaG91bGRTdXNwZW5kSURCU2VydmVyID0gZmFsc2U7Ci0jZW5kaWYKIAotICAgIG1fc3Rv
cmFnZU1hbmFnZXJTZXQtPnJlc3VtZSgpOworICAgIG1fZGF0YWJhc2VBc3NlcnRpb25TY29wZS5y
ZXN1bWUoKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlZmV0Y2hETlMoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAppbmRleCA3OTQ4MDk3YWEzZGMzODZhMmZkNDFmYWQ2MjNiM2NlY2RmOGQ3ZTRhLi42
NWI2Yzk1ODU3ZjMxZTYxNjFhNDU4MmEzMDg3OTAyYmE3MGJjNTFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vzcy5oIgogI2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIKICNp
bmNsdWRlICJDYWxsYmFja0lELmgiCisjaW5jbHVkZSAiRGF0YWJhc2VBc3NlcnRpb25TY29wZS5o
IgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIK
ICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCIKQEAgLTQ5OSwxMCArNTAw
LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKFBBTDo6U2Vz
c2lvbklELCBib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3RyaW5nJiYgc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCBz
ZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sKTsKLSNlbmRpZgotCiAgICAgdm9pZCBmaXJlUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRUaW1lckltbWVkaWF0ZWx5KFBBTDo6U2Vzc2lvbklEKTsKIAog
ICAgIGNsYXNzIFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyIHsKQEAgLTU4MCw2ICs1NzcsNyBA
QCBwcml2YXRlOgogICAgIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlciBtX3dlYlNRTGl0ZURhdGFi
YXNlVHJhY2tlcjsKICAgICBSZWZQdHI8UHJvY2Vzc0Fzc2VydGlvbj4gbV9ob2xkaW5nTG9ja2Vk
RmlsZUFzc2VydGlvbjsKICNlbmRpZgorICAgIERhdGFiYXNlQXNzZXJ0aW9uU2NvcGUgbV9kYXRh
YmFzZUFzc2VydGlvblNjb3BlOwogCiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgU3RyaW5n
PiBtX2lkYkRhdGFiYXNlUGF0aHM7CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmUHRy
PFdlYklEQlNlcnZlcj4+IG1fd2ViSURCU2VydmVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJh
c2UuY3BwCmluZGV4IDU2OWZkYjJkZjhmNTNlYWJjZjE5MTgxMjQzMGFiNmZkYTY4MDI1NDAuLjcw
Yzk0OWJiMDEwZjczMjExNzYyNzhhMjQ2NWEwMDMyMGQ5ZjYzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3Rv
cmFnZURhdGFiYXNlLmNwcApAQCAtNzUsNyArNzUsNyBAQCBib29sIExvY2FsU3RvcmFnZURhdGFi
YXNlOjpvcGVuRGF0YWJhc2UoU2hvdWxkQ3JlYXRlRGF0YWJhc2Ugc2hvdWxkQ3JlYXRlRGF0YWJh
cwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFtX2RhdGFiYXNlLm9w
ZW4obV9kYXRhYmFzZVBhdGgpKSB7CisgICAgaWYgKCFtX2RhdGFiYXNlLm9wZW4obV9kYXRhYmFz
ZVBhdGgsIFNRTGl0ZURhdGFiYXNlOjpPcGVuTW9kZTo6UmVhZFdyaXRlQ3JlYXRlLCBTUUxpdGVE
YXRhYmFzZTo6SXNJbnRlcnJ1cHRhYmxlOjpZZXMpKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFp
bGVkIHRvIG9wZW4gZGF0YWJhc2UgZmlsZSAlcyBmb3IgbG9jYWwgc3RvcmFnZSIsIG1fZGF0YWJh
c2VQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lP
Uy5tbQppbmRleCA2NDk0YjVhNzk4YWY2OTA4MWVhM2Q3YTVhM2NjNTVlYzgyN2U0YmY0Li41ZDAw
MTBlMDJiMjQwMWU4NGY0NTU0Nzg5MmExNjkzMDQ0OTM1MzFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQpAQCAtMTAw
LDIxICsxMDAsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclNlcnZpY2VXb3JrZXJFbnRp
dGxlbWVudE92ZXJyaWRlKENvbXBsZXRpb25IYW5kbGVyPHZvaQogCiAjZW5kaWYgLy8gIVBMQVRG
T1JNKE1BQ0NBVEFMWVNUKQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRJc0hvbGRpbmdMb2Nr
ZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQotewotICAgIGlmICghaXNIb2xkaW5n
TG9ja2VkRmlsZXMpIHsKLSAgICAgICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbiA9IG51
bGxwdHI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobV9ob2xkaW5nTG9ja2Vk
RmlsZUFzc2VydGlvbiAmJiBtX2hvbGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uLT5pc1ZhbGlkKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFdlIHN5bmNocm9ub3VzbHkgdGFrZSBhIHByb2Nl
c3MgYXNzZXJ0aW9uIHdoZW4gYmVnaW5uaW5nIGEgU1FMaXRlIHRyYW5zYWN0aW9uIHNvIHRoYXQg
d2UgZG9uJ3QgZ2V0IHN1c3BlbmRlZAotICAgIC8vIHdoaWxlIGhvbGRpbmcgYSBsb2NrZWQgZmls
ZS4gV2Ugd291bGQgZ2V0IGtpbGxlZCBpZiBzdXNwZW5kZWQgd2hpbGUgaG9sZGluZyBsb2NrZWQg
ZmlsZXMuCi0gICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbiA9IFByb2Nlc3NBc3NlcnRp
b246OmNyZWF0ZShnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJOZXR3b3JrIFByb2Nlc3MgaXMgaG9s
ZGluZyBsb2NrZWQgZmlsZXMiX3MsIFByb2Nlc3NBc3NlcnRpb25UeXBlOjpGaW5pc2hUYXNrVW5p
bnRlcnJ1cHRhYmxlLCBQcm9jZXNzQXNzZXJ0aW9uOjpNb2RlOjpTeW5jKTsKLX0KLQogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRGF0YWJhc2VBc3NlcnRpb25TY29wZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhYmFzZUFzc2VydGlvblNjb3BlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yYTNlNDMwZjg3YjEyYTY2YmNjN2ZhOWNmYmE0MDcyYWQxZjMwNjkwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRGF0YWJhc2VBc3NlcnRpb25TY29wZS5jcHAKQEAg
LTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiRGF0YWJhc2VBc3NlcnRpb25TY29wZS5oIgorCisjaW5jbHVkZSAiUHJvY2Vzc0Fzc2VydGlv
bi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2UuaD4KKyNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworRGF0YWJhc2VBc3NlcnRpb25T
Y29wZTo6RGF0YWJhc2VBc3NlcnRpb25TY29wZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCisg
ICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fYXNzZXJ0aW9uUmVsZWFzZVRp
bWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGU6OmFzc2Vy
dGlvblJlbGVhc2VUaW1lckZpcmVkKQoreworICAgIFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZTo6
c2V0SW1wbCh0aGlzKTsKK30KKworRGF0YWJhc2VBc3NlcnRpb25TY29wZTo6fkRhdGFiYXNlQXNz
ZXJ0aW9uU2NvcGUoKQoreworICAgIFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZTo6c2V0SW1wbChu
dWxscHRyKTsKK30KKwordm9pZCBEYXRhYmFzZUFzc2VydGlvblNjb3BlOjpiZWdpbigpCit7Cisg
ICAgaWYgKG1fYXNzZXJ0aW9uICYmIG1fYXNzZXJ0aW9uLT5pc1ZhbGlkKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fYXNzZXJ0aW9uID0gUHJvY2Vzc0Fzc2VydGlvbjo6Y3JlYXRlKGdldEN1
cnJlbnRQcm9jZXNzSUQoKSwgbV9pZGVudGlmaWVyLCBQcm9jZXNzQXNzZXJ0aW9uVHlwZTo6Rmlu
aXNoVGFza1VuaW50ZXJydXB0YWJsZSwgUHJvY2Vzc0Fzc2VydGlvbjo6TW9kZTo6U3luYyk7Cit9
CisKK3ZvaWQgRGF0YWJhc2VBc3NlcnRpb25TY29wZTo6ZW5kKCkKK3sKKyAgICBtX2Fzc2VydGlv
blJlbGVhc2VUaW1lci5zdG9wKCk7CisgICAgCisgICAgYm9vbCBzaG91bGRSZWxlYXNlQXNzZXJ0
aW9uID0gdHJ1ZTsKKyAgICBmb3IgKGF1dG8mIGRhdGFiYXNlIDogbV9kYXRhYmFzZXMpIHsKKyAg
ICAgICAgaWYgKGRhdGFiYXNlLnRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKQorICAgICAgICAgICAg
c2hvdWxkUmVsZWFzZUFzc2VydGlvbiA9IGZhbHNlOworICAgIH0KKworICAgIGlmIChzaG91bGRS
ZWxlYXNlQXNzZXJ0aW9uKQorICAgICAgICBtX2Fzc2VydGlvblJlbGVhc2VUaW1lci5zdGFydE9u
ZVNob3QoMV9zKTsKK30KKwordm9pZCBEYXRhYmFzZUFzc2VydGlvblNjb3BlOjphZGREYXRhYmFz
ZShXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UpCit7CisgICAgbV9kYXRhYmFzZXMu
YWRkKCZkYXRhYmFzZSk7Cit9CisKK3ZvaWQgRGF0YWJhc2VBc3NlcnRpb25TY29wZTo6cmVtb3Zl
RGF0YWJhc2UoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQoreworICAgIG1fZGF0
YWJhc2VzLnJlbW92ZShkYXRhYmFzZSk7Cit9CisKK3ZvaWQgRGF0YWJhc2VBc3NlcnRpb25TY29w
ZTo6aW50ZXJydXB0KCkKK3sKKyAgICBpZiAobV9pbnRlcnJ1cHRlZCkKKyAgICAgICAgcmV0dXJu
OworICAgIG1faW50ZXJydXB0ZWQgPSB0cnVlOworCisgICAgV2ViQ29yZTo6U1FMaXRlTG9ja1Nj
b3BlOjpsb2NrKCk7CisgICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6IG1fZGF0YWJhc2VzKQorICAg
ICAgICBkYXRhYmFzZS5pbnRlcnJ1cHQoKTsKKworICAgIG1fYXNzZXJ0aW9uUmVsZWFzZVRpbWVy
LnN0b3AoKTsKKyAgICBtX2Fzc2VydGlvbiA9IG51bGxwdHI7Cit9CisKK3ZvaWQgRGF0YWJhc2VB
c3NlcnRpb25TY29wZTo6cmVzdW1lKCkKK3sKKyAgICBpZiAoIW1faW50ZXJydXB0ZWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1faW50ZXJydXB0ZWQgPSBmYWxzZTsKKyAgICBXZWJDb3JlOjpT
UUxpdGVMb2NrU2NvcGU6OnVubG9jaygpOworfQorCit2b2lkIERhdGFiYXNlQXNzZXJ0aW9uU2Nv
cGU6OmFzc2VydGlvblJlbGVhc2VUaW1lckZpcmVkKCkKK3sKKyAgICBXZWJDb3JlOjpTUUxpdGVM
b2NrU2NvcGU6OmxvY2soKTsKKyAgICBtX2Fzc2VydGlvbiA9IG51bGxwdHI7CisgICAgV2ViQ29y
ZTo6U1FMaXRlTG9ja1Njb3BlOjp1bmxvY2soKTsKK30KKworfSAvLyBuYW1lcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RhdGFiYXNlQXNzZXJ0aW9uU2NvcGUu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RhdGFiYXNlQXNzZXJ0aW9uU2NvcGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZWFlM2IyMjEyYjdjZmE4ZDhlODE2NjE3MWUxNTYwYjlmNzliODVkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRGF0YWJhc2VBc3NlcnRpb25TY29wZS5oCkBA
IC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIldl
YkNvcmUvU1FMaXRlTG9ja1Njb3BlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQ
cm9jZXNzQXNzZXJ0aW9uOworCitjbGFzcyBEYXRhYmFzZUFzc2VydGlvblNjb3BlIGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZUltcGwgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKERhdGFiYXNlQXNzZXJ0aW9uU2NvcGUpCitwdWJsaWM6CisgICAgZXhwbGljaXQgRGF0
YWJhc2VBc3NlcnRpb25TY29wZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpOworICAgIH5EYXRh
YmFzZUFzc2VydGlvblNjb3BlKCk7CisKKyAgICB2b2lkIGJlZ2luKCkgZmluYWw7CisgICAgdm9p
ZCBlbmQoKSBmaW5hbDsKKyAgICB2b2lkIGFkZERhdGFiYXNlKFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVEYXRhYmFzZShXZWJDb3JlOjpTUUxpdGVEYXRh
YmFzZSYpIGZpbmFsOworCisgICAgdm9pZCBpbnRlcnJ1cHQoKTsKKyAgICB2b2lkIHJlc3VtZSgp
OworCitwcml2YXRlOgorICAgIHZvaWQgYXNzZXJ0aW9uUmVsZWFzZVRpbWVyRmlyZWQoKTsKKwor
ICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CisgICAgUmVmUHRyPFByb2Nlc3NBc3NlcnRpb24+IG1f
YXNzZXJ0aW9uOworICAgIFJ1bkxvb3A6OlRpbWVyPERhdGFiYXNlQXNzZXJ0aW9uU2NvcGU+IG1f
YXNzZXJ0aW9uUmVsZWFzZVRpbWVyOworICAgIFdlYWtIYXNoU2V0PFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlPiBtX2RhdGFiYXNlczsKKyAgICBib29sIG1faW50ZXJydXB0ZWQgeyBmYWxzZSB9Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNw
cAppbmRleCBlYmY3MjEyNDIzZTljZDVlMTdhNDI3NWI1OWFhYjhkMTk4YzY5NWI4Li4wM2UxOTll
MTFiZjJhMDgxZDkwNGMyNmFmOWU4NmM4ODk2YmU3NGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1h
dFJlYWRlci5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NvdXJjZUJ1
ZmZlclBhcnNlcldlYk0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZpZGVvVHJhY2tQcml2YXRlLmg+
CiAjaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KKyNp
bmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KICNpbmNsdWRlIDx3dGYvTG9nZ2Vy
SGVscGVyLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFUcmFja1JlYWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFUcmFj
a1JlYWRlci5jcHAKaW5kZXggMWRjMWNhZTAzMDA4ZTBhMjBhNDRhYzczZDFhYTM3MjUzNTdmMjBm
YS4uMWQ5ZWY4ZjdiODQ1OWZiMDc0MDI3YTU3MDU4MmMwYTAxNWIyNDgzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhVHJhY2tSZWFk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9N
ZWRpYVRyYWNrUmVhZGVyLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIE9TU3RhdHVzIE1lZGlhVHJh
Y2tSZWFkZXI6OmNyZWF0ZUN1cnNvckF0TGFzdFNhbXBsZUluRGVjb2RlT3JkZXIoTVRQbHVnaW5T
YW1wbGVDCiAKIFdURkxvZ0NoYW5uZWwmIE1lZGlhVHJhY2tSZWFkZXI6OmxvZ0NoYW5uZWwoKSBj
b25zdAogewotICAgIHJldHVybiBXZWJDb3JlOjpMb2dNZWRpYTsKKyAgICByZXR1cm4gTG9nTWVk
aWE7CiB9CiAKIGNvbnN0IHZvaWQqIE1lZGlhVHJhY2tSZWFkZXI6Om5leHRTYW1wbGVDdXJzb3JM
b2dJZGVudGlmaWVyKHVpbnQ2NF90IGN1cnNvcklEKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CmluZGV4IDk5ZTk2NmM5MTM2YzRkZjkyMmY4OWYzZDFkMDM5N2E3ZmNhMTFmMTIuLmVkOTE3ZGZh
NTRiOGZiOGM2MzQ0NTExMzAxM2ZmNTAwNzVjOTExZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
QEAgLTE0MSw2ICsxNDEsNyBAQCBTaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5TWFjLm1tCiAKIFNoYXJlZC9BUElXZWJBcmNoaXZlLm1tCiBTaGFyZWQvQVBJV2Vi
QXJjaGl2ZVJlc291cmNlLm1tCitTaGFyZWQvRGF0YWJhc2VBc3NlcnRpb25TY29wZS5jcHAKIFNo
YXJlZC9Eb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tCiBTaGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZv
cm1hdGlvbi5jcHAKIFNoYXJlZC9WaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjQ1
NGZkNDUxNDRiZjBkMDY5ZDYwZTY2ZTMwY2NiYTk1NWM1NDk1MS4uZDlhNTNkOTAxMDFhYjVkMGYz
MGJkODgwZWRmMDA4NDBjYWFlYTkxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDc4LDYgKzE0NzgsNyBAQAogCQk5MzY4RUVERTIz
MDNBOTAyMDBCREIxMUEgLyogU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM2OEVFREMyMzAz
QThEODAwQkRCMTFBIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsg
fTsKIAkJOTM2OEVFREYyMzAzQTlFRDAwQkRCMTFBIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNjhF
RUREMjMwM0E4RDgwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmggKi87IH07
CiAJCTkzNkIwNTk4MjMwMzkwOTcwMDJGQzA2QiAvKiBTdG9yYWdlTWFuYWdlclNldC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM2QjA1OTUyMzAzOTAw
QjAwMkZDMDZCIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0LmggKi87IH07CisJCTkzNzA2RUZGMjY5Q0M5
OUEwMDJEQTEyNyAvKiBEYXRhYmFzZUFzc2VydGlvblNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y4RjBGNTI2OThCM0FCMDBBOUYzMzEgLyog
RGF0YWJhc2VBc3NlcnRpb25TY29wZS5oICovOyB9OwogCQk5MzczNUVCQjFDOTI5ODYzMDAzMzZG
QTcgLyogV0tQcmV2aWV3QWN0aW9uSXRlbUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzczNUVCQTFDOTI5ODYzMDAzMzZGQTcgLyogV0tQ
cmV2aWV3QWN0aW9uSXRlbUludGVybmFsLmggKi87IH07CiAJCTkzOTEwNzRGMUJGNkJDNjUwMDhD
MTdBRCAvKiBXS1ByZXZpZXdFbGVtZW50SW5mb0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzkxMDc0RTFCRjZCQzY1MDA4QzE3QUQgLyog
V0tQcmV2aWV3RWxlbWVudEluZm9JbnRlcm5hbC5oICovOyB9OwogCQk5MzkxRjJDQjEyMUI2N0FE
MDBFQkY3RTggLyogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MUYyODMxMjFCMzhGNTAwRUJGN0U4IC8q
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCAqLzsgfTsKQEAgLTQ5MzUsNiArNDkzNiw4IEBA
CiAJCTkzRTZBNEVEMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0hpdFRlc3RSZXN1bHQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNTQ5QjMxRTMxNzRCNzAwMEU3MjM5IC8qIFdLU25hcHNo
b3RDb25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU25h
cHNob3RDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjU0
OUI1MUUzMTc0REEwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLU25hcHNob3RDb25maWd1cmF0aW9u
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Y4RjBGNDI2OThCM0FCMDBBOUYz
MzEgLyogRGF0YWJhc2VBc3NlcnRpb25TY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRh
YmFzZUFzc2VydGlvblNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNG
OEYwRjUyNjk4QjNBQjAwQTlGMzMxIC8qIERhdGFiYXNlQXNzZXJ0aW9uU2NvcGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGF0YWJhc2VBc3NlcnRpb25TY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5NTBGMjg3RTI1MjQxNEU5MDBCNzRGMUMgLyogV0tNb3VzZURldmljZU9ic2VydmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLTW91c2VEZXZpY2VPYnNlcnZl
ci5oOyBwYXRoID0gaW9zL1dLTW91c2VEZXZpY2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5NTBGMjg3RjI1MjQxNEVBMDBCNzRGMUMgLyogV0tNb3VzZURldmljZU9i
c2VydmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tNb3Vz
ZURldmljZU9ic2VydmVyLm1tOyBwYXRoID0gaW9zL1dLTW91c2VEZXZpY2VPYnNlcnZlci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTU5MzY3NUQyNTJFNUUzMDAwRDNGMEEwIC8q
IFdLU3R5bHVzRGV2aWNlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gV0tTdHlsdXNEZXZpY2VPYnNlcnZlci5oOyBwYXRoID0gaW9zL1dLU3R5bHVzRGV2aWNlT2Jz
ZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY3NjcsNiArNjc3MCw4IEBA
CiAJCQkJNTEwNkQ3QkYxOEJEQkU3MzAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEu
Y3BwICovLAogCQkJCTUxMDZEN0MwMThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRl
eHREYXRhLmggKi8sCiAJCQkJOTlGNjQyRDIxRkFCRTM3ODAwOTYyMUU5IC8qIENvb3JkaW5hdGVT
eXN0ZW0uaCAqLywKKwkJCQk5M0Y4RjBGNDI2OThCM0FCMDBBOUYzMzEgLyogRGF0YWJhc2VBc3Nl
cnRpb25TY29wZS5jcHAgKi8sCisJCQkJOTNGOEYwRjUyNjk4QjNBQjAwQTlGMzMxIC8qIERhdGFi
YXNlQXNzZXJ0aW9uU2NvcGUuaCAqLywKIAkJCQk5OTAzNkFFODIzQTk3MDg3MDAwMEIwNkEgLyog
RGVidWdnYWJsZUluZm9EYXRhLmNwcCAqLywKIAkJCQk5OTAzNkFFNzIzQTk3MDg3MDAwMEIwNkEg
LyogRGVidWdnYWJsZUluZm9EYXRhLmggKi8sCiAJCQkJMEYxODlDQUIyNDc0OUYyRjAwRTU4RDgx
IC8qIERpc3BsYXlMaW5rT2JzZXJ2ZXJJRC5oICovLApAQCAtMTE5OTEsNiArMTE5OTYsNyBAQAog
CQkJCTU3NTk3RUJEMjE4MTg0OTAwMDM3RjkyNCAvKiBDdGFwQXV0aGVudGljYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTc1OTdFQjkyMTgxMUQ5QTAwMzdGOTI0IC8qIEN0YXBIaWREcml2ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTU3MERBQUNBMjMwMzg1RkQwMEU4RkMwNCAvKiBDdGFwTmZj
RHJpdmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzcwNkVGRjI2OUNDOTlBMDAyREExMjcgLyog
RGF0YWJhc2VBc3NlcnRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU1RjkxNzExQzU5
Njc2RTAwMjlFOTJEIC8qIERhdGFEZXRlY3Rpb25SZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBQzc1MzgwMTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5OTAzNkFFOTIzQTk3MDg3MDAwMEIwNkEgLyogRGVidWdnYWJsZUluZm9EYXRhLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9T
dG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRy
YWNrZXIuY3BwCmluZGV4IGVlYTAwMDQ0YmFmYmZiZjM1Y2VmODg2Njg5ZjQwOTU0YWQ5YzRmMjQu
LjU4ODhlMWNkNDMwMGNiZWE4NzgzNWY2NjM1ZTZiMGYzYWNjMzg3ODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcApAQCAtMzg1LDEzICszODUs
NiBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpkZWxldGVBbGxPcmlnaW5zKCkKICAgICB9KTsKIH0K
IAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi1zdGF0aWMgdm9pZCB0cnVuY2F0ZURhdGFiYXNl
RmlsZShTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UpCi17Ci0gICAgc3FsaXRlM19maWxlX2NvbnRy
b2woZGF0YWJhc2Uuc3FsaXRlM0hhbmRsZSgpLCAwLCBTUUxJVEVfVFJVTkNBVEVfREFUQUJBU0Us
IDApOwotfQotI2VuZGlmCi0KIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVBbGxPcmln
aW5zKCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKQEAgLTQyOSw3ICs0MjIsNyBA
QCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlQWxsT3JpZ2lucygpCiAKICAgICBpZiAo
bV9kYXRhYmFzZS5pc09wZW4oKSkgewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAg
IHRydW5jYXRlRGF0YWJhc2VGaWxlKG1fZGF0YWJhc2UpOworICAgICAgICBTUUxpdGVGaWxlU3lz
dGVtOjp0cnVuY2F0ZURhdGFiYXNlRmlsZShtX2RhdGFiYXNlKTsKICNlbmRpZgogICAgICAgICBt
X2RhdGFiYXNlLmNsb3NlKCk7CiAgICAgfQpAQCAtNTQzLDcgKzUzNiw3IEBAIHZvaWQgU3RvcmFn
ZVRyYWNrZXI6OnN5bmNEZWxldGVPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVy
KQogCiAgICAgaWYgKHNob3VsZERlbGV0ZVRyYWNrZXJGaWxlcykgewogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpCi0gICAgICAgIHRydW5jYXRlRGF0YWJhc2VGaWxlKG1fZGF0YWJhc2UpOworICAg
ICAgICBTUUxpdGVGaWxlU3lzdGVtOjp0cnVuY2F0ZURhdGFiYXNlRmlsZShtX2RhdGFiYXNlKTsK
ICNlbmRpZgogICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7CiAjaWYgIVBMQVRGT1JNKElPU19G
QU1JTFkpCg==
</data>
<flag name="commit-queue"
          id="455590"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433374</attachid>
            <date>2021-07-12 17:05:41 -0700</date>
            <delta_ts>2021-07-12 18:18:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227887-20210712170540.patch</filename>
            <type>text/plain</type>
            <size>43165</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5ODU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQ1ZGU3M2RkZDIzMzUx
MmQ3ZmU0NzIxZTMzNWU4YTgyYWE5MmVhZC4uNDkzZDQzMTQ2OGYxNjdlZWYzNDM3NGFjZTIzMjUw
ZmM5MTAzMzhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTA3LTEyICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgZmlsZSBsb2NrcyBz
eW5jaHJvbm91c2x5IG9uIFByZXBhcmVUb1N1c3BlbmQgbWVzc2FnZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3ODg3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvdGVjdCBTUUxpdGUgQVBJIGNhbGxz
IHRoYXQgbWF5IGFjcXVpcmUgZGF0YWJhc2UgZmlsZSBsb2NrIHdpdGggU1FMaXRlTG9ja1Njb3Bl
LiBBIGdsb2JhbCBsb2NrIGlzIGhlbGQgYXQgd2hlbiAKKyAgICAgICAgU1FMaXRlTG9ja1Njb3Bl
IGlzIGNyZWF0ZWQgYW5kIHJlbGVhc2VkIHdoZW4gU1FMaXRlTG9ja1Njb3BlIGlzIGRlc3Ryb3ll
ZC4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6Om9wZW4pOiBBZGQgYSBuZXcg
cGFyYW1ldGVyIGludGVycnVwdGFibGUgdG8gaW5kaWNhdGUgaWYgdGhlIGRhdGFiYXNlIHdhbnQg
aXRzCisgICAgICAgIHRyYW5zYWN0aW9uIHRvIGJlIGFib3J0ZWQgb3IgY29tbWl0dGVkIG9uIGlu
dGVycnVwdC4KKyAgICAgICAgKFdlYkNvcmU6OndhbEF1dG9tYXRpY1RydW5jYXRpb25Ib29rKToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjp1c2VXQUxKb3VybmFsTW9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2U6OmludGVycnVwdCk6IFJlbGVhc2UgZmlsZSBsb2NrIGJ5IGludGVy
cnVwdGluZyBsb25nIHF1ZXJ5IGFuZCBlbmRpbmcgdHJhbnNhY3Rpb24uCisgICAgICAgICogcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0
ZUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6dHJ1
bmNhdGVEYXRhYmFzZUZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2Nv
cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZTo6c2V0SW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6OlNRTGl0ZUxvY2tTY29wZSk6
CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6On5TUUxpdGVMb2NrU2NvcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMaXRlTG9ja1Njb3BlOjphZGREYXRhYmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6OnJlbW92ZURhdGFiYXNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9zcWwvU1FMaXRlTG9ja1Njb3BlLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVt
ZW50OjpzdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudDo6c3RlcFdpdGhv
dXRMb2NrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50Lmg6CisKIDIw
MjEtMDctMTIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dCBjYW4ndCBkcmF3IHRleHQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
MWI3OGY2OGY1MjM4OTQ2NWE1YjFjMzI1ZTU3ZGI2MjlhYjU1ZTJhZC4uOGExMGU3N2YwMDAyNTA0
ZDcyOGQzOGEyYWVhYzc4ZGMzYTliYTA5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAy
MS0wNy0xMiAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9w
IGZpbGUgbG9ja3Mgc3luY2hyb25vdXNseSBvbiBQcmVwYXJlVG9TdXNwZW5kIG1lc3NhZ2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzg4NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gbmV0d29y
ayBwcm9jZXNzIGlzIGFib3V0IHRvIHN1c3BlbmQsIGl0IHNob3VsZCByZWxlYXNlIGFsbCBkYXRh
YmFzZSBmaWxlIGxvY2tzIGFzIHNvb24gYXMgcG9zc2libGUuIE91cgorICAgICAgICBjdXJyZW50
IGltcGxlbWVudGF0aW9uIGlzIEluZGV4ZWREQiByZWxlYXNlcyBsb2NrcyBieSBhYm9ydGluZyB0
cmFuc2FjdGlvbnMgc3luY2hyb25vdXNseSBvbiBQcmVwYXJlVG9TdXNwZW5kLAorICAgICAgICBh
bmQgTG9jYWxTdG9yYWdlIGFuZCBJVFAgc2NoZWR1bGVzIHN1c3BlbmQgdGFzayB0byBiYWNrZ3Jv
dW5kIHRocmVhZHMuIEl0J3MgcG9zc2libGUgdGhhdCBzdXNwZW5kIHRhc2sKKyAgICAgICAgZG9l
cyBub3QgZ2V0IHRvIHJ1biBiZWZvcmUgbmV0d29yayBwcm9jZXNzIGdldHMgc3VzcGVuZGVkIGFj
Y29yZGluZyB0byBjcmFzaCBsb2dzLCBzbyBsZXQncyBtYWtlIHRoZSBiZWhhdmlvcgorICAgICAg
ICBjb25zaXN0ZW50IGFjcm9zcyBhbGwgZGF0YWJhc2VzLCBhbmQgbWFrZSBzdXJlIG5ldHdvcmsg
cHJvY2VzcyByZWxlYXNlcyBsb2NrcyBxdWlja2x5IG9uIFByZXBhcmVUb1N1c3BlbmQuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnJlc3VtZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURh
dGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2U6Om9wZW5E
YXRhYmFzZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9T
Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0SXNIb2xkaW5nTG9ja2Vk
RmlsZXMpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9EYXRhYmFzZUFzc2VydGlvblNjb3Bl
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGU6OkRh
dGFiYXNlQXNzZXJ0aW9uU2NvcGUpOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZUFzc2VydGlv
blNjb3BlOjp+RGF0YWJhc2VBc3NlcnRpb25TY29wZSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFi
YXNlQXNzZXJ0aW9uU2NvcGU6OmJlZ2luKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VBc3Nl
cnRpb25TY29wZTo6ZW5kKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VBc3NlcnRpb25TY29w
ZTo6YWRkRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZUFzc2VydGlvblNjb3Bl
OjpyZW1vdmVEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uU2Nv
cGU6OmludGVycnVwdCk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGU6
OnJlc3VtZSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGU6OmFzc2Vy
dGlvblJlbGVhc2VUaW1lckZpcmVkKToKKyAgICAgICAgKiBTaGFyZWQvRGF0YWJhc2VBc3NlcnRp
b25TY29wZS5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVy
L01lZGlhRm9ybWF0UmVhZGVyLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0
UmVhZGVyL01lZGlhVHJhY2tSZWFkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVRyYWNr
UmVhZGVyOjpsb2dDaGFubmVsIGNvbnN0KToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIxLTA3LTEy
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cmV2ZXJ0aW5nIHIyNzk4MzUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDYyM2U3YjY1YmIyNzZm
MjE5YWU3NzM2MmNmOGZkMmU0YTUyMzUwYzIuLmU5YzlmZjQyOTBlMTgxZDU1OGM3OGI5ZjQ2ZDU1
MDQxYzAwNzBhNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEt
MDctMTIgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBm
aWxlIGxvY2tzIHN5bmNocm9ub3VzbHkgb24gUHJlcGFyZVRvU3VzcGVuZCBtZXNzYWdlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc4ODcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3Rv
cmFnZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6c3luY0Rl
bGV0ZUFsbE9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6c3luY0Rl
bGV0ZU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OnRydW5jYXRlRGF0YWJhc2VGaWxlKTogRGVs
ZXRlZC4KKwogMjAyMS0wNi0yMSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAog
ICAgICAgICBNYWtlIEluUHJvY2Vzc0lEQlNlcnZlciB1c2UgV29ya1F1ZXVlIGluc3RlYWQgb2Yg
VGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDNjYmZhNWFiNWE0YmY1ODQ0OTZhYjYxMzNjZTMwOGQ0
OTkyM2JhMDIuLjVmMWQ0NGUxZDM5NWY4NDg3NjQ0ZTQ2MTQ4YTc4ZDRhZWRjMTg1M2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CkBAIC0yMTg4LDYgKzIxODgsNyBAQCBwbGF0Zm9ybS9zcWwvU1FMaXRlQXV0aG9y
aXplci5jcHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKIHBsYXRmb3JtL3NxbC9T
UUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5j
cHAKK3BsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2NvcGUuY3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRl
U3RhdGVtZW50LmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3Bl
LmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGUyYTJmOThhNWIx
YWE2Y2JlOWY3NzA2YzUxMDAxN2M1OGY0NGU0Y2IuLmRjMjczZDAzMWMyY2M2YjBjOGNkOGYyN2M3
NDhhOWI0MGExZDFmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTI5MzEsNiArMjkzMSw3IEBACiAJCTkzRjZCODFGMjU2N0Ew
OEMwMEEwODQ4OCAvKiBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y2QjgxQzI1Njc5Rjcw
MDBBMDg0ODggLyogU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjZCODIyMjU2N0E2
NTYwMEEwODQ4OCAvKiBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjZCODFCMjU2NzlGNkYwMEEw
ODQ4OCAvKiBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Y2RjFFRTEyN0Y3MEIxMDA1NUNC
MDYgLyogV2ViR0xDb250ZXh0RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzRjZGMUVCMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRF
dmVudC5oICovOyB9OworCQk5M0Y4RjBGMzI2OTgyNjEzMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Nj
b3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y4
RjBGMTI2OTgyNjEyMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGOTI1NDMwRjdFRjVCODAwN0Uz
N0M5IC8qIFJhZGlvQnV0dG9uR3JvdXBzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0Y5MjU0MTBGN0VGNUI4MDA3RTM3QzkgLyogUmFkaW9CdXR0b25H
cm91cHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5M0Y5QjZFMTBCQTBGQjcyMDA4NTQwNjQgLyogSlNDb21tZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y5QjZERjBCQTBGQjcyMDA4NTQwNjQg
LyogSlNDb21tZW50LmggKi87IH07CiAJCTkzRjlCN0ExMEJBNjAzMjYwMDg1NDA2NCAvKiBKU0NE
QVRBU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNGOUI3OUYwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmggKi87IH07CkBA
IC0xMTgzNCw2ICsxMTgzNSw4IEBACiAJCTkzRjhCMzA1MEEzMDBGRTEwMEY2MUFCOCAvKiBDb2Rl
R2VuZXJhdG9yLnBtICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IENvZGVHZW5l
cmF0b3IucG07IHBhdGggPSBzY3JpcHRzL0NvZGVHZW5lcmF0b3IucG07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzRjhCMzA2MEEzMDBGRUEwMEY2MUFCOCAvKiBDb2RlR2VuZXJhdG9y
SlMucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gQ29kZUdlbmVyYXRvckpT
LnBtOyBwYXRoID0gc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHdyYXBzTGluZXMgPSAwOyB9OwogCQk5M0Y4QjMwNzBBMzAwRkVBMDBGNjFBQjggLyog
Z2VuZXJhdGUtYmluZGluZ3MucGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0g
ImdlbmVyYXRlLWJpbmRpbmdzLnBsIjsgcGF0aCA9ICJzY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdz
LnBsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNGOEYwRUYyNjk4MjYxMjAwQTlG
MzMxIC8qIFNRTGl0ZUxvY2tTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTUUxpdGVMb2NrU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5M0Y4RjBGMTI2OTgyNjEyMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTGl0ZUxvY2tTY29wZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5M0Y5MjU0MTBGN0VGNUI4MDA3RTM3QzkgLyogUmFkaW9CdXR0b25H
cm91cHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFkaW9CdXR0b25Hcm91
cHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGOTI1NDIwRjdFRjVCODAwN0Uz
N0M5IC8qIFJhZGlvQnV0dG9uR3JvdXBzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJhZGlvQnV0dG9uR3JvdXBzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNGOUI2REUwQkEwRkI3MjAwODU0MDY0IC8qIEpTQ29tbWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NvbW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTg1MzUsNiArMTg1MzgsOCBAQAogCQkJCTdFNDc0RTFCMTI0OTRE
QzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCAqLywKIAkJCQlCNUE2
ODQyMzBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5jcHAgKi8sCiAJCQkJQjVB
Njg0MjEwRkZBQkU5ODAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uaCAqLywKKwkJCQk5M0Y4
RjBFRjI2OTgyNjEyMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmNwcCAqLywKKwkJCQk5M0Y4
RjBGMTI2OTgyNjEyMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmggKi8sCiAJCQkJMUEyMjQ2
NDUwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZVN0YXRlbWVudC5jcHAgKi8sCiAJCQkJMUEyMjQ2
NDYwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZVN0YXRlbWVudC5oICovLAogCQkJCUVCRTVCMjI3
MjQ1QTI5Q0YwMDNBNUE4OCAvKiBTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZS5jcHAgKi8s
CkBAIC0zNTM4NSw2ICszNTM5MCw3IEBACiAJCQkJNTEyQkRCNEIxQzQ1NkZGQTAwNjQ5NERGIC8q
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExRUMxMzAxQzUw
QUJGNTAwMzJGOTgzIC8qIFNRTGl0ZUlEQkN1cnNvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEx
RUMxMkMxQzUwQUJCRjAwMzJGOTgzIC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5M0Y4RjBGMzI2OTgyNjEzMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTIyNDY0QzBDQzk4RERCMDBDMDUyNDAgLyogU1FMaXRlU3Rh
dGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFQkU1QjIyNjI0NUEyNkVGMDAzQTVBODggLyog
U1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjI0
NjRFMENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAppbmRl
eCBhMTExMDI1NjgxZTQ2OTMxMjNmYmM4Y2I0OTBhODM3MGRiMzljMTgzLi5iNTgzYzY2MDk0ZWQ2
MDVhNTkwMjNjYzUzZDk2OGYzNWMyYTg0YWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJN
ZW1vcnlSZWxlYXNlLmgiCiAjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5j
bHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIlNRTGl0ZUxvY2tTY29wZS5oIgog
I2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUg
PHNxbGl0ZTMuaD4KQEAgLTg4LDcgKzg5LDcgQEAgU1FMaXRlRGF0YWJhc2U6On5TUUxpdGVEYXRh
YmFzZSgpCiAgICAgY2xvc2UoKTsKIH0KIAotYm9vbCBTUUxpdGVEYXRhYmFzZTo6b3Blbihjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBPcGVuTW9kZSBvcGVuTW9kZSkKK2Jvb2wgU1FMaXRlRGF0YWJh
c2U6Om9wZW4oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgT3Blbk1vZGUgb3Blbk1vZGUsIElzSW50
ZXJydXB0YWJsZSBpbnRlcnJ1cHRhYmxlKQogewogICAgIGluaXRpYWxpemVTUUxpdGVJZk5lY2Vz
c2FyeSgpOwogCkBAIC0xMTQsNyArMTE1LDE0IEBAIGJvb2wgU1FMaXRlRGF0YWJhc2U6Om9wZW4o
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgT3Blbk1vZGUgb3Blbk1vZGUpCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogCi0gICAgICAgIG1fb3BlbkVycm9yID0gc3FsaXRlM19vcGVuX3Yy
KEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlbmFtZSkuZGF0YSgpLCAm
bV9kYiwgZmxhZ3MsIG51bGxwdHIpOworICAgICAgICB7CisgICAgICAgICAgICBTUUxpdGVMb2Nr
U2NvcGUgbG9ja1Njb3BlOworICAgICAgICAgICAgbV9vcGVuRXJyb3IgPSBzcWxpdGUzX29wZW5f
djIoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVuYW1lKS5kYXRhKCks
ICZtX2RiLCBmbGFncywgbnVsbHB0cik7CisgICAgICAgICAgICBtX2ludGVycnVwdGFibGUgPSBp
bnRlcnJ1cHRhYmxlOworICAgICAgICAgICAgaWYgKG1fb3BlbkVycm9yID09IFNRTElURV9PSykK
KyAgICAgICAgICAgICAgICBsb2NrU2NvcGUuYWRkRGF0YWJhc2UoKnRoaXMpOworICAgICAgICB9
CisKICAgICAgICAgaWYgKG1fb3BlbkVycm9yICE9IFNRTElURV9PSykgewogICAgICAgICAgICAg
bV9vcGVuRXJyb3JNZXNzYWdlID0gbV9kYiA/IHNxbGl0ZTNfZXJybXNnKG1fZGIpIDogInNxbGl0
ZV9vcGVuIHJldHVybmVkIG51bGwiOwogICAgICAgICAgICAgTE9HX0VSUk9SKCJTUUxpdGUgZGF0
YWJhc2UgZmFpbGVkIHRvIGxvYWQgZnJvbSAlc1xuQ2F1c2UgLSAlcyIsIGZpbGVuYW1lLmFzY2lp
KCkuZGF0YSgpLApAQCAtMTY3LDcgKzE3NSwxMSBAQCBzdGF0aWMgaW50IHdhbEF1dG9tYXRpY1Ry
dW5jYXRpb25Ib29rKHZvaWQqIGNvbnRleHQsIHNxbGl0ZTMqIGRiLCBjb25zdCBjaGFyKiBkYgog
CiAgICAgaWYgKHdhbFBhZ2VDb3VudCA+PSBjaGVja3BvaW50VGhyZXNob2xkKSB7CiAgICAgICAg
IGludCBuZXdXYWxQYWdlQ291bnQgPSAwOwotICAgICAgICBpbnQgcmVzdWx0ID0gc3FsaXRlM193
YWxfY2hlY2twb2ludF92MihkYiwgZGJOYW1lLCBTUUxJVEVfQ0hFQ0tQT0lOVF9UUlVOQ0FURSwg
Jm5ld1dhbFBhZ2VDb3VudCwgbnVsbHB0cik7CisgICAgICAgIGludCByZXN1bHQ7CisgICAgICAg
IHsKKyAgICAgICAgICAgIFNRTGl0ZUxvY2tTY29wZSBsb2NrU2NvcGU7CisgICAgICAgICAgICBy
ZXN1bHQgPSBzcWxpdGUzX3dhbF9jaGVja3BvaW50X3YyKGRiLCBkYk5hbWUsIFNRTElURV9DSEVD
S1BPSU5UX1RSVU5DQVRFLCAmbmV3V2FsUGFnZUNvdW50LCBudWxscHRyKTsKKyAgICAgICAgfQog
CiAjaWYgTE9HX0RJU0FCTEVECiAgICAgICAgIFVOVVNFRF9WQVJJQUJMRShyZXN1bHQpOwpAQCAt
MTk0LDcgKzIwNiw2IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmVuYWJsZUF1dG9tYXRpY1dBTFRy
dW5jYXRpb24oKQogCiB2b2lkIFNRTGl0ZURhdGFiYXNlOjp1c2VXQUxKb3VybmFsTW9kZSgpCiB7
Ci0gICAgbV91c2VXQUwgPSB0cnVlOwogICAgIHsKICAgICAgICAgYXV0byB3YWxTdGF0ZW1lbnQg
PSBwcmVwYXJlU3RhdGVtZW50KCJQUkFHTUEgam91cm5hbF9tb2RlPVdBTDsiX3MpOwogICAgICAg
ICBpZiAod2FsU3RhdGVtZW50ICYmIHdhbFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cp
IHsKQEAgLTIzMiwxMiArMjQzLDExIEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmNsb3NlKFNob3Vs
ZFNldEVycm9yU3RhdGUgc2hvdWxkU2V0RXJyb3JTdGF0ZSkKICAgICAgICAgfQogCiAgICAgICAg
IGludCBjbG9zZVJlc3VsdDsKLSAgICAgICAgaWYgKG1fdXNlV0FMKSB7Ci0gICAgICAgICAgICAv
LyBDbG9zZSBpbiB0aGUgc2NvcGUgb2YgY291bnRlciBhcyBpdCBtYXkgYWNxdWlyZSBsb2NrIG9m
IGRhdGFiYXNlLgotICAgICAgICAgICAgU1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0Nv
dW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwotICAgICAgICAgICAgY2xvc2VSZXN1bHQgPSBzcWxp
dGUzX2Nsb3NlKGRiKTsKLSAgICAgICAgfSBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIFNR
TGl0ZUxvY2tTY29wZSBsb2NrU2NvcGU7CiAgICAgICAgICAgICBjbG9zZVJlc3VsdCA9IHNxbGl0
ZTNfY2xvc2UoZGIpOworICAgICAgICAgICAgbG9ja1Njb3BlLnJlbW92ZURhdGFiYXNlKCp0aGlz
KTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmIChjbG9zZVJlc3VsdCAhPSBTUUxJVEVfT0spCiAg
ICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTUUxEYXRhYmFzZSwgIlNRTGl0ZURhdGFiYXNl
OjpjbG9zZTogRmFpbGVkIHRvIGNsb3NlIGRhdGFiYXNlICglZCkgLSAle3B1YmxpY31zIiwgY2xv
c2VSZXN1bHQsIGxhc3RFcnJvck1zZygpKTsKQEAgLTQ1OCw4ICs0NjgsMTUgQEAgaW50IFNRTGl0
ZURhdGFiYXNlOjpydW5JbmNyZW1lbnRhbFZhY3V1bUNvbW1hbmQoKQogdm9pZCBTUUxpdGVEYXRh
YmFzZTo6aW50ZXJydXB0KCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhYmFzZUNsb3Np
bmdNdXRleCB9OwotICAgIGlmIChtX2RiKQotICAgICAgICBzcWxpdGUzX2ludGVycnVwdChtX2Ri
KTsKKyAgICAKKyAgICBpZiAoIW1fZGIpCisgICAgICAgIHJldHVybjsKKworICAgIHNxbGl0ZTNf
aW50ZXJydXB0KG1fZGIpOworCisgICAgQVNDSUlMaXRlcmFsIHF1ZXJ5U3RyaW5nID0gbV9pbnRl
cnJ1cHRhYmxlID09IElzSW50ZXJydXB0YWJsZTo6WWVzID8gIkNPTU1JVCJfcyA6ICJST0xMQkFD
SyJfczsKKyAgICBpZiAoYXV0byBxdWVyeSA9IHByZXBhcmVTdGF0ZW1lbnQocXVlcnlTdHJpbmcp
KQorICAgICAgICBxdWVyeS0+c3RlcFdpdGhvdXRMb2NrKCk7CiB9CiAKIGludDY0X3QgU1FMaXRl
RGF0YWJhc2U6Omxhc3RJbnNlcnRSb3dJRCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZS5oCmluZGV4IDRiMjJjOGZlNjhlMzVmYmRkMDk3MjU4NjhjNGM5YTBl
NWNhYjJjZjAuLjA5Y2YwZmFmMGEzNjY2MzUyZGRhY2Y0ZGJmMWMyODU4OWVhMmEwMzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCkBAIC01Nyw3ICs1
Nyw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB+U1FMaXRlRGF0YWJhc2UoKTsKIAog
ICAgIGVudW0gY2xhc3MgT3Blbk1vZGUgeyBSZWFkT25seSwgUmVhZFdyaXRlLCBSZWFkV3JpdGVD
cmVhdGUgfTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZW4oY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgT3Blbk1vZGUgPSBPcGVuTW9kZTo6UmVhZFdyaXRlQ3JlYXRlKTsKKyAgICBlbnVtIGNs
YXNzIElzSW50ZXJydXB0YWJsZSA6IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBvcGVuKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIE9wZW5Nb2RlID0gT3Blbk1vZGU6
OlJlYWRXcml0ZUNyZWF0ZSwgSXNJbnRlcnJ1cHRhYmxlID0gSXNJbnRlcnJ1cHRhYmxlOjpObyk7
CiAgICAgYm9vbCBpc09wZW4oKSBjb25zdCB7IHJldHVybiBtX2RiOyB9CiAgICAgZW51bSBjbGFz
cyBTaG91bGRTZXRFcnJvclN0YXRlIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNsb3NlKFNob3VsZFNldEVycm9yU3RhdGUgPSBTaG91bGRTZXRFcnJvclN0YXRl
OjpZZXMpOwpAQCAtMTgxLDggKzE4Miw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjphdG9taWM8dW5z
aWduZWQ+IG1fc3RhdGVtZW50Q291bnQgeyAwIH07CiAjZW5kaWYKIAotICAgIGJvb2wgbV91c2VX
QUwgeyBmYWxzZSB9OwotCiAgICAgTG9jayBtX2F1dGhvcml6ZXJMb2NrOwogICAgIFJlZlB0cjxE
YXRhYmFzZUF1dGhvcml6ZXI+IG1fYXV0aG9yaXplciBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fYXV0
aG9yaXplckxvY2spOwogCkBAIC0xOTMsNiArMTkyLDggQEAgcHJpdmF0ZToKIAogICAgIGludCBt
X29wZW5FcnJvciB7IFNRTElURV9FUlJPUiB9OwogICAgIENTdHJpbmcgbV9vcGVuRXJyb3JNZXNz
YWdlOworCisgICAgSXNJbnRlcnJ1cHRhYmxlIG1faW50ZXJydXB0YWJsZSB7IElzSW50ZXJydXB0
YWJsZTo6Tm8gfTsKIH07CiAKIGlubGluZSB2b2lkIFNRTGl0ZURhdGFiYXNlOjppbmNyZW1lbnRT
dGF0ZW1lbnRDb3VudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
RmlsZVN5c3RlbS5jcHAKaW5kZXggNzZlNDVhZjM0ZWQwOTNmZDlmMjc2ZGQ1ZDRiOTIyYTQxNjM0
ZDlhZS4uOGI5YjMyMWRjNjQ4MTAwZmNiZjRjNWMyMmY1MGYxNGIxNWEzMTg4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcApAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIlNRTGl0ZUZpbGVTeXN0ZW0uaCIKIAogI2luY2x1ZGUgIlNR
TGl0ZURhdGFiYXNlLmgiCisjaW5jbHVkZSAiU1FMaXRlTG9ja1Njb3BlLmgiCiAjaW5jbHVkZSAi
U1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4K
ICNpbmNsdWRlIDxzcWxpdGUzLmg+CkBAIC05NCw2ICs5NSw3IEBAIGJvb2wgU1FMaXRlRmlsZVN5
c3RlbTo6ZGVsZXRlRGF0YWJhc2VGaWxlKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6dHJ1bmNhdGVEYXRhYmFz
ZUZpbGUoc3FsaXRlMyogZGF0YWJhc2UpCiB7CisgICAgU1FMaXRlTG9ja1Njb3BlIGxvY2tTY29w
ZTsKICAgICByZXR1cm4gc3FsaXRlM19maWxlX2NvbnRyb2woZGF0YWJhc2UsIDAsIFNRTElURV9U
UlVOQ0FURV9EQVRBQkFTRSwgMCkgPT0gU1FMSVRFX09LOwogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlTG9ja1Njb3BlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2NvcGUuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4
NWI3OTMyZjBkM2IxYjllZjMyNGM5ZWRjMWQ0NzdlNDM1N2ZkN2MKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlTG9ja1Njb3BlLmNwcApAQCAtMCww
ICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNR
TGl0ZUxvY2tTY29wZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBMb2NrIHNj
b3BlTG9jazsKK3N0YXRpYyBTUUxpdGVMb2NrU2NvcGVJbXBsKiBzX2ltcGwgeyBudWxscHRyIH07
CisKK3ZvaWQgU1FMaXRlTG9ja1Njb3BlOjpzZXRJbXBsKFNRTGl0ZUxvY2tTY29wZUltcGwqIGlt
cGwpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjb3BlTG9jayB9OworICAgIHNfaW1wbCA9IGlt
cGw7Cit9CisKK3ZvaWQgU1FMaXRlTG9ja1Njb3BlOjpsb2NrKCkgV1RGX0lHTk9SRVNfVEhSRUFE
X1NBRkVUWV9BTkFMWVNJUworeworICAgIHNjb3BlTG9jay5sb2NrKCk7Cit9CisKK3ZvaWQgU1FM
aXRlTG9ja1Njb3BlOjp1bmxvY2soKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lT
Cit7CisgICAgc2NvcGVMb2NrLnVubG9jaygpOworfQorCitTUUxpdGVMb2NrU2NvcGU6OlNRTGl0
ZUxvY2tTY29wZSgpCit7CisgICAgc2NvcGVMb2NrLmxvY2soKTsKKyAgICBpZiAoc19pbXBsKQor
ICAgICAgICBzX2ltcGwtPmJlZ2luKCk7Cit9CisKK1NRTGl0ZUxvY2tTY29wZTo6flNRTGl0ZUxv
Y2tTY29wZSgpCit7CisgICAgaWYgKHNfaW1wbCkKKyAgICAgICAgc19pbXBsLT5lbmQoKTsKKyAg
ICBzY29wZUxvY2sudW5sb2NrKCk7Cit9CisKK3ZvaWQgU1FMaXRlTG9ja1Njb3BlOjphZGREYXRh
YmFzZShTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UpCit7CisgICAgaWYgKHNfaW1wbCkKKyAgICAg
ICAgc19pbXBsLT5hZGREYXRhYmFzZShkYXRhYmFzZSk7Cit9CisKK3ZvaWQgU1FMaXRlTG9ja1Nj
b3BlOjpyZW1vdmVEYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UpCit7CisgICAgaWYg
KHNfaW1wbCkKKyAgICAgICAgc19pbXBsLT5yZW1vdmVEYXRhYmFzZShkYXRhYmFzZSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVMb2NrU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVMb2NrU2NvcGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MjIxZTZkOWZiOGNhYzEyNWIwMTQ3ODgxMTZm
NDE0ZDAyZTBlM2UyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZUxvY2tTY29wZS5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTUUxpdGVEYXRhYmFzZTsK
K2NsYXNzIFNRTGl0ZVRyYW5zYWN0aW9uOworCitjbGFzcyBTUUxpdGVMb2NrU2NvcGVJbXBsIHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TUUxpdGVMb2NrU2NvcGVJbXBsKCkgPSBkZWZhdWx0Owor
CisgICAgdmlydHVhbCB2b2lkIGJlZ2luKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmQoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZERhdGFiYXNlKFNRTGl0ZURhdGFiYXNlJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYpID0gMDsKK307
CisKK2NsYXNzIFNRTGl0ZUxvY2tTY29wZSB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHZvaWQgc2V0SW1wbChTUUxpdGVMb2NrU2NvcGVJbXBsKik7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIHZvaWQgbG9jaygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lk
IHVubG9jaygpOworCisgICAgU1FMaXRlTG9ja1Njb3BlKCk7CisgICAgflNRTGl0ZUxvY2tTY29w
ZSgpOworCisgICAgdm9pZCBhZGREYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYpOworICAgIHZvaWQg
cmVtb3ZlRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5j
cHAKaW5kZXggYjA4NDllNmY4MDhjYTM4MGIwOGM2Mjc0YjA0ZDE0OWNjMDMzYzA4Ny4uYjM3MWNk
YjRlNWIyZjJkYzBkNmFiNmFiN2VjNDU3MWY1ZTI2YmRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTUUxWYWx1ZS5oIgorI2luY2x1ZGUgIlNR
TGl0ZUxvY2tTY29wZS5oIgogI2luY2x1ZGUgPHNxbGl0ZTMuaD4KICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CkBAIC02Niw2ICs2NywyMiBAQCBp
bnQgU1FMaXRlU3RhdGVtZW50OjpzdGVwKCkKIHsKICAgICBMb2NrZXIgZGF0YWJhc2VMb2NrIHsg
bV9kYXRhYmFzZS5kYXRhYmFzZU11dGV4KCkgfTsKIAorICAgIGludCBlcnJvcjsKKyAgICB7Cisg
ICAgICAgIFNRTGl0ZUxvY2tTY29wZSBsb2NrU2NvcGU7CisgICAgICAgIGVycm9yID0gc3FsaXRl
M19zdGVwKG1fc3RhdGVtZW50KTsKKyAgICB9CisKKyAgICBpZiAoZXJyb3IgIT0gU1FMSVRFX0RP
TkUgJiYgZXJyb3IgIT0gU1FMSVRFX1JPVykKKyAgICAgICAgTE9HKFNRTERhdGFiYXNlLCAic3Fs
aXRlM19zdGVwIGZhaWxlZCAoJWkpXG5FcnJvciAtICVzIiwgZXJyb3IsIHNxbGl0ZTNfZXJybXNn
KG1fZGF0YWJhc2Uuc3FsaXRlM0hhbmRsZSgpKSk7CisKKyAgICByZXR1cm4gZXJyb3I7Cit9CisK
K2ludCBTUUxpdGVTdGF0ZW1lbnQ6OnN0ZXBXaXRob3V0TG9jaygpCit7CisgICAgTG9ja2VyIGRh
dGFiYXNlTG9jayB7IG1fZGF0YWJhc2UuZGF0YWJhc2VNdXRleCgpIH07CisKICAgICBpbnQgZXJy
b3IgPSBzcWxpdGUzX3N0ZXAobV9zdGF0ZW1lbnQpOwogICAgIGlmIChlcnJvciAhPSBTUUxJVEVf
RE9ORSAmJiBlcnJvciAhPSBTUUxJVEVfUk9XKQogICAgICAgICBMT0coU1FMRGF0YWJhc2UsICJz
cWxpdGUzX3N0ZXAgZmFpbGVkICglaSlcbkVycm9yIC0gJXMiLCBlcnJvciwgc3FsaXRlM19lcnJt
c2cobV9kYXRhYmFzZS5zcWxpdGUzSGFuZGxlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaAppbmRleCBjZjJmMTIwZjJlNzUzYWQ4ZDEzMTcwZmQw
ZDg3MDAxNjlkZWJjMTU1Li44YWNmZDY5MmY1ZWQzZTI4NDg3OTdjNWNhMWM5ODBiODk4ZTQxYmNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oCkBA
IC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBiaW5k
UGFyYW1ldGVyQ291bnQoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGludCBzdGVwKCk7
CisgICAgaW50IHN0ZXBXaXRob3V0TG9jaygpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCByZXNl
dCgpOwogICAgIAogICAgIC8vIHN0ZXBzIGFuZCBmaW5hbGl6ZXMgdGhlIHF1ZXJ5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBhZWEy
ZmFhNThhMTU4MWYwMGJmNTZiY2VlZWQxNzdiNDRhNDM2MDk2Li44Y2FjNjk3NjA3NDNlMjFkODcy
OWQyYjY1Yzk4NTc0Y2Y0MDBmYTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkF1dGhl
bnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkF1eGlsaWFyeVByb2Nlc3NNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUFzc2VydGlv
blNjb3BlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWQuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5
TWVzc2FnZXMuaCIKICNpZiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQpA
QCAtMTU4LDkgKzE1OSw3IEBAIE5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2VzcyhBdXhpbGlh
cnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1lCiAjaWYgRU5BQkxFKENP
TlRFTlRfRVhURU5TSU9OUykKICAgICAsIG1fbmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIo
KnRoaXMpCiAjZW5kaWYKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICwgbV93ZWJTUUxp
dGVEYXRhYmFzZVRyYWNrZXIoW3RoaXNdKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpIHsgc2V0
SXNIb2xkaW5nTG9ja2VkRmlsZXMoaXNIb2xkaW5nTG9ja2VkRmlsZXMpOyB9KQotI2VuZGlmCisg
ICAgLCBtX2RhdGFiYXNlQXNzZXJ0aW9uU2NvcGUoIk5ldHdvcmsgUHJvY2VzcyBpcyBob2xkaW5n
IGxvY2tlZCBmaWxlcyIpCiAgICAgLCBtX21lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KGNyZWF0
ZU1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KCp0aGlzKSkKIHsKICAgICBOZXR3b3JrUHJvY2Vz
c1BsYXRmb3JtU3RyYXRlZ2llczo6aW5pdGlhbGl6ZSgpOwpAQCAtMjIxNSwxMiArMjIxNCw2IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25J
bW1pbmVudCwgQ29tcGxldGlvbkhhbmRsCiB7CiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3Bl
bnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCksIGlzU3VzcGVu
c2lvbkltbWluZW50PSVkIiwgdGhpcywgaXNTdXNwZW5zaW9uSW1taW5lbnQpOwogCi0jaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBmb3IgKGF1dG8mIHNlcnZlciA6IG1fd2ViSURCU2VydmVy
cy52YWx1ZXMoKSkKLSAgICAgICAgc2VydmVyLT5zdXNwZW5kKCk7Ci0gICAgbV9zaG91bGRTdXNw
ZW5kSURCU2VydmVyID0gdHJ1ZTsKLSNlbmRpZgotCiAgICAgbG93TWVtb3J5SGFuZGxlcihDcml0
aWNhbDo6WWVzKTsKIAogICAgIFJlZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNrQWdn
cmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFt0aGlzLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewpAQCAtMjIyOCwx
MCArMjIyMSw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoYm9vbCBp
c1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRsCiAgICAgICAgIFVOVVNFRF9WQVJJ
QUJMRSh0aGlzKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKLSAgICAK
LSNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6c3VzcGVuZChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwotI2Vu
ZGlmCiAKICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChhdXRvJiBuZXR3b3JrU2Vzc2lv
bikgewogICAgICAgICBwbGF0Zm9ybUZsdXNoQ29va2llcyhuZXR3b3JrU2Vzc2lvbi5zZXNzaW9u
SUQoKSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKQEAgLTIyNDcsNyArMjIzNiw3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1p
bmVudCwgQ29tcGxldGlvbkhhbmRsCiAgICAgfQogI2VuZGlmCiAKLSAgICBtX3N0b3JhZ2VNYW5h
Z2VyU2V0LT5zdXNwZW5kKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CisgICAgbV9kYXRhYmFz
ZUFzc2VydGlvblNjb3BlLmludGVycnVwdCgpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjph
cHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgpCkBAIC0yMjcwLDIyICsyMjU5LDEzIEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZSgpCiB7CiAgICAgZm9yIChhdXRvJiBjb25uZWN0aW9u
IDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMudmFsdWVzKCkpCiAgICAgICAgIGNvbm5lY3Rpb24t
PmVuZFN1c3BlbnNpb24oKTsKLQotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXN1bWUoKTsKLSNlbmRpZgog
ICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBmb3IgKGF1dG8mIHNlcnZlciA6
IG1fc3dTZXJ2ZXJzLnZhbHVlcygpKQogICAgICAgICBzZXJ2ZXItPmVuZFN1c3BlbnNpb24oKTsK
ICNlbmRpZgotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgZm9yIChhdXRvJiBzZXJ2ZXIg
OiBtX3dlYklEQlNlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgIHNlcnZlci0+cmVzdW1lKCk7Ci0g
ICAgbV9zaG91bGRTdXNwZW5kSURCU2VydmVyID0gZmFsc2U7Ci0jZW5kaWYKIAotICAgIG1fc3Rv
cmFnZU1hbmFnZXJTZXQtPnJlc3VtZSgpOworICAgIG1fZGF0YWJhc2VBc3NlcnRpb25TY29wZS5y
ZXN1bWUoKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlZmV0Y2hETlMoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAppbmRleCA3OTQ4MDk3YWEzZGMzODZhMmZkNDFmYWQ2MjNiM2NlY2RmOGQ3ZTRhLi42
NWI2Yzk1ODU3ZjMxZTYxNjFhNDU4MmEzMDg3OTAyYmE3MGJjNTFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vzcy5oIgogI2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIKICNp
bmNsdWRlICJDYWxsYmFja0lELmgiCisjaW5jbHVkZSAiRGF0YWJhc2VBc3NlcnRpb25TY29wZS5o
IgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIK
ICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCIKQEAgLTQ5OSwxMCArNTAw
LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKFBBTDo6U2Vz
c2lvbklELCBib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3RyaW5nJiYgc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCBz
ZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sKTsKLSNlbmRpZgotCiAgICAgdm9pZCBmaXJlUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRUaW1lckltbWVkaWF0ZWx5KFBBTDo6U2Vzc2lvbklEKTsKIAog
ICAgIGNsYXNzIFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyIHsKQEAgLTU4MCw2ICs1NzcsNyBA
QCBwcml2YXRlOgogICAgIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlciBtX3dlYlNRTGl0ZURhdGFi
YXNlVHJhY2tlcjsKICAgICBSZWZQdHI8UHJvY2Vzc0Fzc2VydGlvbj4gbV9ob2xkaW5nTG9ja2Vk
RmlsZUFzc2VydGlvbjsKICNlbmRpZgorICAgIERhdGFiYXNlQXNzZXJ0aW9uU2NvcGUgbV9kYXRh
YmFzZUFzc2VydGlvblNjb3BlOwogCiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgU3RyaW5n
PiBtX2lkYkRhdGFiYXNlUGF0aHM7CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmUHRy
PFdlYklEQlNlcnZlcj4+IG1fd2ViSURCU2VydmVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJh
c2UuY3BwCmluZGV4IDU2OWZkYjJkZjhmNTNlYWJjZjE5MTgxMjQzMGFiNmZkYTY4MDI1NDAuLjcw
Yzk0OWJiMDEwZjczMjExNzYyNzhhMjQ2NWEwMDMyMGQ5ZjYzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3Rv
cmFnZURhdGFiYXNlLmNwcApAQCAtNzUsNyArNzUsNyBAQCBib29sIExvY2FsU3RvcmFnZURhdGFi
YXNlOjpvcGVuRGF0YWJhc2UoU2hvdWxkQ3JlYXRlRGF0YWJhc2Ugc2hvdWxkQ3JlYXRlRGF0YWJh
cwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFtX2RhdGFiYXNlLm9w
ZW4obV9kYXRhYmFzZVBhdGgpKSB7CisgICAgaWYgKCFtX2RhdGFiYXNlLm9wZW4obV9kYXRhYmFz
ZVBhdGgsIFNRTGl0ZURhdGFiYXNlOjpPcGVuTW9kZTo6UmVhZFdyaXRlQ3JlYXRlLCBTUUxpdGVE
YXRhYmFzZTo6SXNJbnRlcnJ1cHRhYmxlOjpZZXMpKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFp
bGVkIHRvIG9wZW4gZGF0YWJhc2UgZmlsZSAlcyBmb3IgbG9jYWwgc3RvcmFnZSIsIG1fZGF0YWJh
c2VQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lP
Uy5tbQppbmRleCA2NDk0YjVhNzk4YWY2OTA4MWVhM2Q3YTVhM2NjNTVlYzgyN2U0YmY0Li41ZDAw
MTBlMDJiMjQwMWU4NGY0NTU0Nzg5MmExNjkzMDQ0OTM1MzFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQpAQCAtMTAw
LDIxICsxMDAsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclNlcnZpY2VXb3JrZXJFbnRp
dGxlbWVudE92ZXJyaWRlKENvbXBsZXRpb25IYW5kbGVyPHZvaQogCiAjZW5kaWYgLy8gIVBMQVRG
T1JNKE1BQ0NBVEFMWVNUKQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRJc0hvbGRpbmdMb2Nr
ZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQotewotICAgIGlmICghaXNIb2xkaW5n
TG9ja2VkRmlsZXMpIHsKLSAgICAgICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbiA9IG51
bGxwdHI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobV9ob2xkaW5nTG9ja2Vk
RmlsZUFzc2VydGlvbiAmJiBtX2hvbGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uLT5pc1ZhbGlkKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFdlIHN5bmNocm9ub3VzbHkgdGFrZSBhIHByb2Nl
c3MgYXNzZXJ0aW9uIHdoZW4gYmVnaW5uaW5nIGEgU1FMaXRlIHRyYW5zYWN0aW9uIHNvIHRoYXQg
d2UgZG9uJ3QgZ2V0IHN1c3BlbmRlZAotICAgIC8vIHdoaWxlIGhvbGRpbmcgYSBsb2NrZWQgZmls
ZS4gV2Ugd291bGQgZ2V0IGtpbGxlZCBpZiBzdXNwZW5kZWQgd2hpbGUgaG9sZGluZyBsb2NrZWQg
ZmlsZXMuCi0gICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbiA9IFByb2Nlc3NBc3NlcnRp
b246OmNyZWF0ZShnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJOZXR3b3JrIFByb2Nlc3MgaXMgaG9s
ZGluZyBsb2NrZWQgZmlsZXMiX3MsIFByb2Nlc3NBc3NlcnRpb25UeXBlOjpGaW5pc2hUYXNrVW5p
bnRlcnJ1cHRhYmxlLCBQcm9jZXNzQXNzZXJ0aW9uOjpNb2RlOjpTeW5jKTsKLX0KLQogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRGF0YWJhc2VBc3NlcnRpb25TY29wZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhYmFzZUFzc2VydGlvblNjb3BlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yYTNlNDMwZjg3YjEyYTY2YmNjN2ZhOWNmYmE0MDcyYWQxZjMwNjkwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRGF0YWJhc2VBc3NlcnRpb25TY29wZS5jcHAKQEAg
LTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiRGF0YWJhc2VBc3NlcnRpb25TY29wZS5oIgorCisjaW5jbHVkZSAiUHJvY2Vzc0Fzc2VydGlv
bi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2UuaD4KKyNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworRGF0YWJhc2VBc3NlcnRpb25T
Y29wZTo6RGF0YWJhc2VBc3NlcnRpb25TY29wZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCisg
ICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fYXNzZXJ0aW9uUmVsZWFzZVRp
bWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGU6OmFzc2Vy
dGlvblJlbGVhc2VUaW1lckZpcmVkKQoreworICAgIFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZTo6
c2V0SW1wbCh0aGlzKTsKK30KKworRGF0YWJhc2VBc3NlcnRpb25TY29wZTo6fkRhdGFiYXNlQXNz
ZXJ0aW9uU2NvcGUoKQoreworICAgIFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZTo6c2V0SW1wbChu
dWxscHRyKTsKK30KKwordm9pZCBEYXRhYmFzZUFzc2VydGlvblNjb3BlOjpiZWdpbigpCit7Cisg
ICAgaWYgKG1fYXNzZXJ0aW9uICYmIG1fYXNzZXJ0aW9uLT5pc1ZhbGlkKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fYXNzZXJ0aW9uID0gUHJvY2Vzc0Fzc2VydGlvbjo6Y3JlYXRlKGdldEN1
cnJlbnRQcm9jZXNzSUQoKSwgbV9pZGVudGlmaWVyLCBQcm9jZXNzQXNzZXJ0aW9uVHlwZTo6Rmlu
aXNoVGFza1VuaW50ZXJydXB0YWJsZSwgUHJvY2Vzc0Fzc2VydGlvbjo6TW9kZTo6U3luYyk7Cit9
CisKK3ZvaWQgRGF0YWJhc2VBc3NlcnRpb25TY29wZTo6ZW5kKCkKK3sKKyAgICBtX2Fzc2VydGlv
blJlbGVhc2VUaW1lci5zdG9wKCk7CisgICAgCisgICAgYm9vbCBzaG91bGRSZWxlYXNlQXNzZXJ0
aW9uID0gdHJ1ZTsKKyAgICBmb3IgKGF1dG8mIGRhdGFiYXNlIDogbV9kYXRhYmFzZXMpIHsKKyAg
ICAgICAgaWYgKGRhdGFiYXNlLnRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKQorICAgICAgICAgICAg
c2hvdWxkUmVsZWFzZUFzc2VydGlvbiA9IGZhbHNlOworICAgIH0KKworICAgIGlmIChzaG91bGRS
ZWxlYXNlQXNzZXJ0aW9uKQorICAgICAgICBtX2Fzc2VydGlvblJlbGVhc2VUaW1lci5zdGFydE9u
ZVNob3QoMV9zKTsKK30KKwordm9pZCBEYXRhYmFzZUFzc2VydGlvblNjb3BlOjphZGREYXRhYmFz
ZShXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UpCit7CisgICAgbV9kYXRhYmFzZXMu
YWRkKCZkYXRhYmFzZSk7Cit9CisKK3ZvaWQgRGF0YWJhc2VBc3NlcnRpb25TY29wZTo6cmVtb3Zl
RGF0YWJhc2UoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQoreworICAgIG1fZGF0
YWJhc2VzLnJlbW92ZShkYXRhYmFzZSk7Cit9CisKK3ZvaWQgRGF0YWJhc2VBc3NlcnRpb25TY29w
ZTo6aW50ZXJydXB0KCkKK3sKKyAgICBpZiAobV9pbnRlcnJ1cHRlZCkKKyAgICAgICAgcmV0dXJu
OworICAgIG1faW50ZXJydXB0ZWQgPSB0cnVlOworCisgICAgV2ViQ29yZTo6U1FMaXRlTG9ja1Nj
b3BlOjpsb2NrKCk7CisgICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6IG1fZGF0YWJhc2VzKQorICAg
ICAgICBkYXRhYmFzZS5pbnRlcnJ1cHQoKTsKKworICAgIG1fYXNzZXJ0aW9uUmVsZWFzZVRpbWVy
LnN0b3AoKTsKKyAgICBtX2Fzc2VydGlvbiA9IG51bGxwdHI7Cit9CisKK3ZvaWQgRGF0YWJhc2VB
c3NlcnRpb25TY29wZTo6cmVzdW1lKCkKK3sKKyAgICBpZiAoIW1faW50ZXJydXB0ZWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1faW50ZXJydXB0ZWQgPSBmYWxzZTsKKyAgICBXZWJDb3JlOjpT
UUxpdGVMb2NrU2NvcGU6OnVubG9jaygpOworfQorCit2b2lkIERhdGFiYXNlQXNzZXJ0aW9uU2Nv
cGU6OmFzc2VydGlvblJlbGVhc2VUaW1lckZpcmVkKCkKK3sKKyAgICBXZWJDb3JlOjpTUUxpdGVM
b2NrU2NvcGU6OmxvY2soKTsKKyAgICBtX2Fzc2VydGlvbiA9IG51bGxwdHI7CisgICAgV2ViQ29y
ZTo6U1FMaXRlTG9ja1Njb3BlOjp1bmxvY2soKTsKK30KKworfSAvLyBuYW1lcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RhdGFiYXNlQXNzZXJ0aW9uU2NvcGUu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RhdGFiYXNlQXNzZXJ0aW9uU2NvcGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZWFlM2IyMjEyYjdjZmE4ZDhlODE2NjE3MWUxNTYwYjlmNzliODVkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRGF0YWJhc2VBc3NlcnRpb25TY29wZS5oCkBA
IC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIldl
YkNvcmUvU1FMaXRlTG9ja1Njb3BlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQ
cm9jZXNzQXNzZXJ0aW9uOworCitjbGFzcyBEYXRhYmFzZUFzc2VydGlvblNjb3BlIGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZUltcGwgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKERhdGFiYXNlQXNzZXJ0aW9uU2NvcGUpCitwdWJsaWM6CisgICAgZXhwbGljaXQgRGF0
YWJhc2VBc3NlcnRpb25TY29wZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpOworICAgIH5EYXRh
YmFzZUFzc2VydGlvblNjb3BlKCk7CisKKyAgICB2b2lkIGJlZ2luKCkgZmluYWw7CisgICAgdm9p
ZCBlbmQoKSBmaW5hbDsKKyAgICB2b2lkIGFkZERhdGFiYXNlKFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVEYXRhYmFzZShXZWJDb3JlOjpTUUxpdGVEYXRh
YmFzZSYpIGZpbmFsOworCisgICAgdm9pZCBpbnRlcnJ1cHQoKTsKKyAgICB2b2lkIHJlc3VtZSgp
OworCitwcml2YXRlOgorICAgIHZvaWQgYXNzZXJ0aW9uUmVsZWFzZVRpbWVyRmlyZWQoKTsKKwor
ICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CisgICAgUmVmUHRyPFByb2Nlc3NBc3NlcnRpb24+IG1f
YXNzZXJ0aW9uOworICAgIFJ1bkxvb3A6OlRpbWVyPERhdGFiYXNlQXNzZXJ0aW9uU2NvcGU+IG1f
YXNzZXJ0aW9uUmVsZWFzZVRpbWVyOworICAgIFdlYWtIYXNoU2V0PFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlPiBtX2RhdGFiYXNlczsKKyAgICBib29sIG1faW50ZXJydXB0ZWQgeyBmYWxzZSB9Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNw
cAppbmRleCBlYmY3MjEyNDIzZTljZDVlMTdhNDI3NWI1OWFhYjhkMTk4YzY5NWI4Li4wM2UxOTll
MTFiZjJhMDgxZDkwNGMyNmFmOWU4NmM4ODk2YmU3NGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1h
dFJlYWRlci5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NvdXJjZUJ1
ZmZlclBhcnNlcldlYk0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZpZGVvVHJhY2tQcml2YXRlLmg+
CiAjaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KKyNp
bmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KICNpbmNsdWRlIDx3dGYvTG9nZ2Vy
SGVscGVyLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFUcmFja1JlYWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFUcmFj
a1JlYWRlci5jcHAKaW5kZXggMWRjMWNhZTAzMDA4ZTBhMjBhNDRhYzczZDFhYTM3MjUzNTdmMjBm
YS4uMWQ5ZWY4ZjdiODQ1OWZiMDc0MDI3YTU3MDU4MmMwYTAxNWIyNDgzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhVHJhY2tSZWFk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9N
ZWRpYVRyYWNrUmVhZGVyLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIE9TU3RhdHVzIE1lZGlhVHJh
Y2tSZWFkZXI6OmNyZWF0ZUN1cnNvckF0TGFzdFNhbXBsZUluRGVjb2RlT3JkZXIoTVRQbHVnaW5T
YW1wbGVDCiAKIFdURkxvZ0NoYW5uZWwmIE1lZGlhVHJhY2tSZWFkZXI6OmxvZ0NoYW5uZWwoKSBj
b25zdAogewotICAgIHJldHVybiBXZWJDb3JlOjpMb2dNZWRpYTsKKyAgICByZXR1cm4gTG9nTWVk
aWE7CiB9CiAKIGNvbnN0IHZvaWQqIE1lZGlhVHJhY2tSZWFkZXI6Om5leHRTYW1wbGVDdXJzb3JM
b2dJZGVudGlmaWVyKHVpbnQ2NF90IGN1cnNvcklEKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CmluZGV4IDk5ZTk2NmM5MTM2YzRkZjkyMmY4OWYzZDFkMDM5N2E3ZmNhMTFmMTIuLmVkOTE3ZGZh
NTRiOGZiOGM2MzQ0NTExMzAxM2ZmNTAwNzVjOTExZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
QEAgLTE0MSw2ICsxNDEsNyBAQCBTaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5TWFjLm1tCiAKIFNoYXJlZC9BUElXZWJBcmNoaXZlLm1tCiBTaGFyZWQvQVBJV2Vi
QXJjaGl2ZVJlc291cmNlLm1tCitTaGFyZWQvRGF0YWJhc2VBc3NlcnRpb25TY29wZS5jcHAKIFNo
YXJlZC9Eb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tCiBTaGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZv
cm1hdGlvbi5jcHAKIFNoYXJlZC9WaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjQ1
NGZkNDUxNDRiZjBkMDY5ZDYwZTY2ZTMwY2NiYTk1NWM1NDk1MS4uZDlhNTNkOTAxMDFhYjVkMGYz
MGJkODgwZWRmMDA4NDBjYWFlYTkxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDc4LDYgKzE0NzgsNyBAQAogCQk5MzY4RUVERTIz
MDNBOTAyMDBCREIxMUEgLyogU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM2OEVFREMyMzAz
QThEODAwQkRCMTFBIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsg
fTsKIAkJOTM2OEVFREYyMzAzQTlFRDAwQkRCMTFBIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNjhF
RUREMjMwM0E4RDgwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmggKi87IH07
CiAJCTkzNkIwNTk4MjMwMzkwOTcwMDJGQzA2QiAvKiBTdG9yYWdlTWFuYWdlclNldC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM2QjA1OTUyMzAzOTAw
QjAwMkZDMDZCIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0LmggKi87IH07CisJCTkzNzA2RUZGMjY5Q0M5
OUEwMDJEQTEyNyAvKiBEYXRhYmFzZUFzc2VydGlvblNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y4RjBGNTI2OThCM0FCMDBBOUYzMzEgLyog
RGF0YWJhc2VBc3NlcnRpb25TY29wZS5oICovOyB9OwogCQk5MzczNUVCQjFDOTI5ODYzMDAzMzZG
QTcgLyogV0tQcmV2aWV3QWN0aW9uSXRlbUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzczNUVCQTFDOTI5ODYzMDAzMzZGQTcgLyogV0tQ
cmV2aWV3QWN0aW9uSXRlbUludGVybmFsLmggKi87IH07CiAJCTkzOTEwNzRGMUJGNkJDNjUwMDhD
MTdBRCAvKiBXS1ByZXZpZXdFbGVtZW50SW5mb0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzkxMDc0RTFCRjZCQzY1MDA4QzE3QUQgLyog
V0tQcmV2aWV3RWxlbWVudEluZm9JbnRlcm5hbC5oICovOyB9OwogCQk5MzkxRjJDQjEyMUI2N0FE
MDBFQkY3RTggLyogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MUYyODMxMjFCMzhGNTAwRUJGN0U4IC8q
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCAqLzsgfTsKQEAgLTQ5MzUsNiArNDkzNiw4IEBA
CiAJCTkzRTZBNEVEMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0hpdFRlc3RSZXN1bHQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNTQ5QjMxRTMxNzRCNzAwMEU3MjM5IC8qIFdLU25hcHNo
b3RDb25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU25h
cHNob3RDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjU0
OUI1MUUzMTc0REEwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLU25hcHNob3RDb25maWd1cmF0aW9u
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Y4RjBGNDI2OThCM0FCMDBBOUYz
MzEgLyogRGF0YWJhc2VBc3NlcnRpb25TY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRh
YmFzZUFzc2VydGlvblNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNG
OEYwRjUyNjk4QjNBQjAwQTlGMzMxIC8qIERhdGFiYXNlQXNzZXJ0aW9uU2NvcGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGF0YWJhc2VBc3NlcnRpb25TY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5NTBGMjg3RTI1MjQxNEU5MDBCNzRGMUMgLyogV0tNb3VzZURldmljZU9ic2VydmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLTW91c2VEZXZpY2VPYnNlcnZl
ci5oOyBwYXRoID0gaW9zL1dLTW91c2VEZXZpY2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5NTBGMjg3RjI1MjQxNEVBMDBCNzRGMUMgLyogV0tNb3VzZURldmljZU9i
c2VydmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tNb3Vz
ZURldmljZU9ic2VydmVyLm1tOyBwYXRoID0gaW9zL1dLTW91c2VEZXZpY2VPYnNlcnZlci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTU5MzY3NUQyNTJFNUUzMDAwRDNGMEEwIC8q
IFdLU3R5bHVzRGV2aWNlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gV0tTdHlsdXNEZXZpY2VPYnNlcnZlci5oOyBwYXRoID0gaW9zL1dLU3R5bHVzRGV2aWNlT2Jz
ZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY3NjcsNiArNjc3MCw4IEBA
CiAJCQkJNTEwNkQ3QkYxOEJEQkU3MzAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEu
Y3BwICovLAogCQkJCTUxMDZEN0MwMThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRl
eHREYXRhLmggKi8sCiAJCQkJOTlGNjQyRDIxRkFCRTM3ODAwOTYyMUU5IC8qIENvb3JkaW5hdGVT
eXN0ZW0uaCAqLywKKwkJCQk5M0Y4RjBGNDI2OThCM0FCMDBBOUYzMzEgLyogRGF0YWJhc2VBc3Nl
cnRpb25TY29wZS5jcHAgKi8sCisJCQkJOTNGOEYwRjUyNjk4QjNBQjAwQTlGMzMxIC8qIERhdGFi
YXNlQXNzZXJ0aW9uU2NvcGUuaCAqLywKIAkJCQk5OTAzNkFFODIzQTk3MDg3MDAwMEIwNkEgLyog
RGVidWdnYWJsZUluZm9EYXRhLmNwcCAqLywKIAkJCQk5OTAzNkFFNzIzQTk3MDg3MDAwMEIwNkEg
LyogRGVidWdnYWJsZUluZm9EYXRhLmggKi8sCiAJCQkJMEYxODlDQUIyNDc0OUYyRjAwRTU4RDgx
IC8qIERpc3BsYXlMaW5rT2JzZXJ2ZXJJRC5oICovLApAQCAtMTE5OTEsNiArMTE5OTYsNyBAQAog
CQkJCTU3NTk3RUJEMjE4MTg0OTAwMDM3RjkyNCAvKiBDdGFwQXV0aGVudGljYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTc1OTdFQjkyMTgxMUQ5QTAwMzdGOTI0IC8qIEN0YXBIaWREcml2ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTU3MERBQUNBMjMwMzg1RkQwMEU4RkMwNCAvKiBDdGFwTmZj
RHJpdmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzcwNkVGRjI2OUNDOTlBMDAyREExMjcgLyog
RGF0YWJhc2VBc3NlcnRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU1RjkxNzExQzU5
Njc2RTAwMjlFOTJEIC8qIERhdGFEZXRlY3Rpb25SZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBQzc1MzgwMTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5OTAzNkFFOTIzQTk3MDg3MDAwMEIwNkEgLyogRGVidWdnYWJsZUluZm9EYXRhLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9T
dG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRy
YWNrZXIuY3BwCmluZGV4IGVlYTAwMDQ0YmFmYmZiZjM1Y2VmODg2Njg5ZjQwOTU0YWQ5YzRmMjQu
Ljg0NzhjZmNlMDkwY2VmN2ExMzEyYjFiNjQwNjQ4OWVhMzdmNDVjOWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcApAQCAtMjksNiArMjksNyBA
QAogI2luY2x1ZGUgIlN0b3JhZ2VUcmFja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZVRy
YWNrZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZUZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgpAQCAtMzg1
LDEzICszODYsNiBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpkZWxldGVBbGxPcmlnaW5zKCkKICAg
ICB9KTsKIH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi1zdGF0aWMgdm9pZCB0cnVuY2F0
ZURhdGFiYXNlRmlsZShTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UpCi17Ci0gICAgc3FsaXRlM19m
aWxlX2NvbnRyb2woZGF0YWJhc2Uuc3FsaXRlM0hhbmRsZSgpLCAwLCBTUUxJVEVfVFJVTkNBVEVf
REFUQUJBU0UsIDApOwotfQotI2VuZGlmCi0KIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxl
dGVBbGxPcmlnaW5zKCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKQEAgLTQyOSw3
ICs0MjMsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlQWxsT3JpZ2lucygpCiAK
ICAgICBpZiAobV9kYXRhYmFzZS5pc09wZW4oKSkgewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgICAgIHRydW5jYXRlRGF0YWJhc2VGaWxlKG1fZGF0YWJhc2UpOworICAgICAgICBTUUxp
dGVGaWxlU3lzdGVtOjp0cnVuY2F0ZURhdGFiYXNlRmlsZShtX2RhdGFiYXNlKTsKICNlbmRpZgog
ICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7CiAgICAgfQpAQCAtNTQzLDcgKzUzNyw3IEBAIHZv
aWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5J
ZGVudGlmaWVyKQogCiAgICAgaWYgKHNob3VsZERlbGV0ZVRyYWNrZXJGaWxlcykgewogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIHRydW5jYXRlRGF0YWJhc2VGaWxlKG1fZGF0YWJh
c2UpOworICAgICAgICBTUUxpdGVGaWxlU3lzdGVtOjp0cnVuY2F0ZURhdGFiYXNlRmlsZShtX2Rh
dGFiYXNlKTsKICNlbmRpZgogICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7CiAjaWYgIVBMQVRG
T1JNKElPU19GQU1JTFkpCg==
</data>
<flag name="commit-queue"
          id="455600"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433381</attachid>
            <date>2021-07-12 17:47:07 -0700</date>
            <delta_ts>2021-07-13 12:07:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227887-20210712174706.patch</filename>
            <type>text/plain</type>
            <size>43197</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5ODU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQ1ZGU3M2RkZDIzMzUx
MmQ3ZmU0NzIxZTMzNWU4YTgyYWE5MmVhZC4uNDkzZDQzMTQ2OGYxNjdlZWYzNDM3NGFjZTIzMjUw
ZmM5MTAzMzhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTA3LTEyICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgZmlsZSBsb2NrcyBz
eW5jaHJvbm91c2x5IG9uIFByZXBhcmVUb1N1c3BlbmQgbWVzc2FnZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3ODg3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvdGVjdCBTUUxpdGUgQVBJIGNhbGxz
IHRoYXQgbWF5IGFjcXVpcmUgZGF0YWJhc2UgZmlsZSBsb2NrIHdpdGggU1FMaXRlTG9ja1Njb3Bl
LiBBIGdsb2JhbCBsb2NrIGlzIGhlbGQgYXQgd2hlbiAKKyAgICAgICAgU1FMaXRlTG9ja1Njb3Bl
IGlzIGNyZWF0ZWQgYW5kIHJlbGVhc2VkIHdoZW4gU1FMaXRlTG9ja1Njb3BlIGlzIGRlc3Ryb3ll
ZC4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6Om9wZW4pOiBBZGQgYSBuZXcg
cGFyYW1ldGVyIGludGVycnVwdGFibGUgdG8gaW5kaWNhdGUgaWYgdGhlIGRhdGFiYXNlIHdhbnQg
aXRzCisgICAgICAgIHRyYW5zYWN0aW9uIHRvIGJlIGFib3J0ZWQgb3IgY29tbWl0dGVkIG9uIGlu
dGVycnVwdC4KKyAgICAgICAgKFdlYkNvcmU6OndhbEF1dG9tYXRpY1RydW5jYXRpb25Ib29rKToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjp1c2VXQUxKb3VybmFsTW9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2U6OmludGVycnVwdCk6IFJlbGVhc2UgZmlsZSBsb2NrIGJ5IGludGVy
cnVwdGluZyBsb25nIHF1ZXJ5IGFuZCBlbmRpbmcgdHJhbnNhY3Rpb24uCisgICAgICAgICogcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0
ZUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6dHJ1
bmNhdGVEYXRhYmFzZUZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2Nv
cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZTo6c2V0SW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6OlNRTGl0ZUxvY2tTY29wZSk6
CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6On5TUUxpdGVMb2NrU2NvcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMaXRlTG9ja1Njb3BlOjphZGREYXRhYmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6OnJlbW92ZURhdGFiYXNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9zcWwvU1FMaXRlTG9ja1Njb3BlLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVt
ZW50OjpzdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudDo6c3RlcFdpdGhv
dXRMb2NrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50Lmg6CisKIDIw
MjEtMDctMTIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dCBjYW4ndCBkcmF3IHRleHQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
MWI3OGY2OGY1MjM4OTQ2NWE1YjFjMzI1ZTU3ZGI2MjlhYjU1ZTJhZC4uOGExMGU3N2YwMDAyNTA0
ZDcyOGQzOGEyYWVhYzc4ZGMzYTliYTA5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAy
MS0wNy0xMiAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9w
IGZpbGUgbG9ja3Mgc3luY2hyb25vdXNseSBvbiBQcmVwYXJlVG9TdXNwZW5kIG1lc3NhZ2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzg4NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gbmV0d29y
ayBwcm9jZXNzIGlzIGFib3V0IHRvIHN1c3BlbmQsIGl0IHNob3VsZCByZWxlYXNlIGFsbCBkYXRh
YmFzZSBmaWxlIGxvY2tzIGFzIHNvb24gYXMgcG9zc2libGUuIE91cgorICAgICAgICBjdXJyZW50
IGltcGxlbWVudGF0aW9uIGlzIEluZGV4ZWREQiByZWxlYXNlcyBsb2NrcyBieSBhYm9ydGluZyB0
cmFuc2FjdGlvbnMgc3luY2hyb25vdXNseSBvbiBQcmVwYXJlVG9TdXNwZW5kLAorICAgICAgICBh
bmQgTG9jYWxTdG9yYWdlIGFuZCBJVFAgc2NoZWR1bGVzIHN1c3BlbmQgdGFzayB0byBiYWNrZ3Jv
dW5kIHRocmVhZHMuIEl0J3MgcG9zc2libGUgdGhhdCBzdXNwZW5kIHRhc2sKKyAgICAgICAgZG9l
cyBub3QgZ2V0IHRvIHJ1biBiZWZvcmUgbmV0d29yayBwcm9jZXNzIGdldHMgc3VzcGVuZGVkIGFj
Y29yZGluZyB0byBjcmFzaCBsb2dzLCBzbyBsZXQncyBtYWtlIHRoZSBiZWhhdmlvcgorICAgICAg
ICBjb25zaXN0ZW50IGFjcm9zcyBhbGwgZGF0YWJhc2VzLCBhbmQgbWFrZSBzdXJlIG5ldHdvcmsg
cHJvY2VzcyByZWxlYXNlcyBsb2NrcyBxdWlja2x5IG9uIFByZXBhcmVUb1N1c3BlbmQuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnJlc3VtZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURh
dGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2U6Om9wZW5E
YXRhYmFzZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9T
Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0SXNIb2xkaW5nTG9ja2Vk
RmlsZXMpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9EYXRhYmFzZUFzc2VydGlvblNjb3Bl
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGU6OkRh
dGFiYXNlQXNzZXJ0aW9uU2NvcGUpOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZUFzc2VydGlv
blNjb3BlOjp+RGF0YWJhc2VBc3NlcnRpb25TY29wZSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFi
YXNlQXNzZXJ0aW9uU2NvcGU6OmJlZ2luKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VBc3Nl
cnRpb25TY29wZTo6ZW5kKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VBc3NlcnRpb25TY29w
ZTo6YWRkRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZUFzc2VydGlvblNjb3Bl
OjpyZW1vdmVEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uU2Nv
cGU6OmludGVycnVwdCk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGU6
OnJlc3VtZSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGU6OmFzc2Vy
dGlvblJlbGVhc2VUaW1lckZpcmVkKToKKyAgICAgICAgKiBTaGFyZWQvRGF0YWJhc2VBc3NlcnRp
b25TY29wZS5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVy
L01lZGlhRm9ybWF0UmVhZGVyLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0
UmVhZGVyL01lZGlhVHJhY2tSZWFkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVRyYWNr
UmVhZGVyOjpsb2dDaGFubmVsIGNvbnN0KToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIxLTA3LTEy
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cmV2ZXJ0aW5nIHIyNzk4MzUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDYyM2U3YjY1YmIyNzZm
MjE5YWU3NzM2MmNmOGZkMmU0YTUyMzUwYzIuLmU5YzlmZjQyOTBlMTgxZDU1OGM3OGI5ZjQ2ZDU1
MDQxYzAwNzBhNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEt
MDctMTIgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBm
aWxlIGxvY2tzIHN5bmNocm9ub3VzbHkgb24gUHJlcGFyZVRvU3VzcGVuZCBtZXNzYWdlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc4ODcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3Rv
cmFnZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6c3luY0Rl
bGV0ZUFsbE9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6c3luY0Rl
bGV0ZU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OnRydW5jYXRlRGF0YWJhc2VGaWxlKTogRGVs
ZXRlZC4KKwogMjAyMS0wNi0yMSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAog
ICAgICAgICBNYWtlIEluUHJvY2Vzc0lEQlNlcnZlciB1c2UgV29ya1F1ZXVlIGluc3RlYWQgb2Yg
VGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDNjYmZhNWFiNWE0YmY1ODQ0OTZhYjYxMzNjZTMwOGQ0
OTkyM2JhMDIuLjVmMWQ0NGUxZDM5NWY4NDg3NjQ0ZTQ2MTQ4YTc4ZDRhZWRjMTg1M2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CkBAIC0yMTg4LDYgKzIxODgsNyBAQCBwbGF0Zm9ybS9zcWwvU1FMaXRlQXV0aG9y
aXplci5jcHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKIHBsYXRmb3JtL3NxbC9T
UUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5j
cHAKK3BsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2NvcGUuY3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRl
U3RhdGVtZW50LmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3Bl
LmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGUyYTJmOThhNWIx
YWE2Y2JlOWY3NzA2YzUxMDAxN2M1OGY0NGU0Y2IuLmRjMjczZDAzMWMyY2M2YjBjOGNkOGYyN2M3
NDhhOWI0MGExZDFmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTI5MzEsNiArMjkzMSw3IEBACiAJCTkzRjZCODFGMjU2N0Ew
OEMwMEEwODQ4OCAvKiBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y2QjgxQzI1Njc5Rjcw
MDBBMDg0ODggLyogU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjZCODIyMjU2N0E2
NTYwMEEwODQ4OCAvKiBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjZCODFCMjU2NzlGNkYwMEEw
ODQ4OCAvKiBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Y2RjFFRTEyN0Y3MEIxMDA1NUNC
MDYgLyogV2ViR0xDb250ZXh0RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzRjZGMUVCMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRF
dmVudC5oICovOyB9OworCQk5M0Y4RjBGMzI2OTgyNjEzMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Nj
b3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y4
RjBGMTI2OTgyNjEyMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGOTI1NDMwRjdFRjVCODAwN0Uz
N0M5IC8qIFJhZGlvQnV0dG9uR3JvdXBzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0Y5MjU0MTBGN0VGNUI4MDA3RTM3QzkgLyogUmFkaW9CdXR0b25H
cm91cHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5M0Y5QjZFMTBCQTBGQjcyMDA4NTQwNjQgLyogSlNDb21tZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y5QjZERjBCQTBGQjcyMDA4NTQwNjQg
LyogSlNDb21tZW50LmggKi87IH07CiAJCTkzRjlCN0ExMEJBNjAzMjYwMDg1NDA2NCAvKiBKU0NE
QVRBU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNGOUI3OUYwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmggKi87IH07CkBA
IC0xMTgzNCw2ICsxMTgzNSw4IEBACiAJCTkzRjhCMzA1MEEzMDBGRTEwMEY2MUFCOCAvKiBDb2Rl
R2VuZXJhdG9yLnBtICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IENvZGVHZW5l
cmF0b3IucG07IHBhdGggPSBzY3JpcHRzL0NvZGVHZW5lcmF0b3IucG07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzRjhCMzA2MEEzMDBGRUEwMEY2MUFCOCAvKiBDb2RlR2VuZXJhdG9y
SlMucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gQ29kZUdlbmVyYXRvckpT
LnBtOyBwYXRoID0gc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHdyYXBzTGluZXMgPSAwOyB9OwogCQk5M0Y4QjMwNzBBMzAwRkVBMDBGNjFBQjggLyog
Z2VuZXJhdGUtYmluZGluZ3MucGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0g
ImdlbmVyYXRlLWJpbmRpbmdzLnBsIjsgcGF0aCA9ICJzY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdz
LnBsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNGOEYwRUYyNjk4MjYxMjAwQTlG
MzMxIC8qIFNRTGl0ZUxvY2tTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTUUxpdGVMb2NrU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5M0Y4RjBGMTI2OTgyNjEyMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTGl0ZUxvY2tTY29wZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5M0Y5MjU0MTBGN0VGNUI4MDA3RTM3QzkgLyogUmFkaW9CdXR0b25H
cm91cHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFkaW9CdXR0b25Hcm91
cHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGOTI1NDIwRjdFRjVCODAwN0Uz
N0M5IC8qIFJhZGlvQnV0dG9uR3JvdXBzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJhZGlvQnV0dG9uR3JvdXBzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNGOUI2REUwQkEwRkI3MjAwODU0MDY0IC8qIEpTQ29tbWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NvbW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTg1MzUsNiArMTg1MzgsOCBAQAogCQkJCTdFNDc0RTFCMTI0OTRE
QzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCAqLywKIAkJCQlCNUE2
ODQyMzBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5jcHAgKi8sCiAJCQkJQjVB
Njg0MjEwRkZBQkU5ODAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uaCAqLywKKwkJCQk5M0Y4
RjBFRjI2OTgyNjEyMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmNwcCAqLywKKwkJCQk5M0Y4
RjBGMTI2OTgyNjEyMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmggKi8sCiAJCQkJMUEyMjQ2
NDUwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZVN0YXRlbWVudC5jcHAgKi8sCiAJCQkJMUEyMjQ2
NDYwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZVN0YXRlbWVudC5oICovLAogCQkJCUVCRTVCMjI3
MjQ1QTI5Q0YwMDNBNUE4OCAvKiBTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZS5jcHAgKi8s
CkBAIC0zNTM4NSw2ICszNTM5MCw3IEBACiAJCQkJNTEyQkRCNEIxQzQ1NkZGQTAwNjQ5NERGIC8q
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExRUMxMzAxQzUw
QUJGNTAwMzJGOTgzIC8qIFNRTGl0ZUlEQkN1cnNvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEx
RUMxMkMxQzUwQUJCRjAwMzJGOTgzIC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5M0Y4RjBGMzI2OTgyNjEzMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTIyNDY0QzBDQzk4RERCMDBDMDUyNDAgLyogU1FMaXRlU3Rh
dGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFQkU1QjIyNjI0NUEyNkVGMDAzQTVBODggLyog
U1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjI0
NjRFMENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAppbmRl
eCBhMTExMDI1NjgxZTQ2OTMxMjNmYmM4Y2I0OTBhODM3MGRiMzljMTgzLi5iNTgzYzY2MDk0ZWQ2
MDVhNTkwMjNjYzUzZDk2OGYzNWMyYTg0YWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJN
ZW1vcnlSZWxlYXNlLmgiCiAjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5j
bHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIlNRTGl0ZUxvY2tTY29wZS5oIgog
I2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUg
PHNxbGl0ZTMuaD4KQEAgLTg4LDcgKzg5LDcgQEAgU1FMaXRlRGF0YWJhc2U6On5TUUxpdGVEYXRh
YmFzZSgpCiAgICAgY2xvc2UoKTsKIH0KIAotYm9vbCBTUUxpdGVEYXRhYmFzZTo6b3Blbihjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBPcGVuTW9kZSBvcGVuTW9kZSkKK2Jvb2wgU1FMaXRlRGF0YWJh
c2U6Om9wZW4oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgT3Blbk1vZGUgb3Blbk1vZGUsIElzSW50
ZXJydXB0YWJsZSBpbnRlcnJ1cHRhYmxlKQogewogICAgIGluaXRpYWxpemVTUUxpdGVJZk5lY2Vz
c2FyeSgpOwogCkBAIC0xMTQsNyArMTE1LDE0IEBAIGJvb2wgU1FMaXRlRGF0YWJhc2U6Om9wZW4o
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgT3Blbk1vZGUgb3Blbk1vZGUpCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogCi0gICAgICAgIG1fb3BlbkVycm9yID0gc3FsaXRlM19vcGVuX3Yy
KEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlbmFtZSkuZGF0YSgpLCAm
bV9kYiwgZmxhZ3MsIG51bGxwdHIpOworICAgICAgICB7CisgICAgICAgICAgICBTUUxpdGVMb2Nr
U2NvcGUgbG9ja1Njb3BlOworICAgICAgICAgICAgbV9vcGVuRXJyb3IgPSBzcWxpdGUzX29wZW5f
djIoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVuYW1lKS5kYXRhKCks
ICZtX2RiLCBmbGFncywgbnVsbHB0cik7CisgICAgICAgICAgICBtX2ludGVycnVwdGFibGUgPSBp
bnRlcnJ1cHRhYmxlOworICAgICAgICAgICAgaWYgKG1fb3BlbkVycm9yID09IFNRTElURV9PSykK
KyAgICAgICAgICAgICAgICBsb2NrU2NvcGUuYWRkRGF0YWJhc2UoKnRoaXMpOworICAgICAgICB9
CisKICAgICAgICAgaWYgKG1fb3BlbkVycm9yICE9IFNRTElURV9PSykgewogICAgICAgICAgICAg
bV9vcGVuRXJyb3JNZXNzYWdlID0gbV9kYiA/IHNxbGl0ZTNfZXJybXNnKG1fZGIpIDogInNxbGl0
ZV9vcGVuIHJldHVybmVkIG51bGwiOwogICAgICAgICAgICAgTE9HX0VSUk9SKCJTUUxpdGUgZGF0
YWJhc2UgZmFpbGVkIHRvIGxvYWQgZnJvbSAlc1xuQ2F1c2UgLSAlcyIsIGZpbGVuYW1lLmFzY2lp
KCkuZGF0YSgpLApAQCAtMTY3LDcgKzE3NSwxMSBAQCBzdGF0aWMgaW50IHdhbEF1dG9tYXRpY1Ry
dW5jYXRpb25Ib29rKHZvaWQqIGNvbnRleHQsIHNxbGl0ZTMqIGRiLCBjb25zdCBjaGFyKiBkYgog
CiAgICAgaWYgKHdhbFBhZ2VDb3VudCA+PSBjaGVja3BvaW50VGhyZXNob2xkKSB7CiAgICAgICAg
IGludCBuZXdXYWxQYWdlQ291bnQgPSAwOwotICAgICAgICBpbnQgcmVzdWx0ID0gc3FsaXRlM193
YWxfY2hlY2twb2ludF92MihkYiwgZGJOYW1lLCBTUUxJVEVfQ0hFQ0tQT0lOVF9UUlVOQ0FURSwg
Jm5ld1dhbFBhZ2VDb3VudCwgbnVsbHB0cik7CisgICAgICAgIGludCByZXN1bHQ7CisgICAgICAg
IHsKKyAgICAgICAgICAgIFNRTGl0ZUxvY2tTY29wZSBsb2NrU2NvcGU7CisgICAgICAgICAgICBy
ZXN1bHQgPSBzcWxpdGUzX3dhbF9jaGVja3BvaW50X3YyKGRiLCBkYk5hbWUsIFNRTElURV9DSEVD
S1BPSU5UX1RSVU5DQVRFLCAmbmV3V2FsUGFnZUNvdW50LCBudWxscHRyKTsKKyAgICAgICAgfQog
CiAjaWYgTE9HX0RJU0FCTEVECiAgICAgICAgIFVOVVNFRF9WQVJJQUJMRShyZXN1bHQpOwpAQCAt
MTk0LDcgKzIwNiw2IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmVuYWJsZUF1dG9tYXRpY1dBTFRy
dW5jYXRpb24oKQogCiB2b2lkIFNRTGl0ZURhdGFiYXNlOjp1c2VXQUxKb3VybmFsTW9kZSgpCiB7
Ci0gICAgbV91c2VXQUwgPSB0cnVlOwogICAgIHsKICAgICAgICAgYXV0byB3YWxTdGF0ZW1lbnQg
PSBwcmVwYXJlU3RhdGVtZW50KCJQUkFHTUEgam91cm5hbF9tb2RlPVdBTDsiX3MpOwogICAgICAg
ICBpZiAod2FsU3RhdGVtZW50ICYmIHdhbFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cp
IHsKQEAgLTIzMiwxMiArMjQzLDExIEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmNsb3NlKFNob3Vs
ZFNldEVycm9yU3RhdGUgc2hvdWxkU2V0RXJyb3JTdGF0ZSkKICAgICAgICAgfQogCiAgICAgICAg
IGludCBjbG9zZVJlc3VsdDsKLSAgICAgICAgaWYgKG1fdXNlV0FMKSB7Ci0gICAgICAgICAgICAv
LyBDbG9zZSBpbiB0aGUgc2NvcGUgb2YgY291bnRlciBhcyBpdCBtYXkgYWNxdWlyZSBsb2NrIG9m
IGRhdGFiYXNlLgotICAgICAgICAgICAgU1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0Nv
dW50ZXIgdHJhbnNhY3Rpb25Db3VudGVyOwotICAgICAgICAgICAgY2xvc2VSZXN1bHQgPSBzcWxp
dGUzX2Nsb3NlKGRiKTsKLSAgICAgICAgfSBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIFNR
TGl0ZUxvY2tTY29wZSBsb2NrU2NvcGU7CiAgICAgICAgICAgICBjbG9zZVJlc3VsdCA9IHNxbGl0
ZTNfY2xvc2UoZGIpOworICAgICAgICAgICAgbG9ja1Njb3BlLnJlbW92ZURhdGFiYXNlKCp0aGlz
KTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmIChjbG9zZVJlc3VsdCAhPSBTUUxJVEVfT0spCiAg
ICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTUUxEYXRhYmFzZSwgIlNRTGl0ZURhdGFiYXNl
OjpjbG9zZTogRmFpbGVkIHRvIGNsb3NlIGRhdGFiYXNlICglZCkgLSAle3B1YmxpY31zIiwgY2xv
c2VSZXN1bHQsIGxhc3RFcnJvck1zZygpKTsKQEAgLTQ1OCw4ICs0NjgsMTUgQEAgaW50IFNRTGl0
ZURhdGFiYXNlOjpydW5JbmNyZW1lbnRhbFZhY3V1bUNvbW1hbmQoKQogdm9pZCBTUUxpdGVEYXRh
YmFzZTo6aW50ZXJydXB0KCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhYmFzZUNsb3Np
bmdNdXRleCB9OwotICAgIGlmIChtX2RiKQotICAgICAgICBzcWxpdGUzX2ludGVycnVwdChtX2Ri
KTsKKyAgICAKKyAgICBpZiAoIW1fZGIpCisgICAgICAgIHJldHVybjsKKworICAgIHNxbGl0ZTNf
aW50ZXJydXB0KG1fZGIpOworCisgICAgQVNDSUlMaXRlcmFsIHF1ZXJ5U3RyaW5nID0gbV9pbnRl
cnJ1cHRhYmxlID09IElzSW50ZXJydXB0YWJsZTo6WWVzID8gIkNPTU1JVCJfcyA6ICJST0xMQkFD
SyJfczsKKyAgICBpZiAoYXV0byBxdWVyeSA9IHByZXBhcmVTdGF0ZW1lbnQocXVlcnlTdHJpbmcp
KQorICAgICAgICBxdWVyeS0+c3RlcFdpdGhvdXRMb2NrKCk7CiB9CiAKIGludDY0X3QgU1FMaXRl
RGF0YWJhc2U6Omxhc3RJbnNlcnRSb3dJRCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVEYXRhYmFzZS5oCmluZGV4IDRiMjJjOGZlNjhlMzVmYmRkMDk3MjU4NjhjNGM5YTBl
NWNhYjJjZjAuLjA5Y2YwZmFmMGEzNjY2MzUyZGRhY2Y0ZGJmMWMyODU4OWVhMmEwMzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCkBAIC01Nyw3ICs1
Nyw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB+U1FMaXRlRGF0YWJhc2UoKTsKIAog
ICAgIGVudW0gY2xhc3MgT3Blbk1vZGUgeyBSZWFkT25seSwgUmVhZFdyaXRlLCBSZWFkV3JpdGVD
cmVhdGUgfTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZW4oY29uc3QgU3RyaW5nJiBmaWxl
bmFtZSwgT3Blbk1vZGUgPSBPcGVuTW9kZTo6UmVhZFdyaXRlQ3JlYXRlKTsKKyAgICBlbnVtIGNs
YXNzIElzSW50ZXJydXB0YWJsZSA6IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBvcGVuKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIE9wZW5Nb2RlID0gT3Blbk1vZGU6
OlJlYWRXcml0ZUNyZWF0ZSwgSXNJbnRlcnJ1cHRhYmxlID0gSXNJbnRlcnJ1cHRhYmxlOjpObyk7
CiAgICAgYm9vbCBpc09wZW4oKSBjb25zdCB7IHJldHVybiBtX2RiOyB9CiAgICAgZW51bSBjbGFz
cyBTaG91bGRTZXRFcnJvclN0YXRlIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNsb3NlKFNob3VsZFNldEVycm9yU3RhdGUgPSBTaG91bGRTZXRFcnJvclN0YXRl
OjpZZXMpOwpAQCAtMTgxLDggKzE4Miw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjphdG9taWM8dW5z
aWduZWQ+IG1fc3RhdGVtZW50Q291bnQgeyAwIH07CiAjZW5kaWYKIAotICAgIGJvb2wgbV91c2VX
QUwgeyBmYWxzZSB9OwotCiAgICAgTG9jayBtX2F1dGhvcml6ZXJMb2NrOwogICAgIFJlZlB0cjxE
YXRhYmFzZUF1dGhvcml6ZXI+IG1fYXV0aG9yaXplciBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fYXV0
aG9yaXplckxvY2spOwogCkBAIC0xOTMsNiArMTkyLDggQEAgcHJpdmF0ZToKIAogICAgIGludCBt
X29wZW5FcnJvciB7IFNRTElURV9FUlJPUiB9OwogICAgIENTdHJpbmcgbV9vcGVuRXJyb3JNZXNz
YWdlOworCisgICAgSXNJbnRlcnJ1cHRhYmxlIG1faW50ZXJydXB0YWJsZSB7IElzSW50ZXJydXB0
YWJsZTo6Tm8gfTsKIH07CiAKIGlubGluZSB2b2lkIFNRTGl0ZURhdGFiYXNlOjppbmNyZW1lbnRT
dGF0ZW1lbnRDb3VudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
RmlsZVN5c3RlbS5jcHAKaW5kZXggNzZlNDVhZjM0ZWQwOTNmZDlmMjc2ZGQ1ZDRiOTIyYTQxNjM0
ZDlhZS4uOGI5YjMyMWRjNjQ4MTAwZmNiZjRjNWMyMmY1MGYxNGIxNWEzMTg4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcApAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIlNRTGl0ZUZpbGVTeXN0ZW0uaCIKIAogI2luY2x1ZGUgIlNR
TGl0ZURhdGFiYXNlLmgiCisjaW5jbHVkZSAiU1FMaXRlTG9ja1Njb3BlLmgiCiAjaW5jbHVkZSAi
U1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4K
ICNpbmNsdWRlIDxzcWxpdGUzLmg+CkBAIC05NCw2ICs5NSw3IEBAIGJvb2wgU1FMaXRlRmlsZVN5
c3RlbTo6ZGVsZXRlRGF0YWJhc2VGaWxlKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6dHJ1bmNhdGVEYXRhYmFz
ZUZpbGUoc3FsaXRlMyogZGF0YWJhc2UpCiB7CisgICAgU1FMaXRlTG9ja1Njb3BlIGxvY2tTY29w
ZTsKICAgICByZXR1cm4gc3FsaXRlM19maWxlX2NvbnRyb2woZGF0YWJhc2UsIDAsIFNRTElURV9U
UlVOQ0FURV9EQVRBQkFTRSwgMCkgPT0gU1FMSVRFX09LOwogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlTG9ja1Njb3BlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2NvcGUuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4
NWI3OTMyZjBkM2IxYjllZjMyNGM5ZWRjMWQ0NzdlNDM1N2ZkN2MKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlTG9ja1Njb3BlLmNwcApAQCAtMCww
ICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNR
TGl0ZUxvY2tTY29wZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBMb2NrIHNj
b3BlTG9jazsKK3N0YXRpYyBTUUxpdGVMb2NrU2NvcGVJbXBsKiBzX2ltcGwgeyBudWxscHRyIH07
CisKK3ZvaWQgU1FMaXRlTG9ja1Njb3BlOjpzZXRJbXBsKFNRTGl0ZUxvY2tTY29wZUltcGwqIGlt
cGwpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjb3BlTG9jayB9OworICAgIHNfaW1wbCA9IGlt
cGw7Cit9CisKK3ZvaWQgU1FMaXRlTG9ja1Njb3BlOjpsb2NrKCkgV1RGX0lHTk9SRVNfVEhSRUFE
X1NBRkVUWV9BTkFMWVNJUworeworICAgIHNjb3BlTG9jay5sb2NrKCk7Cit9CisKK3ZvaWQgU1FM
aXRlTG9ja1Njb3BlOjp1bmxvY2soKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZU0lT
Cit7CisgICAgc2NvcGVMb2NrLnVubG9jaygpOworfQorCitTUUxpdGVMb2NrU2NvcGU6OlNRTGl0
ZUxvY2tTY29wZSgpCit7CisgICAgc2NvcGVMb2NrLmxvY2soKTsKKyAgICBpZiAoc19pbXBsKQor
ICAgICAgICBzX2ltcGwtPmJlZ2luKCk7Cit9CisKK1NRTGl0ZUxvY2tTY29wZTo6flNRTGl0ZUxv
Y2tTY29wZSgpCit7CisgICAgaWYgKHNfaW1wbCkKKyAgICAgICAgc19pbXBsLT5lbmQoKTsKKyAg
ICBzY29wZUxvY2sudW5sb2NrKCk7Cit9CisKK3ZvaWQgU1FMaXRlTG9ja1Njb3BlOjphZGREYXRh
YmFzZShTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UpCit7CisgICAgaWYgKHNfaW1wbCkKKyAgICAg
ICAgc19pbXBsLT5hZGREYXRhYmFzZShkYXRhYmFzZSk7Cit9CisKK3ZvaWQgU1FMaXRlTG9ja1Nj
b3BlOjpyZW1vdmVEYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UpCit7CisgICAgaWYg
KHNfaW1wbCkKKyAgICAgICAgc19pbXBsLT5yZW1vdmVEYXRhYmFzZShkYXRhYmFzZSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVMb2NrU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVMb2NrU2NvcGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MjIxZTZkOWZiOGNhYzEyNWIwMTQ3ODgxMTZm
NDE0ZDAyZTBlM2UyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZUxvY2tTY29wZS5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTUUxpdGVEYXRhYmFzZTsK
K2NsYXNzIFNRTGl0ZVRyYW5zYWN0aW9uOworCitjbGFzcyBTUUxpdGVMb2NrU2NvcGVJbXBsIHsK
K3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TUUxpdGVMb2NrU2NvcGVJbXBsKCkgPSBkZWZhdWx0Owor
CisgICAgdmlydHVhbCB2b2lkIGJlZ2luKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmQoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZERhdGFiYXNlKFNRTGl0ZURhdGFiYXNlJikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYpID0gMDsKK307
CisKK2NsYXNzIFNRTGl0ZUxvY2tTY29wZSB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBPUlQg
c3RhdGljIHZvaWQgc2V0SW1wbChTUUxpdGVMb2NrU2NvcGVJbXBsKik7CisgICAgV0VCQ09SRV9F
WFBPUlQgc3RhdGljIHZvaWQgbG9jaygpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lk
IHVubG9jaygpOworCisgICAgU1FMaXRlTG9ja1Njb3BlKCk7CisgICAgflNRTGl0ZUxvY2tTY29w
ZSgpOworCisgICAgdm9pZCBhZGREYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYpOworICAgIHZvaWQg
cmVtb3ZlRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmKTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5j
cHAKaW5kZXggYjA4NDllNmY4MDhjYTM4MGIwOGM2Mjc0YjA0ZDE0OWNjMDMzYzA4Ny4uYjM3MWNk
YjRlNWIyZjJkYzBkNmFiNmFiN2VjNDU3MWY1ZTI2YmRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTUUxWYWx1ZS5oIgorI2luY2x1ZGUgIlNR
TGl0ZUxvY2tTY29wZS5oIgogI2luY2x1ZGUgPHNxbGl0ZTMuaD4KICNpbmNsdWRlIDx3dGYvQXNz
ZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CkBAIC02Niw2ICs2NywyMiBAQCBp
bnQgU1FMaXRlU3RhdGVtZW50OjpzdGVwKCkKIHsKICAgICBMb2NrZXIgZGF0YWJhc2VMb2NrIHsg
bV9kYXRhYmFzZS5kYXRhYmFzZU11dGV4KCkgfTsKIAorICAgIGludCBlcnJvcjsKKyAgICB7Cisg
ICAgICAgIFNRTGl0ZUxvY2tTY29wZSBsb2NrU2NvcGU7CisgICAgICAgIGVycm9yID0gc3FsaXRl
M19zdGVwKG1fc3RhdGVtZW50KTsKKyAgICB9CisKKyAgICBpZiAoZXJyb3IgIT0gU1FMSVRFX0RP
TkUgJiYgZXJyb3IgIT0gU1FMSVRFX1JPVykKKyAgICAgICAgTE9HKFNRTERhdGFiYXNlLCAic3Fs
aXRlM19zdGVwIGZhaWxlZCAoJWkpXG5FcnJvciAtICVzIiwgZXJyb3IsIHNxbGl0ZTNfZXJybXNn
KG1fZGF0YWJhc2Uuc3FsaXRlM0hhbmRsZSgpKSk7CisKKyAgICByZXR1cm4gZXJyb3I7Cit9CisK
K2ludCBTUUxpdGVTdGF0ZW1lbnQ6OnN0ZXBXaXRob3V0TG9jaygpCit7CisgICAgTG9ja2VyIGRh
dGFiYXNlTG9jayB7IG1fZGF0YWJhc2UuZGF0YWJhc2VNdXRleCgpIH07CisKICAgICBpbnQgZXJy
b3IgPSBzcWxpdGUzX3N0ZXAobV9zdGF0ZW1lbnQpOwogICAgIGlmIChlcnJvciAhPSBTUUxJVEVf
RE9ORSAmJiBlcnJvciAhPSBTUUxJVEVfUk9XKQogICAgICAgICBMT0coU1FMRGF0YWJhc2UsICJz
cWxpdGUzX3N0ZXAgZmFpbGVkICglaSlcbkVycm9yIC0gJXMiLCBlcnJvciwgc3FsaXRlM19lcnJt
c2cobV9kYXRhYmFzZS5zcWxpdGUzSGFuZGxlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaAppbmRleCBjZjJmMTIwZjJlNzUzYWQ4ZDEzMTcwZmQw
ZDg3MDAxNjlkZWJjMTU1Li44YWNmZDY5MmY1ZWQzZTI4NDg3OTdjNWNhMWM5ODBiODk4ZTQxYmNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oCkBA
IC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBiaW5k
UGFyYW1ldGVyQ291bnQoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGludCBzdGVwKCk7
CisgICAgaW50IHN0ZXBXaXRob3V0TG9jaygpOwogICAgIFdFQkNPUkVfRVhQT1JUIGludCByZXNl
dCgpOwogICAgIAogICAgIC8vIHN0ZXBzIGFuZCBmaW5hbGl6ZXMgdGhlIHF1ZXJ5LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCBhZWEy
ZmFhNThhMTU4MWYwMGJmNTZiY2VlZWQxNzdiNDRhNDM2MDk2Li44Y2FjNjk3NjA3NDNlMjFkODcy
OWQyYjY1Yzk4NTc0Y2Y0MDBmYTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkF1dGhl
bnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkF1eGlsaWFyeVByb2Nlc3NNZXNzYWdlcy5o
IgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUFzc2VydGlv
blNjb3BlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWQuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5
TWVzc2FnZXMuaCIKICNpZiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQpA
QCAtMTU4LDkgKzE1OSw3IEBAIE5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2VzcyhBdXhpbGlh
cnlQcm9jZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1lCiAjaWYgRU5BQkxFKENP
TlRFTlRfRVhURU5TSU9OUykKICAgICAsIG1fbmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIo
KnRoaXMpCiAjZW5kaWYKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICwgbV93ZWJTUUxp
dGVEYXRhYmFzZVRyYWNrZXIoW3RoaXNdKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpIHsgc2V0
SXNIb2xkaW5nTG9ja2VkRmlsZXMoaXNIb2xkaW5nTG9ja2VkRmlsZXMpOyB9KQotI2VuZGlmCisg
ICAgLCBtX2RhdGFiYXNlQXNzZXJ0aW9uU2NvcGUoIk5ldHdvcmsgUHJvY2VzcyBpcyBob2xkaW5n
IGxvY2tlZCBmaWxlcyIpCiAgICAgLCBtX21lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KGNyZWF0
ZU1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KCp0aGlzKSkKIHsKICAgICBOZXR3b3JrUHJvY2Vz
c1BsYXRmb3JtU3RyYXRlZ2llczo6aW5pdGlhbGl6ZSgpOwpAQCAtMjIxNSwxMiArMjIxNCw2IEBA
IHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25J
bW1pbmVudCwgQ29tcGxldGlvbkhhbmRsCiB7CiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3Bl
bnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCksIGlzU3VzcGVu
c2lvbkltbWluZW50PSVkIiwgdGhpcywgaXNTdXNwZW5zaW9uSW1taW5lbnQpOwogCi0jaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBmb3IgKGF1dG8mIHNlcnZlciA6IG1fd2ViSURCU2VydmVy
cy52YWx1ZXMoKSkKLSAgICAgICAgc2VydmVyLT5zdXNwZW5kKCk7Ci0gICAgbV9zaG91bGRTdXNw
ZW5kSURCU2VydmVyID0gdHJ1ZTsKLSNlbmRpZgotCiAgICAgbG93TWVtb3J5SGFuZGxlcihDcml0
aWNhbDo6WWVzKTsKIAogICAgIFJlZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNrQWdn
cmVnYXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFt0aGlzLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewpAQCAtMjIyOCwx
MCArMjIyMSw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoYm9vbCBp
c1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRsCiAgICAgICAgIFVOVVNFRF9WQVJJ
QUJMRSh0aGlzKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKLSAgICAK
LSNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6c3VzcGVuZChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwotI2Vu
ZGlmCiAKICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChhdXRvJiBuZXR3b3JrU2Vzc2lv
bikgewogICAgICAgICBwbGF0Zm9ybUZsdXNoQ29va2llcyhuZXR3b3JrU2Vzc2lvbi5zZXNzaW9u
SUQoKSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKQEAgLTIyNDcsNyArMjIzNiw3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1p
bmVudCwgQ29tcGxldGlvbkhhbmRsCiAgICAgfQogI2VuZGlmCiAKLSAgICBtX3N0b3JhZ2VNYW5h
Z2VyU2V0LT5zdXNwZW5kKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CisgICAgbV9kYXRhYmFz
ZUFzc2VydGlvblNjb3BlLmludGVycnVwdCgpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjph
cHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgpCkBAIC0yMjcwLDIyICsyMjU5LDEzIEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZSgpCiB7CiAgICAgZm9yIChhdXRvJiBjb25uZWN0aW9u
IDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMudmFsdWVzKCkpCiAgICAgICAgIGNvbm5lY3Rpb24t
PmVuZFN1c3BlbnNpb24oKTsKLQotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXN1bWUoKTsKLSNlbmRpZgog
ICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBmb3IgKGF1dG8mIHNlcnZlciA6
IG1fc3dTZXJ2ZXJzLnZhbHVlcygpKQogICAgICAgICBzZXJ2ZXItPmVuZFN1c3BlbnNpb24oKTsK
ICNlbmRpZgotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgZm9yIChhdXRvJiBzZXJ2ZXIg
OiBtX3dlYklEQlNlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgIHNlcnZlci0+cmVzdW1lKCk7Ci0g
ICAgbV9zaG91bGRTdXNwZW5kSURCU2VydmVyID0gZmFsc2U7Ci0jZW5kaWYKIAotICAgIG1fc3Rv
cmFnZU1hbmFnZXJTZXQtPnJlc3VtZSgpOworICAgIG1fZGF0YWJhc2VBc3NlcnRpb25TY29wZS5y
ZXN1bWUoKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlZmV0Y2hETlMoY29uc3QgU3Ry
aW5nJiBob3N0bmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuaAppbmRleCA3OTQ4MDk3YWEzZGMzODZhMmZkNDFmYWQ2MjNiM2NlY2RmOGQ3ZTRhLi42
NWI2Yzk1ODU3ZjMxZTYxNjFhNDU4MmEzMDg3OTAyYmE3MGJjNTFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vzcy5oIgogI2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIKICNp
bmNsdWRlICJDYWxsYmFja0lELmgiCisjaW5jbHVkZSAiRGF0YWJhc2VBc3NlcnRpb25TY29wZS5o
IgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEb3dubG9hZE1hbmFnZXIuaCIK
ICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCIKQEAgLTQ5OSwxMCArNTAw
LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKFBBTDo6U2Vz
c2lvbklELCBib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3RyaW5nJiYgc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCBz
ZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sKTsKLSNlbmRpZgotCiAgICAgdm9pZCBmaXJlUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRUaW1lckltbWVkaWF0ZWx5KFBBTDo6U2Vzc2lvbklEKTsKIAog
ICAgIGNsYXNzIFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyIHsKQEAgLTU4MCw2ICs1NzcsNyBA
QCBwcml2YXRlOgogICAgIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlciBtX3dlYlNRTGl0ZURhdGFi
YXNlVHJhY2tlcjsKICAgICBSZWZQdHI8UHJvY2Vzc0Fzc2VydGlvbj4gbV9ob2xkaW5nTG9ja2Vk
RmlsZUFzc2VydGlvbjsKICNlbmRpZgorICAgIERhdGFiYXNlQXNzZXJ0aW9uU2NvcGUgbV9kYXRh
YmFzZUFzc2VydGlvblNjb3BlOwogCiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgU3RyaW5n
PiBtX2lkYkRhdGFiYXNlUGF0aHM7CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmUHRy
PFdlYklEQlNlcnZlcj4+IG1fd2ViSURCU2VydmVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJh
c2UuY3BwCmluZGV4IDU2OWZkYjJkZjhmNTNlYWJjZjE5MTgxMjQzMGFiNmZkYTY4MDI1NDAuLjcw
Yzk0OWJiMDEwZjczMjExNzYyNzhhMjQ2NWEwMDMyMGQ5ZjYzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3Rv
cmFnZURhdGFiYXNlLmNwcApAQCAtNzUsNyArNzUsNyBAQCBib29sIExvY2FsU3RvcmFnZURhdGFi
YXNlOjpvcGVuRGF0YWJhc2UoU2hvdWxkQ3JlYXRlRGF0YWJhc2Ugc2hvdWxkQ3JlYXRlRGF0YWJh
cwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKCFtX2RhdGFiYXNlLm9w
ZW4obV9kYXRhYmFzZVBhdGgpKSB7CisgICAgaWYgKCFtX2RhdGFiYXNlLm9wZW4obV9kYXRhYmFz
ZVBhdGgsIFNRTGl0ZURhdGFiYXNlOjpPcGVuTW9kZTo6UmVhZFdyaXRlQ3JlYXRlLCBTUUxpdGVE
YXRhYmFzZTo6SXNJbnRlcnJ1cHRhYmxlOjpZZXMpKSB7CiAgICAgICAgIExPR19FUlJPUigiRmFp
bGVkIHRvIG9wZW4gZGF0YWJhc2UgZmlsZSAlcyBmb3IgbG9jYWwgc3RvcmFnZSIsIG1fZGF0YWJh
c2VQYXRoLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lP
Uy5tbQppbmRleCA2NDk0YjVhNzk4YWY2OTA4MWVhM2Q3YTVhM2NjNTVlYzgyN2U0YmY0Li41ZDAw
MTBlMDJiMjQwMWU4NGY0NTU0Nzg5MmExNjkzMDQ0OTM1MzFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQpAQCAtMTAw
LDIxICsxMDAsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclNlcnZpY2VXb3JrZXJFbnRp
dGxlbWVudE92ZXJyaWRlKENvbXBsZXRpb25IYW5kbGVyPHZvaQogCiAjZW5kaWYgLy8gIVBMQVRG
T1JNKE1BQ0NBVEFMWVNUKQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRJc0hvbGRpbmdMb2Nr
ZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQotewotICAgIGlmICghaXNIb2xkaW5n
TG9ja2VkRmlsZXMpIHsKLSAgICAgICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbiA9IG51
bGxwdHI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobV9ob2xkaW5nTG9ja2Vk
RmlsZUFzc2VydGlvbiAmJiBtX2hvbGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uLT5pc1ZhbGlkKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFdlIHN5bmNocm9ub3VzbHkgdGFrZSBhIHByb2Nl
c3MgYXNzZXJ0aW9uIHdoZW4gYmVnaW5uaW5nIGEgU1FMaXRlIHRyYW5zYWN0aW9uIHNvIHRoYXQg
d2UgZG9uJ3QgZ2V0IHN1c3BlbmRlZAotICAgIC8vIHdoaWxlIGhvbGRpbmcgYSBsb2NrZWQgZmls
ZS4gV2Ugd291bGQgZ2V0IGtpbGxlZCBpZiBzdXNwZW5kZWQgd2hpbGUgaG9sZGluZyBsb2NrZWQg
ZmlsZXMuCi0gICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbiA9IFByb2Nlc3NBc3NlcnRp
b246OmNyZWF0ZShnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJOZXR3b3JrIFByb2Nlc3MgaXMgaG9s
ZGluZyBsb2NrZWQgZmlsZXMiX3MsIFByb2Nlc3NBc3NlcnRpb25UeXBlOjpGaW5pc2hUYXNrVW5p
bnRlcnJ1cHRhYmxlLCBQcm9jZXNzQXNzZXJ0aW9uOjpNb2RlOjpTeW5jKTsKLX0KLQogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRGF0YWJhc2VBc3NlcnRpb25TY29wZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhYmFzZUFzc2VydGlvblNjb3BlLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yYTNlNDMwZjg3YjEyYTY2YmNjN2ZhOWNmYmE0MDcyYWQxZjMwNjkwCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRGF0YWJhc2VBc3NlcnRpb25TY29wZS5jcHAKQEAg
LTAsMCArMSwxMDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiRGF0YWJhc2VBc3NlcnRpb25TY29wZS5oIgorCisjaW5jbHVkZSAiUHJvY2Vzc0Fzc2VydGlv
bi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2UuaD4KKyNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworRGF0YWJhc2VBc3NlcnRpb25T
Y29wZTo6RGF0YWJhc2VBc3NlcnRpb25TY29wZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCisg
ICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fYXNzZXJ0aW9uUmVsZWFzZVRp
bWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhpcywgJkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGU6OmFzc2Vy
dGlvblJlbGVhc2VUaW1lckZpcmVkKQoreworICAgIFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZTo6
c2V0SW1wbCh0aGlzKTsKK30KKworRGF0YWJhc2VBc3NlcnRpb25TY29wZTo6fkRhdGFiYXNlQXNz
ZXJ0aW9uU2NvcGUoKQoreworICAgIFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZTo6c2V0SW1wbChu
dWxscHRyKTsKK30KKwordm9pZCBEYXRhYmFzZUFzc2VydGlvblNjb3BlOjpiZWdpbigpCit7Cisg
ICAgaWYgKG1fYXNzZXJ0aW9uICYmIG1fYXNzZXJ0aW9uLT5pc1ZhbGlkKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fYXNzZXJ0aW9uID0gUHJvY2Vzc0Fzc2VydGlvbjo6Y3JlYXRlKGdldEN1
cnJlbnRQcm9jZXNzSUQoKSwgbV9pZGVudGlmaWVyLCBQcm9jZXNzQXNzZXJ0aW9uVHlwZTo6Rmlu
aXNoVGFza1VuaW50ZXJydXB0YWJsZSwgUHJvY2Vzc0Fzc2VydGlvbjo6TW9kZTo6U3luYyk7Cit9
CisKK3ZvaWQgRGF0YWJhc2VBc3NlcnRpb25TY29wZTo6ZW5kKCkKK3sKKyAgICBtX2Fzc2VydGlv
blJlbGVhc2VUaW1lci5zdG9wKCk7CisgICAgCisgICAgYm9vbCBzaG91bGRSZWxlYXNlQXNzZXJ0
aW9uID0gdHJ1ZTsKKyAgICBmb3IgKGF1dG8mIGRhdGFiYXNlIDogbV9kYXRhYmFzZXMpIHsKKyAg
ICAgICAgaWYgKGRhdGFiYXNlLnRyYW5zYWN0aW9uSW5Qcm9ncmVzcygpKQorICAgICAgICAgICAg
c2hvdWxkUmVsZWFzZUFzc2VydGlvbiA9IGZhbHNlOworICAgIH0KKworICAgIGlmIChzaG91bGRS
ZWxlYXNlQXNzZXJ0aW9uKQorICAgICAgICBtX2Fzc2VydGlvblJlbGVhc2VUaW1lci5zdGFydE9u
ZVNob3QoMV9zKTsKK30KKwordm9pZCBEYXRhYmFzZUFzc2VydGlvblNjb3BlOjphZGREYXRhYmFz
ZShXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UpCit7CisgICAgbV9kYXRhYmFzZXMu
YWRkKCZkYXRhYmFzZSk7Cit9CisKK3ZvaWQgRGF0YWJhc2VBc3NlcnRpb25TY29wZTo6cmVtb3Zl
RGF0YWJhc2UoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQoreworICAgIG1fZGF0
YWJhc2VzLnJlbW92ZShkYXRhYmFzZSk7Cit9CisKK3ZvaWQgRGF0YWJhc2VBc3NlcnRpb25TY29w
ZTo6aW50ZXJydXB0KCkKK3sKKyAgICBpZiAobV9pbnRlcnJ1cHRlZCkKKyAgICAgICAgcmV0dXJu
OworICAgIG1faW50ZXJydXB0ZWQgPSB0cnVlOworCisgICAgV2ViQ29yZTo6U1FMaXRlTG9ja1Nj
b3BlOjpsb2NrKCk7CisgICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6IG1fZGF0YWJhc2VzKQorICAg
ICAgICBkYXRhYmFzZS5pbnRlcnJ1cHQoKTsKKworICAgIG1fYXNzZXJ0aW9uUmVsZWFzZVRpbWVy
LnN0b3AoKTsKKyAgICBtX2Fzc2VydGlvbiA9IG51bGxwdHI7Cit9CisKK3ZvaWQgRGF0YWJhc2VB
c3NlcnRpb25TY29wZTo6cmVzdW1lKCkKK3sKKyAgICBpZiAoIW1faW50ZXJydXB0ZWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1faW50ZXJydXB0ZWQgPSBmYWxzZTsKKyAgICBXZWJDb3JlOjpT
UUxpdGVMb2NrU2NvcGU6OnVubG9jaygpOworfQorCit2b2lkIERhdGFiYXNlQXNzZXJ0aW9uU2Nv
cGU6OmFzc2VydGlvblJlbGVhc2VUaW1lckZpcmVkKCkKK3sKKyAgICBXZWJDb3JlOjpTUUxpdGVM
b2NrU2NvcGU6OmxvY2soKTsKKyAgICBtX2Fzc2VydGlvbiA9IG51bGxwdHI7CisgICAgV2ViQ29y
ZTo6U1FMaXRlTG9ja1Njb3BlOjp1bmxvY2soKTsKK30KKworfSAvLyBuYW1lcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RhdGFiYXNlQXNzZXJ0aW9uU2NvcGUu
aCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RhdGFiYXNlQXNzZXJ0aW9uU2NvcGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40ZWFlM2IyMjEyYjdjZmE4ZDhlODE2NjE3MWUxNTYwYjlmNzliODVkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRGF0YWJhc2VBc3NlcnRpb25TY29wZS5oCkBA
IC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIldl
YkNvcmUvU1FMaXRlTG9ja1Njb3BlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQ
cm9jZXNzQXNzZXJ0aW9uOworCitjbGFzcyBEYXRhYmFzZUFzc2VydGlvblNjb3BlIGZpbmFsIDog
cHVibGljIFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZUltcGwgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKERhdGFiYXNlQXNzZXJ0aW9uU2NvcGUpCitwdWJsaWM6CisgICAgZXhwbGljaXQgRGF0
YWJhc2VBc3NlcnRpb25TY29wZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpOworICAgIH5EYXRh
YmFzZUFzc2VydGlvblNjb3BlKCk7CisKKyAgICB2b2lkIGJlZ2luKCkgZmluYWw7CisgICAgdm9p
ZCBlbmQoKSBmaW5hbDsKKyAgICB2b2lkIGFkZERhdGFiYXNlKFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVEYXRhYmFzZShXZWJDb3JlOjpTUUxpdGVEYXRh
YmFzZSYpIGZpbmFsOworCisgICAgdm9pZCBpbnRlcnJ1cHQoKTsKKyAgICB2b2lkIHJlc3VtZSgp
OworCitwcml2YXRlOgorICAgIHZvaWQgYXNzZXJ0aW9uUmVsZWFzZVRpbWVyRmlyZWQoKTsKKwor
ICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CisgICAgUmVmUHRyPFByb2Nlc3NBc3NlcnRpb24+IG1f
YXNzZXJ0aW9uOworICAgIFJ1bkxvb3A6OlRpbWVyPERhdGFiYXNlQXNzZXJ0aW9uU2NvcGU+IG1f
YXNzZXJ0aW9uUmVsZWFzZVRpbWVyOworICAgIFdlYWtIYXNoU2V0PFdlYkNvcmU6OlNRTGl0ZURh
dGFiYXNlPiBtX2RhdGFiYXNlczsKKyAgICBib29sIG1faW50ZXJydXB0ZWQgeyBmYWxzZSB9Owor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNw
cAppbmRleCBlYmY3MjEyNDIzZTljZDVlMTdhNDI3NWI1OWFhYjhkMTk4YzY5NWI4Li4wM2UxOTll
MTFiZjJhMDgxZDkwNGMyNmFmOWU4NmM4ODk2YmU3NGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1h
dFJlYWRlci5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NvdXJjZUJ1
ZmZlclBhcnNlcldlYk0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZpZGVvVHJhY2tQcml2YXRlLmg+
CiAjaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KKyNp
bmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KICNpbmNsdWRlIDx3dGYvTG9nZ2Vy
SGVscGVyLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFUcmFja1JlYWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFUcmFj
a1JlYWRlci5jcHAKaW5kZXggMWRjMWNhZTAzMDA4ZTBhMjBhNDRhYzczZDFhYTM3MjUzNTdmMjBm
YS4uMWQ5ZWY4ZjdiODQ1OWZiMDc0MDI3YTU3MDU4MmMwYTAxNWIyNDgzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhVHJhY2tSZWFk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9N
ZWRpYVRyYWNrUmVhZGVyLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBAIE9TU3RhdHVzIE1lZGlhVHJh
Y2tSZWFkZXI6OmNyZWF0ZUN1cnNvckF0TGFzdFNhbXBsZUluRGVjb2RlT3JkZXIoTVRQbHVnaW5T
YW1wbGVDCiAKIFdURkxvZ0NoYW5uZWwmIE1lZGlhVHJhY2tSZWFkZXI6OmxvZ0NoYW5uZWwoKSBj
b25zdAogewotICAgIHJldHVybiBXZWJDb3JlOjpMb2dNZWRpYTsKKyAgICByZXR1cm4gTG9nTWVk
aWE7CiB9CiAKIGNvbnN0IHZvaWQqIE1lZGlhVHJhY2tSZWFkZXI6Om5leHRTYW1wbGVDdXJzb3JM
b2dJZGVudGlmaWVyKHVpbnQ2NF90IGN1cnNvcklEKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CmluZGV4IDk5ZTk2NmM5MTM2YzRkZjkyMmY4OWYzZDFkMDM5N2E3ZmNhMTFmMTIuLmVkOTE3ZGZh
NTRiOGZiOGM2MzQ0NTExMzAxM2ZmNTAwNzVjOTExZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
QEAgLTE0MSw2ICsxNDEsNyBAQCBTaGFyZWQvQXBwbGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGlu
YXRvclByb3h5TWFjLm1tCiAKIFNoYXJlZC9BUElXZWJBcmNoaXZlLm1tCiBTaGFyZWQvQVBJV2Vi
QXJjaGl2ZVJlc291cmNlLm1tCitTaGFyZWQvRGF0YWJhc2VBc3NlcnRpb25TY29wZS5jcHAKIFNo
YXJlZC9Eb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tCiBTaGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZv
cm1hdGlvbi5jcHAKIFNoYXJlZC9WaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjQ1
NGZkNDUxNDRiZjBkMDY5ZDYwZTY2ZTMwY2NiYTk1NWM1NDk1MS4uZDlhNTNkOTAxMDFhYjVkMGYz
MGJkODgwZWRmMDA4NDBjYWFlYTkxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDc4LDYgKzE0NzgsNyBAQAogCQk5MzY4RUVERTIz
MDNBOTAyMDBCREIxMUEgLyogU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM2OEVFREMyMzAz
QThEODAwQkRCMTFBIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsg
fTsKIAkJOTM2OEVFREYyMzAzQTlFRDAwQkRCMTFBIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNjhF
RUREMjMwM0E4RDgwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VzLmggKi87IH07
CiAJCTkzNkIwNTk4MjMwMzkwOTcwMDJGQzA2QiAvKiBTdG9yYWdlTWFuYWdlclNldC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM2QjA1OTUyMzAzOTAw
QjAwMkZDMDZCIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0LmggKi87IH07CisJCTkzNzA2RUZGMjY5Q0M5
OUEwMDJEQTEyNyAvKiBEYXRhYmFzZUFzc2VydGlvblNjb3BlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y4RjBGNTI2OThCM0FCMDBBOUYzMzEgLyog
RGF0YWJhc2VBc3NlcnRpb25TY29wZS5oICovOyB9OwogCQk5MzczNUVCQjFDOTI5ODYzMDAzMzZG
QTcgLyogV0tQcmV2aWV3QWN0aW9uSXRlbUludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzczNUVCQTFDOTI5ODYzMDAzMzZGQTcgLyogV0tQ
cmV2aWV3QWN0aW9uSXRlbUludGVybmFsLmggKi87IH07CiAJCTkzOTEwNzRGMUJGNkJDNjUwMDhD
MTdBRCAvKiBXS1ByZXZpZXdFbGVtZW50SW5mb0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzkxMDc0RTFCRjZCQzY1MDA4QzE3QUQgLyog
V0tQcmV2aWV3RWxlbWVudEluZm9JbnRlcm5hbC5oICovOyB9OwogCQk5MzkxRjJDQjEyMUI2N0FE
MDBFQkY3RTggLyogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MUYyODMxMjFCMzhGNTAwRUJGN0U4IC8q
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCAqLzsgfTsKQEAgLTQ5MzUsNiArNDkzNiw4IEBA
CiAJCTkzRTZBNEVEMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0hpdFRlc3RSZXN1bHQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNTQ5QjMxRTMxNzRCNzAwMEU3MjM5IC8qIFdLU25hcHNo
b3RDb25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLU25h
cHNob3RDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjU0
OUI1MUUzMTc0REEwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLU25hcHNob3RDb25maWd1cmF0aW9u
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Y4RjBGNDI2OThCM0FCMDBBOUYz
MzEgLyogRGF0YWJhc2VBc3NlcnRpb25TY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRh
YmFzZUFzc2VydGlvblNjb3BlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNG
OEYwRjUyNjk4QjNBQjAwQTlGMzMxIC8qIERhdGFiYXNlQXNzZXJ0aW9uU2NvcGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGF0YWJhc2VBc3NlcnRpb25TY29wZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5NTBGMjg3RTI1MjQxNEU5MDBCNzRGMUMgLyogV0tNb3VzZURldmljZU9ic2VydmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLTW91c2VEZXZpY2VPYnNlcnZl
ci5oOyBwYXRoID0gaW9zL1dLTW91c2VEZXZpY2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5NTBGMjg3RjI1MjQxNEVBMDBCNzRGMUMgLyogV0tNb3VzZURldmljZU9i
c2VydmVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tNb3Vz
ZURldmljZU9ic2VydmVyLm1tOyBwYXRoID0gaW9zL1dLTW91c2VEZXZpY2VPYnNlcnZlci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTU5MzY3NUQyNTJFNUUzMDAwRDNGMEEwIC8q
IFdLU3R5bHVzRGV2aWNlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gV0tTdHlsdXNEZXZpY2VPYnNlcnZlci5oOyBwYXRoID0gaW9zL1dLU3R5bHVzRGV2aWNlT2Jz
ZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY3NjcsNiArNjc3MCw4IEBA
CiAJCQkJNTEwNkQ3QkYxOEJEQkU3MzAwMEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEu
Y3BwICovLAogCQkJCTUxMDZEN0MwMThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRl
eHREYXRhLmggKi8sCiAJCQkJOTlGNjQyRDIxRkFCRTM3ODAwOTYyMUU5IC8qIENvb3JkaW5hdGVT
eXN0ZW0uaCAqLywKKwkJCQk5M0Y4RjBGNDI2OThCM0FCMDBBOUYzMzEgLyogRGF0YWJhc2VBc3Nl
cnRpb25TY29wZS5jcHAgKi8sCisJCQkJOTNGOEYwRjUyNjk4QjNBQjAwQTlGMzMxIC8qIERhdGFi
YXNlQXNzZXJ0aW9uU2NvcGUuaCAqLywKIAkJCQk5OTAzNkFFODIzQTk3MDg3MDAwMEIwNkEgLyog
RGVidWdnYWJsZUluZm9EYXRhLmNwcCAqLywKIAkJCQk5OTAzNkFFNzIzQTk3MDg3MDAwMEIwNkEg
LyogRGVidWdnYWJsZUluZm9EYXRhLmggKi8sCiAJCQkJMEYxODlDQUIyNDc0OUYyRjAwRTU4RDgx
IC8qIERpc3BsYXlMaW5rT2JzZXJ2ZXJJRC5oICovLApAQCAtMTE5OTEsNiArMTE5OTYsNyBAQAog
CQkJCTU3NTk3RUJEMjE4MTg0OTAwMDM3RjkyNCAvKiBDdGFwQXV0aGVudGljYXRvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTc1OTdFQjkyMTgxMUQ5QTAwMzdGOTI0IC8qIEN0YXBIaWREcml2ZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTU3MERBQUNBMjMwMzg1RkQwMEU4RkMwNCAvKiBDdGFwTmZj
RHJpdmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MzcwNkVGRjI2OUNDOTlBMDAyREExMjcgLyog
RGF0YWJhc2VBc3NlcnRpb25TY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU1RjkxNzExQzU5
Njc2RTAwMjlFOTJEIC8qIERhdGFEZXRlY3Rpb25SZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBQzc1MzgwMTgzQkU1MEYwMDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5OTAzNkFFOTIzQTk3MDg3MDAwMEIwNkEgLyogRGVidWdnYWJsZUluZm9EYXRhLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9T
dG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRy
YWNrZXIuY3BwCmluZGV4IGVlYTAwMDQ0YmFmYmZiZjM1Y2VmODg2Njg5ZjQwOTU0YWQ5YzRmMjQu
LmM4NTg5ZWE2NGE2YjRmZmE5OGU2NzQyMGVhZmU5NWYyMGZiMTQ5MDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcApAQCAtMjksNiArMjksNyBA
QAogI2luY2x1ZGUgIlN0b3JhZ2VUcmFja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViU3RvcmFn
ZU5hbWVzcGFjZVByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZVRy
YWNrZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZUZpbGVTeXN0ZW0uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NRTGl0ZVN0YXRlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgpAQCAtMzg1
LDEzICszODYsNiBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpkZWxldGVBbGxPcmlnaW5zKCkKICAg
ICB9KTsKIH0KIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi1zdGF0aWMgdm9pZCB0cnVuY2F0
ZURhdGFiYXNlRmlsZShTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UpCi17Ci0gICAgc3FsaXRlM19m
aWxlX2NvbnRyb2woZGF0YWJhc2Uuc3FsaXRlM0hhbmRsZSgpLCAwLCBTUUxJVEVfVFJVTkNBVEVf
REFUQUJBU0UsIDApOwotfQotI2VuZGlmCi0KIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxl
dGVBbGxPcmlnaW5zKCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKQEAgLTQyOSw3
ICs0MjMsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlQWxsT3JpZ2lucygpCiAK
ICAgICBpZiAobV9kYXRhYmFzZS5pc09wZW4oKSkgewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
Ci0gICAgICAgIHRydW5jYXRlRGF0YWJhc2VGaWxlKG1fZGF0YWJhc2UpOworICAgICAgICBTUUxp
dGVGaWxlU3lzdGVtOjp0cnVuY2F0ZURhdGFiYXNlRmlsZShtX2RhdGFiYXNlLnNxbGl0ZTNIYW5k
bGUoKSk7CiAjZW5kaWYKICAgICAgICAgbV9kYXRhYmFzZS5jbG9zZSgpOwogICAgIH0KQEAgLTU0
Myw3ICs1MzcsNyBAQCB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlT3JpZ2luKGNvbnN0
IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllcikKIAogICAgIGlmIChzaG91bGREZWxldGVUcmFja2Vy
RmlsZXMpIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICB0cnVuY2F0ZURhdGFi
YXNlRmlsZShtX2RhdGFiYXNlKTsKKyAgICAgICAgU1FMaXRlRmlsZVN5c3RlbTo6dHJ1bmNhdGVE
YXRhYmFzZUZpbGUobV9kYXRhYmFzZS5zcWxpdGUzSGFuZGxlKCkpOwogI2VuZGlmCiAgICAgICAg
IG1fZGF0YWJhc2UuY2xvc2UoKTsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433440</attachid>
            <date>2021-07-13 12:07:04 -0700</date>
            <delta_ts>2021-07-13 12:25:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227887-20210713120703.patch</filename>
            <type>text/plain</type>
            <size>44072</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5ODU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQ1ZGU3M2RkZDIzMzUx
MmQ3ZmU0NzIxZTMzNWU4YTgyYWE5MmVhZC4uNDkzZDQzMTQ2OGYxNjdlZWYzNDM3NGFjZTIzMjUw
ZmM5MTAzMzhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTA3LTEyICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgZmlsZSBsb2NrcyBz
eW5jaHJvbm91c2x5IG9uIFByZXBhcmVUb1N1c3BlbmQgbWVzc2FnZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3ODg3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvdGVjdCBTUUxpdGUgQVBJIGNhbGxz
IHRoYXQgbWF5IGFjcXVpcmUgZGF0YWJhc2UgZmlsZSBsb2NrIHdpdGggU1FMaXRlTG9ja1Njb3Bl
LiBBIGdsb2JhbCBsb2NrIGlzIGhlbGQgYXQgd2hlbiAKKyAgICAgICAgU1FMaXRlTG9ja1Njb3Bl
IGlzIGNyZWF0ZWQgYW5kIHJlbGVhc2VkIHdoZW4gU1FMaXRlTG9ja1Njb3BlIGlzIGRlc3Ryb3ll
ZC4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6Om9wZW4pOiBBZGQgYSBuZXcg
cGFyYW1ldGVyIGludGVycnVwdGFibGUgdG8gaW5kaWNhdGUgaWYgdGhlIGRhdGFiYXNlIHdhbnQg
aXRzCisgICAgICAgIHRyYW5zYWN0aW9uIHRvIGJlIGFib3J0ZWQgb3IgY29tbWl0dGVkIG9uIGlu
dGVycnVwdC4KKyAgICAgICAgKFdlYkNvcmU6OndhbEF1dG9tYXRpY1RydW5jYXRpb25Ib29rKToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjp1c2VXQUxKb3VybmFsTW9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2U6OmludGVycnVwdCk6IFJlbGVhc2UgZmlsZSBsb2NrIGJ5IGludGVy
cnVwdGluZyBsb25nIHF1ZXJ5IGFuZCBlbmRpbmcgdHJhbnNhY3Rpb24uCisgICAgICAgICogcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0
ZUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6dHJ1
bmNhdGVEYXRhYmFzZUZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2Nv
cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZTo6c2V0SW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6OlNRTGl0ZUxvY2tTY29wZSk6
CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6On5TUUxpdGVMb2NrU2NvcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMaXRlTG9ja1Njb3BlOjphZGREYXRhYmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6OnJlbW92ZURhdGFiYXNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9zcWwvU1FMaXRlTG9ja1Njb3BlLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVt
ZW50OjpzdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudDo6c3RlcFdpdGhv
dXRMb2NrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50Lmg6CisKIDIw
MjEtMDctMTIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dCBjYW4ndCBkcmF3IHRleHQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
MWI3OGY2OGY1MjM4OTQ2NWE1YjFjMzI1ZTU3ZGI2MjlhYjU1ZTJhZC4uOGExMGU3N2YwMDAyNTA0
ZDcyOGQzOGEyYWVhYzc4ZGMzYTliYTA5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAy
MS0wNy0xMiAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9w
IGZpbGUgbG9ja3Mgc3luY2hyb25vdXNseSBvbiBQcmVwYXJlVG9TdXNwZW5kIG1lc3NhZ2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzg4NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gbmV0d29y
ayBwcm9jZXNzIGlzIGFib3V0IHRvIHN1c3BlbmQsIGl0IHNob3VsZCByZWxlYXNlIGFsbCBkYXRh
YmFzZSBmaWxlIGxvY2tzIGFzIHNvb24gYXMgcG9zc2libGUuIE91cgorICAgICAgICBjdXJyZW50
IGltcGxlbWVudGF0aW9uIGlzIEluZGV4ZWREQiByZWxlYXNlcyBsb2NrcyBieSBhYm9ydGluZyB0
cmFuc2FjdGlvbnMgc3luY2hyb25vdXNseSBvbiBQcmVwYXJlVG9TdXNwZW5kLAorICAgICAgICBh
bmQgTG9jYWxTdG9yYWdlIGFuZCBJVFAgc2NoZWR1bGVzIHN1c3BlbmQgdGFzayB0byBiYWNrZ3Jv
dW5kIHRocmVhZHMuIEl0J3MgcG9zc2libGUgdGhhdCBzdXNwZW5kIHRhc2sKKyAgICAgICAgZG9l
cyBub3QgZ2V0IHRvIHJ1biBiZWZvcmUgbmV0d29yayBwcm9jZXNzIGdldHMgc3VzcGVuZGVkIGFj
Y29yZGluZyB0byBjcmFzaCBsb2dzLCBzbyBsZXQncyBtYWtlIHRoZSBiZWhhdmlvcgorICAgICAg
ICBjb25zaXN0ZW50IGFjcm9zcyBhbGwgZGF0YWJhc2VzLCBhbmQgbWFrZSBzdXJlIG5ldHdvcmsg
cHJvY2VzcyByZWxlYXNlcyBsb2NrcyBxdWlja2x5IG9uIFByZXBhcmVUb1N1c3BlbmQuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnJlc3VtZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURh
dGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2U6Om9wZW5E
YXRhYmFzZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9T
Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0SXNIb2xkaW5nTG9ja2Vk
RmlsZXMpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9EYXRhYmFzZUFzc2VydGlvblNjb3Bl
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGU6OkRh
dGFiYXNlQXNzZXJ0aW9uU2NvcGUpOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZUFzc2VydGlv
blNjb3BlOjp+RGF0YWJhc2VBc3NlcnRpb25TY29wZSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFi
YXNlQXNzZXJ0aW9uU2NvcGU6OmJlZ2luKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VBc3Nl
cnRpb25TY29wZTo6ZW5kKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VBc3NlcnRpb25TY29w
ZTo6YWRkRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZUFzc2VydGlvblNjb3Bl
OjpyZW1vdmVEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uU2Nv
cGU6OmludGVycnVwdCk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGU6
OnJlc3VtZSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGU6OmFzc2Vy
dGlvblJlbGVhc2VUaW1lckZpcmVkKToKKyAgICAgICAgKiBTaGFyZWQvRGF0YWJhc2VBc3NlcnRp
b25TY29wZS5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVy
L01lZGlhRm9ybWF0UmVhZGVyLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0
UmVhZGVyL01lZGlhVHJhY2tSZWFkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVRyYWNr
UmVhZGVyOjpsb2dDaGFubmVsIGNvbnN0KToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIxLTA3LTEy
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cmV2ZXJ0aW5nIHIyNzk4MzUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDYyM2U3YjY1YmIyNzZm
MjE5YWU3NzM2MmNmOGZkMmU0YTUyMzUwYzIuLmU5YzlmZjQyOTBlMTgxZDU1OGM3OGI5ZjQ2ZDU1
MDQxYzAwNzBhNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEt
MDctMTIgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBm
aWxlIGxvY2tzIHN5bmNocm9ub3VzbHkgb24gUHJlcGFyZVRvU3VzcGVuZCBtZXNzYWdlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc4ODcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3Rv
cmFnZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6c3luY0Rl
bGV0ZUFsbE9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6c3luY0Rl
bGV0ZU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OnRydW5jYXRlRGF0YWJhc2VGaWxlKTogRGVs
ZXRlZC4KKwogMjAyMS0wNi0yMSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAog
ICAgICAgICBNYWtlIEluUHJvY2Vzc0lEQlNlcnZlciB1c2UgV29ya1F1ZXVlIGluc3RlYWQgb2Yg
VGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDNjYmZhNWFiNWE0YmY1ODQ0OTZhYjYxMzNjZTMwOGQ0
OTkyM2JhMDIuLjVmMWQ0NGUxZDM5NWY4NDg3NjQ0ZTQ2MTQ4YTc4ZDRhZWRjMTg1M2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CkBAIC0yMTg4LDYgKzIxODgsNyBAQCBwbGF0Zm9ybS9zcWwvU1FMaXRlQXV0aG9y
aXplci5jcHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKIHBsYXRmb3JtL3NxbC9T
UUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5j
cHAKK3BsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2NvcGUuY3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRl
U3RhdGVtZW50LmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3Bl
LmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGUyYTJmOThhNWIx
YWE2Y2JlOWY3NzA2YzUxMDAxN2M1OGY0NGU0Y2IuLmRjMjczZDAzMWMyY2M2YjBjOGNkOGYyN2M3
NDhhOWI0MGExZDFmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTI5MzEsNiArMjkzMSw3IEBACiAJCTkzRjZCODFGMjU2N0Ew
OEMwMEEwODQ4OCAvKiBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y2QjgxQzI1Njc5Rjcw
MDBBMDg0ODggLyogU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjZCODIyMjU2N0E2
NTYwMEEwODQ4OCAvKiBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjZCODFCMjU2NzlGNkYwMEEw
ODQ4OCAvKiBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Y2RjFFRTEyN0Y3MEIxMDA1NUNC
MDYgLyogV2ViR0xDb250ZXh0RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzRjZGMUVCMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRF
dmVudC5oICovOyB9OworCQk5M0Y4RjBGMzI2OTgyNjEzMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Nj
b3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y4
RjBGMTI2OTgyNjEyMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGOTI1NDMwRjdFRjVCODAwN0Uz
N0M5IC8qIFJhZGlvQnV0dG9uR3JvdXBzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0Y5MjU0MTBGN0VGNUI4MDA3RTM3QzkgLyogUmFkaW9CdXR0b25H
cm91cHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5M0Y5QjZFMTBCQTBGQjcyMDA4NTQwNjQgLyogSlNDb21tZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y5QjZERjBCQTBGQjcyMDA4NTQwNjQg
LyogSlNDb21tZW50LmggKi87IH07CiAJCTkzRjlCN0ExMEJBNjAzMjYwMDg1NDA2NCAvKiBKU0NE
QVRBU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNGOUI3OUYwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmggKi87IH07CkBA
IC0xMTgzNCw2ICsxMTgzNSw4IEBACiAJCTkzRjhCMzA1MEEzMDBGRTEwMEY2MUFCOCAvKiBDb2Rl
R2VuZXJhdG9yLnBtICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IENvZGVHZW5l
cmF0b3IucG07IHBhdGggPSBzY3JpcHRzL0NvZGVHZW5lcmF0b3IucG07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzRjhCMzA2MEEzMDBGRUEwMEY2MUFCOCAvKiBDb2RlR2VuZXJhdG9y
SlMucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gQ29kZUdlbmVyYXRvckpT
LnBtOyBwYXRoID0gc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHdyYXBzTGluZXMgPSAwOyB9OwogCQk5M0Y4QjMwNzBBMzAwRkVBMDBGNjFBQjggLyog
Z2VuZXJhdGUtYmluZGluZ3MucGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0g
ImdlbmVyYXRlLWJpbmRpbmdzLnBsIjsgcGF0aCA9ICJzY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdz
LnBsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNGOEYwRUYyNjk4MjYxMjAwQTlG
MzMxIC8qIFNRTGl0ZUxvY2tTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTUUxpdGVMb2NrU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5M0Y4RjBGMTI2OTgyNjEyMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTGl0ZUxvY2tTY29wZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5M0Y5MjU0MTBGN0VGNUI4MDA3RTM3QzkgLyogUmFkaW9CdXR0b25H
cm91cHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFkaW9CdXR0b25Hcm91
cHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGOTI1NDIwRjdFRjVCODAwN0Uz
N0M5IC8qIFJhZGlvQnV0dG9uR3JvdXBzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJhZGlvQnV0dG9uR3JvdXBzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNGOUI2REUwQkEwRkI3MjAwODU0MDY0IC8qIEpTQ29tbWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NvbW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTg1MzUsNiArMTg1MzgsOCBAQAogCQkJCTdFNDc0RTFCMTI0OTRE
QzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCAqLywKIAkJCQlCNUE2
ODQyMzBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5jcHAgKi8sCiAJCQkJQjVB
Njg0MjEwRkZBQkU5ODAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uaCAqLywKKwkJCQk5M0Y4
RjBFRjI2OTgyNjEyMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmNwcCAqLywKKwkJCQk5M0Y4
RjBGMTI2OTgyNjEyMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmggKi8sCiAJCQkJMUEyMjQ2
NDUwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZVN0YXRlbWVudC5jcHAgKi8sCiAJCQkJMUEyMjQ2
NDYwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZVN0YXRlbWVudC5oICovLAogCQkJCUVCRTVCMjI3
MjQ1QTI5Q0YwMDNBNUE4OCAvKiBTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZS5jcHAgKi8s
CkBAIC0zNTM4NSw2ICszNTM5MCw3IEBACiAJCQkJNTEyQkRCNEIxQzQ1NkZGQTAwNjQ5NERGIC8q
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExRUMxMzAxQzUw
QUJGNTAwMzJGOTgzIC8qIFNRTGl0ZUlEQkN1cnNvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEx
RUMxMkMxQzUwQUJCRjAwMzJGOTgzIC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5M0Y4RjBGMzI2OTgyNjEzMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTIyNDY0QzBDQzk4RERCMDBDMDUyNDAgLyogU1FMaXRlU3Rh
dGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFQkU1QjIyNjI0NUEyNkVGMDAzQTVBODggLyog
U1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjI0
NjRFMENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAppbmRl
eCBhMTExMDI1NjgxZTQ2OTMxMjNmYmM4Y2I0OTBhODM3MGRiMzljMTgzLi4zYzUyZTE3MDljY2Qw
NjhjMTZmOTZiNGVlZWYwMzg3ZWQ4OWNhZjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJN
ZW1vcnlSZWxlYXNlLmgiCiAjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5j
bHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIlNRTGl0ZUxvY2tTY29wZS5oIgog
I2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUg
PHNxbGl0ZTMuaD4KQEAgLTg4LDcgKzg5LDcgQEAgU1FMaXRlRGF0YWJhc2U6On5TUUxpdGVEYXRh
YmFzZSgpCiAgICAgY2xvc2UoKTsKIH0KIAotYm9vbCBTUUxpdGVEYXRhYmFzZTo6b3Blbihjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBPcGVuTW9kZSBvcGVuTW9kZSkKK2Jvb2wgU1FMaXRlRGF0YWJh
c2U6Om9wZW4oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgT3Blbk1vZGUgb3Blbk1vZGUsIElzSW50
ZXJydXB0YWJsZSBpbnRlcnJ1cHRhYmxlKQogewogICAgIGluaXRpYWxpemVTUUxpdGVJZk5lY2Vz
c2FyeSgpOwogCkBAIC0xMTQsNyArMTE1LDE0IEBAIGJvb2wgU1FMaXRlRGF0YWJhc2U6Om9wZW4o
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgT3Blbk1vZGUgb3Blbk1vZGUpCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogCi0gICAgICAgIG1fb3BlbkVycm9yID0gc3FsaXRlM19vcGVuX3Yy
KEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlbmFtZSkuZGF0YSgpLCAm
bV9kYiwgZmxhZ3MsIG51bGxwdHIpOworICAgICAgICB7CisgICAgICAgICAgICBTUUxpdGVMb2Nr
U2NvcGUgbG9ja1Njb3BlOworICAgICAgICAgICAgbV9vcGVuRXJyb3IgPSBzcWxpdGUzX29wZW5f
djIoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVuYW1lKS5kYXRhKCks
ICZtX2RiLCBmbGFncywgbnVsbHB0cik7CisgICAgICAgICAgICBtX2ludGVycnVwdGFibGUgPSBp
bnRlcnJ1cHRhYmxlOworICAgICAgICAgICAgaWYgKG1fb3BlbkVycm9yID09IFNRTElURV9PSykK
KyAgICAgICAgICAgICAgICBsb2NrU2NvcGUuYWRkRGF0YWJhc2UoKnRoaXMpOworICAgICAgICB9
CisKICAgICAgICAgaWYgKG1fb3BlbkVycm9yICE9IFNRTElURV9PSykgewogICAgICAgICAgICAg
bV9vcGVuRXJyb3JNZXNzYWdlID0gbV9kYiA/IHNxbGl0ZTNfZXJybXNnKG1fZGIpIDogInNxbGl0
ZV9vcGVuIHJldHVybmVkIG51bGwiOwogICAgICAgICAgICAgTE9HX0VSUk9SKCJTUUxpdGUgZGF0
YWJhc2UgZmFpbGVkIHRvIGxvYWQgZnJvbSAlc1xuQ2F1c2UgLSAlcyIsIGZpbGVuYW1lLmFzY2lp
KCkuZGF0YSgpLApAQCAtMTY3LDYgKzE3NSw3IEBAIHN0YXRpYyBpbnQgd2FsQXV0b21hdGljVHJ1
bmNhdGlvbkhvb2sodm9pZCogY29udGV4dCwgc3FsaXRlMyogZGIsIGNvbnN0IGNoYXIqIGRiCiAK
ICAgICBpZiAod2FsUGFnZUNvdW50ID49IGNoZWNrcG9pbnRUaHJlc2hvbGQpIHsKICAgICAgICAg
aW50IG5ld1dhbFBhZ2VDb3VudCA9IDA7CisgICAgICAgIEFTU0VSVChTUUxpdGVMb2NrU2NvcGU6
OmlzSW5zaWRlU2NvcGUoKSk7CiAgICAgICAgIGludCByZXN1bHQgPSBzcWxpdGUzX3dhbF9jaGVj
a3BvaW50X3YyKGRiLCBkYk5hbWUsIFNRTElURV9DSEVDS1BPSU5UX1RSVU5DQVRFLCAmbmV3V2Fs
UGFnZUNvdW50LCBudWxscHRyKTsKIAogI2lmIExPR19ESVNBQkxFRApAQCAtMTk0LDcgKzIwMyw2
IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmVuYWJsZUF1dG9tYXRpY1dBTFRydW5jYXRpb24oKQog
CiB2b2lkIFNRTGl0ZURhdGFiYXNlOjp1c2VXQUxKb3VybmFsTW9kZSgpCiB7Ci0gICAgbV91c2VX
QUwgPSB0cnVlOwogICAgIHsKICAgICAgICAgYXV0byB3YWxTdGF0ZW1lbnQgPSBwcmVwYXJlU3Rh
dGVtZW50KCJQUkFHTUEgam91cm5hbF9tb2RlPVdBTDsiX3MpOwogICAgICAgICBpZiAod2FsU3Rh
dGVtZW50ICYmIHdhbFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKQEAgLTIzMiwx
MiArMjQwLDExIEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmNsb3NlKFNob3VsZFNldEVycm9yU3Rh
dGUgc2hvdWxkU2V0RXJyb3JTdGF0ZSkKICAgICAgICAgfQogCiAgICAgICAgIGludCBjbG9zZVJl
c3VsdDsKLSAgICAgICAgaWYgKG1fdXNlV0FMKSB7Ci0gICAgICAgICAgICAvLyBDbG9zZSBpbiB0
aGUgc2NvcGUgb2YgY291bnRlciBhcyBpdCBtYXkgYWNxdWlyZSBsb2NrIG9mIGRhdGFiYXNlLgot
ICAgICAgICAgICAgU1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNh
Y3Rpb25Db3VudGVyOwotICAgICAgICAgICAgY2xvc2VSZXN1bHQgPSBzcWxpdGUzX2Nsb3NlKGRi
KTsKLSAgICAgICAgfSBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIFNRTGl0ZUxvY2tTY29w
ZSBsb2NrU2NvcGU7CiAgICAgICAgICAgICBjbG9zZVJlc3VsdCA9IHNxbGl0ZTNfY2xvc2UoZGIp
OworICAgICAgICAgICAgbG9ja1Njb3BlLnJlbW92ZURhdGFiYXNlKCp0aGlzKTsKKyAgICAgICAg
fQogCiAgICAgICAgIGlmIChjbG9zZVJlc3VsdCAhPSBTUUxJVEVfT0spCiAgICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihTUUxEYXRhYmFzZSwgIlNRTGl0ZURhdGFiYXNlOjpjbG9zZTogRmFp
bGVkIHRvIGNsb3NlIGRhdGFiYXNlICglZCkgLSAle3B1YmxpY31zIiwgY2xvc2VSZXN1bHQsIGxh
c3RFcnJvck1zZygpKTsKQEAgLTQ1OCw4ICs0NjUsMTUgQEAgaW50IFNRTGl0ZURhdGFiYXNlOjpy
dW5JbmNyZW1lbnRhbFZhY3V1bUNvbW1hbmQoKQogdm9pZCBTUUxpdGVEYXRhYmFzZTo6aW50ZXJy
dXB0KCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhYmFzZUNsb3NpbmdNdXRleCB9Owot
ICAgIGlmIChtX2RiKQotICAgICAgICBzcWxpdGUzX2ludGVycnVwdChtX2RiKTsKKyAgICAKKyAg
ICBpZiAoIW1fZGIpCisgICAgICAgIHJldHVybjsKKworICAgIHNxbGl0ZTNfaW50ZXJydXB0KG1f
ZGIpOworCisgICAgQVNDSUlMaXRlcmFsIHF1ZXJ5U3RyaW5nID0gbV9pbnRlcnJ1cHRhYmxlID09
IElzSW50ZXJydXB0YWJsZTo6WWVzID8gIkNPTU1JVCJfcyA6ICJST0xMQkFDSyJfczsKKyAgICBp
ZiAoYXV0byBxdWVyeSA9IHByZXBhcmVTdGF0ZW1lbnQocXVlcnlTdHJpbmcpKQorICAgICAgICBx
dWVyeS0+c3RlcFdpdGhvdXRMb2NrKCk7CiB9CiAKIGludDY0X3QgU1FMaXRlRGF0YWJhc2U6Omxh
c3RJbnNlcnRSb3dJRCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZS5oCmluZGV4IDRiMjJjOGZlNjhlMzVmYmRkMDk3MjU4NjhjNGM5YTBlNWNhYjJjZjAuLjA5
Y2YwZmFmMGEzNjY2MzUyZGRhY2Y0ZGJmMWMyODU4OWVhMmEwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCkBAIC01Nyw3ICs1Nyw4IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB+U1FMaXRlRGF0YWJhc2UoKTsKIAogICAgIGVudW0gY2xh
c3MgT3Blbk1vZGUgeyBSZWFkT25seSwgUmVhZFdyaXRlLCBSZWFkV3JpdGVDcmVhdGUgfTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZW4oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgT3Blbk1v
ZGUgPSBPcGVuTW9kZTo6UmVhZFdyaXRlQ3JlYXRlKTsKKyAgICBlbnVtIGNsYXNzIElzSW50ZXJy
dXB0YWJsZSA6IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVu
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIE9wZW5Nb2RlID0gT3Blbk1vZGU6OlJlYWRXcml0ZUNy
ZWF0ZSwgSXNJbnRlcnJ1cHRhYmxlID0gSXNJbnRlcnJ1cHRhYmxlOjpObyk7CiAgICAgYm9vbCBp
c09wZW4oKSBjb25zdCB7IHJldHVybiBtX2RiOyB9CiAgICAgZW51bSBjbGFzcyBTaG91bGRTZXRF
cnJvclN0YXRlIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNs
b3NlKFNob3VsZFNldEVycm9yU3RhdGUgPSBTaG91bGRTZXRFcnJvclN0YXRlOjpZZXMpOwpAQCAt
MTgxLDggKzE4Miw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IG1fc3Rh
dGVtZW50Q291bnQgeyAwIH07CiAjZW5kaWYKIAotICAgIGJvb2wgbV91c2VXQUwgeyBmYWxzZSB9
OwotCiAgICAgTG9jayBtX2F1dGhvcml6ZXJMb2NrOwogICAgIFJlZlB0cjxEYXRhYmFzZUF1dGhv
cml6ZXI+IG1fYXV0aG9yaXplciBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fYXV0aG9yaXplckxvY2sp
OwogCkBAIC0xOTMsNiArMTkyLDggQEAgcHJpdmF0ZToKIAogICAgIGludCBtX29wZW5FcnJvciB7
IFNRTElURV9FUlJPUiB9OwogICAgIENTdHJpbmcgbV9vcGVuRXJyb3JNZXNzYWdlOworCisgICAg
SXNJbnRlcnJ1cHRhYmxlIG1faW50ZXJydXB0YWJsZSB7IElzSW50ZXJydXB0YWJsZTo6Tm8gfTsK
IH07CiAKIGlubGluZSB2b2lkIFNRTGl0ZURhdGFiYXNlOjppbmNyZW1lbnRTdGF0ZW1lbnRDb3Vu
dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5
c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5j
cHAKaW5kZXggNzZlNDVhZjM0ZWQwOTNmZDlmMjc2ZGQ1ZDRiOTIyYTQxNjM0ZDlhZS4uOGI5YjMy
MWRjNjQ4MTAwZmNiZjRjNWMyMmY1MGYxNGIxNWEzMTg4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIlNRTGl0ZUZpbGVTeXN0ZW0uaCIKIAogI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNl
LmgiCisjaW5jbHVkZSAiU1FMaXRlTG9ja1Njb3BlLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVt
ZW50LmgiCiAjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNsdWRlIDxz
cWxpdGUzLmg+CkBAIC05NCw2ICs5NSw3IEBAIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRl
RGF0YWJhc2VGaWxlKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6dHJ1bmNhdGVEYXRhYmFzZUZpbGUoc3FsaXRl
MyogZGF0YWJhc2UpCiB7CisgICAgU1FMaXRlTG9ja1Njb3BlIGxvY2tTY29wZTsKICAgICByZXR1
cm4gc3FsaXRlM19maWxlX2NvbnRyb2woZGF0YWJhc2UsIDAsIFNRTElURV9UUlVOQ0FURV9EQVRB
QkFTRSwgMCkgPT0gU1FMSVRFX09LOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaAppbmRleCBjNjhkOWM3ZTdhZjk4OTc2YTFlZDNk
Y2I2ZjJhY2ZlNGI2Y2Y1YzJmLi5kMzI2OGJkODVjY2U0MjJhNmUzN2E4OWIyMzAyZGY0ZjZmOGVk
N2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5
c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVt
LmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIC8vIFRydW5jYXRlcyBhIGRhdGFiYXNl
IGZpbGUuIFVzZWQgd2hlbiBNb2JpbGVTYWZhcmlTZXR0aW5ncyBkZWxldGVzIGEgZGF0YWJhc2Ug
ZmlsZSwKICAgICAvLyBzaW5jZSBkZWxldGluZyB0aGUgZmlsZSBudWtlcyB0aGUgUE9TSVggZmls
ZSBsb2NrcyB3aGljaCB3b3VsZCBwb3RlbnRpYWxseSBjYXVzZSBTYWZhcmkKICAgICAvLyB0byBj
b3JydXB0IHRoZSBuZXcgZGIgaWYgaXQncyBydW5uaW5nIGluIHRoZSBiYWNrZ3JvdW5kLgotICAg
IHN0YXRpYyBib29sIHRydW5jYXRlRGF0YWJhc2VGaWxlKHNxbGl0ZTMqIGRhdGFiYXNlKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCB0cnVuY2F0ZURhdGFiYXNlRmlsZShzcWxpdGUz
KiBkYXRhYmFzZSk7CiAjZW5kaWYKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdWlu
dDY0X3QgZGF0YWJhc2VGaWxlU2l6ZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2NvcGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUxvY2tTY29wZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmJmZTczZTljZDQ0YmU4OGVlOTI1MWM5NmRkODNhNDFlZDgzYzY3MgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2NvcGUuY3BwCkBAIC0w
LDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
U1FMaXRlTG9ja1Njb3BlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIExvY2sg
c2NvcGVMb2NrOworc3RhdGljIFNRTGl0ZUxvY2tTY29wZUltcGwqIHNfaW1wbCB7IG51bGxwdHIg
fTsKK3N0YXRpYyBib29sIGlzTG9ja2VkRXh0ZXJuYWxseSB7IGZhbHNlIH07CisKK3ZvaWQgU1FM
aXRlTG9ja1Njb3BlOjpzZXRJbXBsKFNRTGl0ZUxvY2tTY29wZUltcGwqIGltcGwpCit7CisgICAg
TG9ja2VyIGxvY2tlciB7IHNjb3BlTG9jayB9OworICAgIHNfaW1wbCA9IGltcGw7Cit9CisKK3Zv
aWQgU1FMaXRlTG9ja1Njb3BlOjpsb2NrKCkgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFM
WVNJUworeworICAgIHNjb3BlTG9jay5sb2NrKCk7CisgICAgaXNMb2NrZWRFeHRlcm5hbGx5ID0g
dHJ1ZTsKK30KKwordm9pZCBTUUxpdGVMb2NrU2NvcGU6OnVubG9jaygpIFdURl9JR05PUkVTX1RI
UkVBRF9TQUZFVFlfQU5BTFlTSVMKK3sKKyAgICBpc0xvY2tlZEV4dGVybmFsbHkgPSBmYWxzZTsK
KyAgICBzY29wZUxvY2sudW5sb2NrKCk7Cit9CisKK2Jvb2wgU1FMaXRlTG9ja1Njb3BlOjppc0lu
c2lkZVNjb3BlKCkKK3sKKyAgICByZXR1cm4gc2NvcGVMb2NrLmlzTG9ja2VkKCkgJiYgIWlzTG9j
a2VkRXh0ZXJuYWxseTsKK30KKworU1FMaXRlTG9ja1Njb3BlOjpTUUxpdGVMb2NrU2NvcGUoKQor
eworICAgIHNjb3BlTG9jay5sb2NrKCk7CisgICAgaWYgKHNfaW1wbCkKKyAgICAgICAgc19pbXBs
LT5iZWdpbigpOworfQorCitTUUxpdGVMb2NrU2NvcGU6On5TUUxpdGVMb2NrU2NvcGUoKQorewor
ICAgIGlmIChzX2ltcGwpCisgICAgICAgIHNfaW1wbC0+ZW5kKCk7CisgICAgc2NvcGVMb2NrLnVu
bG9jaygpOworfQorCit2b2lkIFNRTGl0ZUxvY2tTY29wZTo6YWRkRGF0YWJhc2UoU1FMaXRlRGF0
YWJhc2UmIGRhdGFiYXNlKQoreworICAgIGlmIChzX2ltcGwpCisgICAgICAgIHNfaW1wbC0+YWRk
RGF0YWJhc2UoZGF0YWJhc2UpOworfQorCit2b2lkIFNRTGl0ZUxvY2tTY29wZTo6cmVtb3ZlRGF0
YWJhc2UoU1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQoreworICAgIGlmIChzX2ltcGwpCisgICAg
ICAgIHNfaW1wbC0+cmVtb3ZlRGF0YWJhc2UoZGF0YWJhc2UpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
TG9ja1Njb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlTG9ja1Njb3Bl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTg2NjE0YzE2MDA2YjAyYWQ5YjI5OTQzNzhkOWY2ODljNGY5NGVmOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVMb2Nr
U2NvcGUuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1FMaXRlRGF0YWJhc2U7CitjbGFzcyBTUUxpdGVU
cmFuc2FjdGlvbjsKKworY2xhc3MgU1FMaXRlTG9ja1Njb3BlSW1wbCB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+U1FMaXRlTG9ja1Njb3BlSW1wbCgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwg
dm9pZCBiZWdpbigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kKCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBhZGREYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmKSA9IDA7Cit9OworCitjbGFzcyBTUUxp
dGVMb2NrU2NvcGUgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNl
dEltcGwoU1FMaXRlTG9ja1Njb3BlSW1wbCopOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIGxvY2soKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCB1bmxvY2soKTsKKyAg
ICBzdGF0aWMgYm9vbCBpc0luc2lkZVNjb3BlKCk7CisKKyAgICBTUUxpdGVMb2NrU2NvcGUoKTsK
KyAgICB+U1FMaXRlTG9ja1Njb3BlKCk7CisKKyAgICB2b2lkIGFkZERhdGFiYXNlKFNRTGl0ZURh
dGFiYXNlJik7CisgICAgdm9pZCByZW1vdmVEYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYpOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlU3RhdGVtZW50LmNwcAppbmRleCBiMDg0OWU2ZjgwOGNhMzgwYjA4YzYyNzRiMDRk
MTQ5Y2MwMzNjMDg3Li5iMzcxY2RiNGU1YjJmMmRjMGQ2YWI2YWI3ZWM0NTcxZjVlMjZiZGIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcApA
QCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNRTFZh
bHVlLmgiCisjaW5jbHVkZSAiU1FMaXRlTG9ja1Njb3BlLmgiCiAjaW5jbHVkZSA8c3FsaXRlMy5o
PgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4K
QEAgLTY2LDYgKzY3LDIyIEBAIGludCBTUUxpdGVTdGF0ZW1lbnQ6OnN0ZXAoKQogewogICAgIExv
Y2tlciBkYXRhYmFzZUxvY2sgeyBtX2RhdGFiYXNlLmRhdGFiYXNlTXV0ZXgoKSB9OwogCisgICAg
aW50IGVycm9yOworICAgIHsKKyAgICAgICAgU1FMaXRlTG9ja1Njb3BlIGxvY2tTY29wZTsKKyAg
ICAgICAgZXJyb3IgPSBzcWxpdGUzX3N0ZXAobV9zdGF0ZW1lbnQpOworICAgIH0KKworICAgIGlm
IChlcnJvciAhPSBTUUxJVEVfRE9ORSAmJiBlcnJvciAhPSBTUUxJVEVfUk9XKQorICAgICAgICBM
T0coU1FMRGF0YWJhc2UsICJzcWxpdGUzX3N0ZXAgZmFpbGVkICglaSlcbkVycm9yIC0gJXMiLCBl
cnJvciwgc3FsaXRlM19lcnJtc2cobV9kYXRhYmFzZS5zcWxpdGUzSGFuZGxlKCkpKTsKKworICAg
IHJldHVybiBlcnJvcjsKK30KKworaW50IFNRTGl0ZVN0YXRlbWVudDo6c3RlcFdpdGhvdXRMb2Nr
KCkKK3sKKyAgICBMb2NrZXIgZGF0YWJhc2VMb2NrIHsgbV9kYXRhYmFzZS5kYXRhYmFzZU11dGV4
KCkgfTsKKwogICAgIGludCBlcnJvciA9IHNxbGl0ZTNfc3RlcChtX3N0YXRlbWVudCk7CiAgICAg
aWYgKGVycm9yICE9IFNRTElURV9ET05FICYmIGVycm9yICE9IFNRTElURV9ST1cpCiAgICAgICAg
IExPRyhTUUxEYXRhYmFzZSwgInNxbGl0ZTNfc3RlcCBmYWlsZWQgKCVpKVxuRXJyb3IgLSAlcyIs
IGVycm9yLCBzcWxpdGUzX2Vycm1zZyhtX2RhdGFiYXNlLnNxbGl0ZTNIYW5kbGUoKSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oCmluZGV4IGNmMmYx
MjBmMmU3NTNhZDhkMTMxNzBmZDBkODcwMDE2OWRlYmMxNTUuLjhhY2ZkNjkyZjVlZDNlMjg0ODc5
N2M1Y2ExYzk4MGI4OThlNDFiY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVTdGF0ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlU3RhdGVtZW50LmgKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHVuc2lnbmVkIGJpbmRQYXJhbWV0ZXJDb3VudCgpIGNvbnN0OwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgaW50IHN0ZXAoKTsKKyAgICBpbnQgc3RlcFdpdGhvdXRMb2NrKCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgaW50IHJlc2V0KCk7CiAgICAgCiAgICAgLy8gc3RlcHMgYW5kIGZpbmFsaXpl
cyB0aGUgcXVlcnkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCmluZGV4IGFlYTJmYWE1OGExNTgxZjAwYmY1NmJjZWVlZDE3N2I0NGE0MzYwOTYu
LjhjYWM2OTc2MDc0M2UyMWQ4NzI5ZDJiNjVjOTg1NzRjZjQwMGZhNmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQXV4aWxp
YXJ5UHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1
ZGUgIkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJEb3dubG9hZC5oIgogI2lu
Y2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9N
X1BST1RPQ09MX01BTkFHRVIpCkBAIC0xNTgsOSArMTU5LDcgQEAgTmV0d29ya1Byb2Nlc3M6Ok5l
dHdvcmtQcm9jZXNzKEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWUKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgICwgbV9uZXR3b3JrQ29u
dGVudFJ1bGVMaXN0TWFuYWdlcigqdGhpcykKICNlbmRpZgotI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgLCBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcihbdGhpc10oYm9vbCBpc0hvbGRp
bmdMb2NrZWRGaWxlcykgeyBzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhpc0hvbGRpbmdMb2NrZWRG
aWxlcyk7IH0pCi0jZW5kaWYKKyAgICAsIG1fZGF0YWJhc2VBc3NlcnRpb25TY29wZSgiTmV0d29y
ayBQcm9jZXNzIGlzIGhvbGRpbmcgbG9ja2VkIGZpbGVzIikKICAgICAsIG1fbWVzc2FnZVBvcnRD
aGFubmVsUmVnaXN0cnkoY3JlYXRlTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoKnRoaXMpKQog
ewogICAgIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzOjppbml0aWFsaXplKCk7CkBA
IC0yMjE1LDEyICsyMjE0LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVu
ZChib29sIGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGwKIHsKICAgICBSRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVU
b1N1c3BlbmQoKSwgaXNTdXNwZW5zaW9uSW1taW5lbnQ9JWQiLCB0aGlzLCBpc1N1c3BlbnNpb25J
bW1pbmVudCk7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGZvciAoYXV0byYgc2Vy
dmVyIDogbV93ZWJJREJTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBzZXJ2ZXItPnN1c3BlbmQo
KTsKLSAgICBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXIgPSB0cnVlOwotI2VuZGlmCi0KICAgICBs
b3dNZW1vcnlIYW5kbGVyKENyaXRpY2FsOjpZZXMpOwogCiAgICAgUmVmUHRyPENhbGxiYWNrQWdn
cmVnYXRvcj4gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUo
W3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CkBAIC0yMjI4LDEwICsyMjIxLDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJl
cGFyZVRvU3VzcGVuZChib29sIGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGwK
ICAgICAgICAgVU5VU0VEX1ZBUklBQkxFKHRoaXMpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogICAgIH0pOwotICAgIAotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdXNwZW5kKFtjYWxsYmFja0Fn
Z3JlZ2F0b3JdIHsgfSk7Ci0jZW5kaWYKIAogICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbJl0g
KGF1dG8mIG5ldHdvcmtTZXNzaW9uKSB7CiAgICAgICAgIHBsYXRmb3JtRmx1c2hDb29raWVzKG5l
dHdvcmtTZXNzaW9uLnNlc3Npb25JRCgpLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwpAQCAt
MjI0Nyw3ICsyMjM2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZChi
b29sIGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGwKICAgICB9CiAjZW5kaWYK
IAotICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPnN1c3BlbmQoW2NhbGxiYWNrQWdncmVnYXRvcl0g
eyB9KTsKKyAgICBtX2RhdGFiYXNlQXNzZXJ0aW9uU2NvcGUuaW50ZXJydXB0KCk7CiB9CiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkKQEAgLTIy
NzAsMjIgKzIyNTksMTMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKCkKIHsKICAgICBm
b3IgKGF1dG8mIGNvbm5lY3Rpb24gOiBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy52YWx1ZXMoKSkK
ICAgICAgICAgY29ubmVjdGlvbi0+ZW5kU3VzcGVuc2lvbigpOwotCi0jaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnJlc3VtZSgpOwotI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IGZvciAoYXV0byYgc2VydmVyIDogbV9zd1NlcnZlcnMudmFsdWVzKCkpCiAgICAgICAgIHNlcnZl
ci0+ZW5kU3VzcGVuc2lvbigpOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAg
ICBmb3IgKGF1dG8mIHNlcnZlciA6IG1fd2ViSURCU2VydmVycy52YWx1ZXMoKSkKLSAgICAgICAg
c2VydmVyLT5yZXN1bWUoKTsKLSAgICBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXIgPSBmYWxzZTsK
LSNlbmRpZgogCi0gICAgbV9zdG9yYWdlTWFuYWdlclNldC0+cmVzdW1lKCk7CisgICAgbV9kYXRh
YmFzZUFzc2VydGlvblNjb3BlLnJlc3VtZSgpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpw
cmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDc5NDgwOTdhYTNkYzM4NmEyZmQ0MWZh
ZDYyM2IzY2VjZGY4ZDdlNGEuLjY1YjZjOTU4NTdmMzFlNjE2MWE0NTgyYTMwODc5MDJiYTcwYmM1
MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBdXhpbGlhcnlQcm9jZXNzLmgiCiAjaW5jbHVk
ZSAiQ2FjaGVNb2RlbC5oIgogI2luY2x1ZGUgIkNhbGxiYWNrSUQuaCIKKyNpbmNsdWRlICJEYXRh
YmFzZUFzc2VydGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUg
IkRvd25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
ci5oIgpAQCAtNDk5LDEwICs1MDAsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkU2VydmljZVdv
cmtlclNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlF
bmFibGVkLCBTdHJpbmcmJiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBjb25z
dCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICB2b2lkIHNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wpOwotI2VuZGlm
Ci0KICAgICB2b2lkIGZpcmVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRpbWVySW1tZWRpYXRlbHko
UEFMOjpTZXNzaW9uSUQpOwogCiAgICAgY2xhc3MgU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIg
ewpAQCAtNTgwLDYgKzU3Nyw3IEBAIHByaXZhdGU6CiAgICAgV2ViU1FMaXRlRGF0YWJhc2VUcmFj
a2VyIG1fd2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyOwogICAgIFJlZlB0cjxQcm9jZXNzQXNzZXJ0
aW9uPiBtX2hvbGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uOwogI2VuZGlmCisgICAgRGF0YWJhc2VB
c3NlcnRpb25TY29wZSBtX2RhdGFiYXNlQXNzZXJ0aW9uU2NvcGU7CiAKICAgICBIYXNoTWFwPFBB
TDo6U2Vzc2lvbklELCBTdHJpbmc+IG1faWRiRGF0YWJhc2VQYXRoczsKICAgICBIYXNoTWFwPFBB
TDo6U2Vzc2lvbklELCBSZWZQdHI8V2ViSURCU2VydmVyPj4gbV93ZWJJREJTZXJ2ZXJzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3Rv
cmFnZURhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKaW5kZXggNTY5ZmRiMmRmOGY1M2VhYmNmMTkxODEy
NDMwYWI2ZmRhNjgwMjU0MC4uNzBjOTQ5YmIwMTBmNzMyMTE3NjI3OGEyNDY1YTAwMzIwZDlmNjM3
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xv
Y2FsU3RvcmFnZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCkBAIC03NSw3ICs3NSw3IEBAIGJv
b2wgTG9jYWxTdG9yYWdlRGF0YWJhc2U6Om9wZW5EYXRhYmFzZShTaG91bGRDcmVhdGVEYXRhYmFz
ZSBzaG91bGRDcmVhdGVEYXRhYmFzCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICBpZiAoIW1fZGF0YWJhc2Uub3BlbihtX2RhdGFiYXNlUGF0aCkpIHsKKyAgICBpZiAoIW1fZGF0
YWJhc2Uub3BlbihtX2RhdGFiYXNlUGF0aCwgU1FMaXRlRGF0YWJhc2U6Ok9wZW5Nb2RlOjpSZWFk
V3JpdGVDcmVhdGUsIFNRTGl0ZURhdGFiYXNlOjpJc0ludGVycnVwdGFibGU6OlllcykpIHsKICAg
ICAgICAgTE9HX0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBkYXRhYmFzZSBmaWxlICVzIGZvciBsb2Nh
bCBzdG9yYWdlIiwgbV9kYXRhYmFzZVBhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2lvcy9OZXR3b3JrUHJvY2Vzc0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
aW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCmluZGV4IDY0OTRiNWE3OThhZjY5MDgxZWEzZDdhNWEz
Y2M1NWVjODI3ZTRiZjQuLjVkMDAxMGUwMmIyNDAxZTg0ZjQ1NTQ3ODkyYTE2OTMwNDQ5MzUzMWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9j
ZXNzSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQ
cm9jZXNzSU9TLm1tCkBAIC0xMDAsMjEgKzEwMCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNs
ZWFyU2VydmljZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoQ29tcGxldGlvbkhhbmRsZXI8dm9p
CiAKICNlbmRpZiAvLyAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAKLXZvaWQgTmV0d29ya1Byb2Nl
c3M6OnNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpCi17
Ci0gICAgaWYgKCFpc0hvbGRpbmdMb2NrZWRGaWxlcykgewotICAgICAgICBtX2hvbGRpbmdMb2Nr
ZWRGaWxlQXNzZXJ0aW9uID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IGlmIChtX2hvbGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uICYmIG1faG9sZGluZ0xvY2tlZEZpbGVB
c3NlcnRpb24tPmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gV2Ugc3luY2hy
b25vdXNseSB0YWtlIGEgcHJvY2VzcyBhc3NlcnRpb24gd2hlbiBiZWdpbm5pbmcgYSBTUUxpdGUg
dHJhbnNhY3Rpb24gc28gdGhhdCB3ZSBkb24ndCBnZXQgc3VzcGVuZGVkCi0gICAgLy8gd2hpbGUg
aG9sZGluZyBhIGxvY2tlZCBmaWxlLiBXZSB3b3VsZCBnZXQga2lsbGVkIGlmIHN1c3BlbmRlZCB3
aGlsZSBob2xkaW5nIGxvY2tlZCBmaWxlcy4KLSAgICBtX2hvbGRpbmdMb2NrZWRGaWxlQXNzZXJ0
aW9uID0gUHJvY2Vzc0Fzc2VydGlvbjo6Y3JlYXRlKGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIk5l
dHdvcmsgUHJvY2VzcyBpcyBob2xkaW5nIGxvY2tlZCBmaWxlcyJfcywgUHJvY2Vzc0Fzc2VydGlv
blR5cGU6OkZpbmlzaFRhc2tVbmludGVycnVwdGFibGUsIFByb2Nlc3NBc3NlcnRpb246Ok1vZGU6
OlN5bmMpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JN
KElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhYmFzZUFz
c2VydGlvblNjb3BlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RhdGFiYXNlQXNzZXJ0aW9u
U2NvcGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhM2U0MzBmODdiMTJhNjZiY2M3ZmE5Y2ZiYTQwNzJhZDFm
MzA2OTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhYmFzZUFz
c2VydGlvblNjb3BlLmNwcApAQCAtMCwwICsxLDEwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUFzc2VydGlvblNjb3BlLmgiCisKKyNpbmNs
dWRlICJQcm9jZXNzQXNzZXJ0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFz
ZS5oPgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitEYXRhYmFzZUFzc2VydGlvblNjb3BlOjpEYXRhYmFzZUFzc2VydGlvblNjb3BlKGNvbnN0IFN0
cmluZyYgaWRlbnRpZmllcikKKyAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwg
bV9hc3NlcnRpb25SZWxlYXNlVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmRGF0YWJhc2VB
c3NlcnRpb25TY29wZTo6YXNzZXJ0aW9uUmVsZWFzZVRpbWVyRmlyZWQpCit7CisgICAgV2ViQ29y
ZTo6U1FMaXRlTG9ja1Njb3BlOjpzZXRJbXBsKHRoaXMpOworfQorCitEYXRhYmFzZUFzc2VydGlv
blNjb3BlOjp+RGF0YWJhc2VBc3NlcnRpb25TY29wZSgpCit7CisgICAgV2ViQ29yZTo6U1FMaXRl
TG9ja1Njb3BlOjpzZXRJbXBsKG51bGxwdHIpOworfQorCit2b2lkIERhdGFiYXNlQXNzZXJ0aW9u
U2NvcGU6OmJlZ2luKCkKK3sKKyAgICBpZiAobV9hc3NlcnRpb24gJiYgbV9hc3NlcnRpb24tPmlz
VmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9hc3NlcnRpb24gPSBQcm9jZXNzQXNz
ZXJ0aW9uOjpjcmVhdGUoZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCBtX2lkZW50aWZpZXIsIFByb2Nl
c3NBc3NlcnRpb25UeXBlOjpGaW5pc2hUYXNrVW5pbnRlcnJ1cHRhYmxlLCBQcm9jZXNzQXNzZXJ0
aW9uOjpNb2RlOjpTeW5jKTsKK30KKwordm9pZCBEYXRhYmFzZUFzc2VydGlvblNjb3BlOjplbmQo
KQoreworICAgIG1fYXNzZXJ0aW9uUmVsZWFzZVRpbWVyLnN0b3AoKTsKKyAgICAKKyAgICBib29s
IHNob3VsZFJlbGVhc2VBc3NlcnRpb24gPSB0cnVlOworICAgIGZvciAoYXV0byYgZGF0YWJhc2Ug
OiBtX2RhdGFiYXNlcykgeworICAgICAgICBpZiAoZGF0YWJhc2UudHJhbnNhY3Rpb25JblByb2dy
ZXNzKCkpCisgICAgICAgICAgICBzaG91bGRSZWxlYXNlQXNzZXJ0aW9uID0gZmFsc2U7CisgICAg
fQorCisgICAgaWYgKHNob3VsZFJlbGVhc2VBc3NlcnRpb24pCisgICAgICAgIG1fYXNzZXJ0aW9u
UmVsZWFzZVRpbWVyLnN0YXJ0T25lU2hvdCgxX3MpOworfQorCit2b2lkIERhdGFiYXNlQXNzZXJ0
aW9uU2NvcGU6OmFkZERhdGFiYXNlKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkK
K3sKKyAgICBtX2RhdGFiYXNlcy5hZGQoJmRhdGFiYXNlKTsKK30KKwordm9pZCBEYXRhYmFzZUFz
c2VydGlvblNjb3BlOjpyZW1vdmVEYXRhYmFzZShXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYgZGF0
YWJhc2UpCit7CisgICAgbV9kYXRhYmFzZXMucmVtb3ZlKGRhdGFiYXNlKTsKK30KKwordm9pZCBE
YXRhYmFzZUFzc2VydGlvblNjb3BlOjppbnRlcnJ1cHQoKQoreworICAgIGlmIChtX2ludGVycnVw
dGVkKQorICAgICAgICByZXR1cm47CisgICAgbV9pbnRlcnJ1cHRlZCA9IHRydWU7CisKKyAgICBX
ZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6OmxvY2soKTsKKyAgICBmb3IgKGF1dG8mIGRhdGFiYXNl
IDogbV9kYXRhYmFzZXMpCisgICAgICAgIGRhdGFiYXNlLmludGVycnVwdCgpOworCisgICAgbV9h
c3NlcnRpb25SZWxlYXNlVGltZXIuc3RvcCgpOworICAgIG1fYXNzZXJ0aW9uID0gbnVsbHB0cjsK
K30KKwordm9pZCBEYXRhYmFzZUFzc2VydGlvblNjb3BlOjpyZXN1bWUoKQoreworICAgIGlmICgh
bV9pbnRlcnJ1cHRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pbnRlcnJ1cHRlZCA9IGZh
bHNlOworICAgIFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZTo6dW5sb2NrKCk7Cit9CisKK3ZvaWQg
RGF0YWJhc2VBc3NlcnRpb25TY29wZTo6YXNzZXJ0aW9uUmVsZWFzZVRpbWVyRmlyZWQoKQorewor
ICAgIFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZTo6bG9jaygpOworICAgIG1fYXNzZXJ0aW9uID0g
bnVsbHB0cjsKKyAgICBXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6OnVubG9jaygpOworfQorCit9
IC8vIG5hbWVwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRGF0
YWJhc2VBc3NlcnRpb25TY29wZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRGF0YWJhc2VBc3Nl
cnRpb25TY29wZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlYWUzYjIyMTJiN2NmYThkOGU4MTY2MTcxZTE1NjBi
OWY3OWI4NWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhYmFz
ZUFzc2VydGlvblNjb3BlLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiV2ViQ29yZS9TUUxpdGVMb2NrU2NvcGUuaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK2NsYXNzIFByb2Nlc3NBc3NlcnRpb247CisKK2NsYXNzIERhdGFiYXNlQXNz
ZXJ0aW9uU2NvcGUgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U1FMaXRlTG9ja1Njb3BlSW1wbCB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGF0YWJhc2VBc3NlcnRpb25TY29wZSkKK3B1Ymxp
YzoKKyAgICBleHBsaWNpdCBEYXRhYmFzZUFzc2VydGlvblNjb3BlKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllcik7CisgICAgfkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGUoKTsKKworICAgIHZvaWQgYmVn
aW4oKSBmaW5hbDsKKyAgICB2b2lkIGVuZCgpIGZpbmFsOworICAgIHZvaWQgYWRkRGF0YWJhc2Uo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZURhdGFiYXNl
KFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlJikgZmluYWw7CisKKyAgICB2b2lkIGludGVycnVwdCgp
OworICAgIHZvaWQgcmVzdW1lKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBhc3NlcnRpb25SZWxl
YXNlVGltZXJGaXJlZCgpOworCisgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKKyAgICBSZWZQdHI8
UHJvY2Vzc0Fzc2VydGlvbj4gbV9hc3NlcnRpb247CisgICAgUnVuTG9vcDo6VGltZXI8RGF0YWJh
c2VBc3NlcnRpb25TY29wZT4gbV9hc3NlcnRpb25SZWxlYXNlVGltZXI7CisgICAgV2Vha0hhc2hT
ZXQ8V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U+IG1fZGF0YWJhc2VzOworICAgIGJvb2wgbV9pbnRl
cnJ1cHRlZCB7IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1h
dFJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIv
TWVkaWFGb3JtYXRSZWFkZXIuY3BwCmluZGV4IGViZjcyMTI0MjNlOWNkNWUxN2E0Mjc1YjU5YWFi
OGQxOThjNjk1YjguLjAzZTE5OWUxMWJmMmEwODFkOTA0YzI2YWY5ZTg2Yzg4OTZiZTc0YzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRp
YUZvcm1hdFJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9y
bWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
VmlkZW9UcmFja1ByaXZhdGUuaD4KICNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGlt
ZUFWRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgog
I2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRl
ci9NZWRpYVRyYWNrUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZv
cm1hdFJlYWRlci9NZWRpYVRyYWNrUmVhZGVyLmNwcAppbmRleCAxZGMxY2FlMDMwMDhlMGEyMGE0
NGFjNzNkMWFhMzcyNTM1N2YyMGZhLi4xZDllZjhmN2I4NDU5ZmIwNzQwMjdhNTcwNTgyYzBhMDE1
YjI0ODNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRS
ZWFkZXIvTWVkaWFUcmFja1JlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFj
L01lZGlhRm9ybWF0UmVhZGVyL01lZGlhVHJhY2tSZWFkZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcg
QEAgT1NTdGF0dXMgTWVkaWFUcmFja1JlYWRlcjo6Y3JlYXRlQ3Vyc29yQXRMYXN0U2FtcGxlSW5E
ZWNvZGVPcmRlcihNVFBsdWdpblNhbXBsZUMKIAogV1RGTG9nQ2hhbm5lbCYgTWVkaWFUcmFja1Jl
YWRlcjo6bG9nQ2hhbm5lbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkxvZ01lZGlh
OworICAgIHJldHVybiBMb2dNZWRpYTsKIH0KIAogY29uc3Qgdm9pZCogTWVkaWFUcmFja1JlYWRl
cjo6bmV4dFNhbXBsZUN1cnNvckxvZ0lkZW50aWZpZXIodWludDY0X3QgY3Vyc29ySUQpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggOTllOTY2YzkxMzZjNGRmOTIyZjg5ZjNkMWQwMzk3
YTdmY2ExMWYxMi4uZWQ5MTdkZmE1NGI4ZmI4YzYzNDQ1MTEzMDEzZmY1MDA3NWM5MTFlOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dApAQCAtMTQxLDYgKzE0MSw3IEBAIFNoYXJlZC9BcHBsZVBheS9t
YWMvV2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KIAogU2hhcmVkL0FQSVdlYkFyY2hp
dmUubW0KIFNoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KK1NoYXJlZC9EYXRhYmFzZUFz
c2VydGlvblNjb3BlLmNwcAogU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQubW0KIFNoYXJl
ZC9Gb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmNwcAogU2hhcmVkL1Zpc2libGVDb250ZW50UmVj
dFVwZGF0ZUluZm8uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAyNDU0ZmQ0NTE0NGJmMGQwNjlkNjBlNjZlMzBjY2JhOTU1YzU0OTUx
Li5kOWE1M2Q5MDEwMWFiNWQwZjMwYmQ4ODBlZGYwMDg0MGNhYWVhOTEyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NzgsNiArMTQ3
OCw3IEBACiAJCTkzNjhFRURFMjMwM0E5MDIwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdlclNldE1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzY4RUVEQzIzMDNBOEQ4MDBCREIxMUEgLyogU3RvcmFnZU1hbmFnZXJTZXRNZXNz
YWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk5MzY4RUVERjIzMDNBOUVEMDBCREIxMUEgLyogU3Rv
cmFnZU1hbmFnZXJTZXRNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTM2OEVFREQyMzAzQThEODAwQkRCMTFBIC8qIFN0b3JhZ2VNYW5hZ2Vy
U2V0TWVzc2FnZXMuaCAqLzsgfTsKIAkJOTM2QjA1OTgyMzAzOTA5NzAwMkZDMDZCIC8qIFN0b3Jh
Z2VNYW5hZ2VyU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzZCMDU5NTIzMDM5MDBCMDAyRkMwNkIgLyogU3RvcmFnZU1hbmFnZXJTZXQuaCAqLzsg
fTsKKwkJOTM3MDZFRkYyNjlDQzk5QTAwMkRBMTI3IC8qIERhdGFiYXNlQXNzZXJ0aW9uU2NvcGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhGMEY1
MjY5OEIzQUIwMEE5RjMzMSAvKiBEYXRhYmFzZUFzc2VydGlvblNjb3BlLmggKi87IH07CiAJCTkz
NzM1RUJCMUM5Mjk4NjMwMDMzNkZBNyAvKiBXS1ByZXZpZXdBY3Rpb25JdGVtSW50ZXJuYWwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNzM1RUJBMUM5
Mjk4NjMwMDMzNkZBNyAvKiBXS1ByZXZpZXdBY3Rpb25JdGVtSW50ZXJuYWwuaCAqLzsgfTsKIAkJ
OTM5MTA3NEYxQkY2QkM2NTAwOEMxN0FEIC8qIFdLUHJldmlld0VsZW1lbnRJbmZvSW50ZXJuYWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTEwNzRF
MUJGNkJDNjUwMDhDMTdBRCAvKiBXS1ByZXZpZXdFbGVtZW50SW5mb0ludGVybmFsLmggKi87IH07
CiAJCTkzOTFGMkNCMTIxQjY3QUQwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzkxRjI4
MzEyMUIzOEY1MDBFQkY3RTggLyogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oICovOyB9OwpA
QCAtNDkzNSw2ICs0OTM2LDggQEAKIAkJOTNFNkE0RUQxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hp
dFRlc3RSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSGl0VGVz
dFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y1NDlCMzFFMzE3NEI3
MDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTNGNTQ5QjUxRTMxNzREQTAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25m
aWd1cmF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tT
bmFwc2hvdENvbmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkz
RjhGMEY0MjY5OEIzQUIwMEE5RjMzMSAvKiBEYXRhYmFzZUFzc2VydGlvblNjb3BlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IERhdGFiYXNlQXNzZXJ0aW9uU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5M0Y4RjBGNTI2OThCM0FCMDBBOUYzMzEgLyogRGF0YWJhc2VBc3Nl
cnRpb25TY29wZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhYmFzZUFzc2VydGlvblNjb3BlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1MEYyODdFMjUyNDE0RTkwMEI3NEYxQyAvKiBX
S01vdXNlRGV2aWNlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
V0tNb3VzZURldmljZU9ic2VydmVyLmg7IHBhdGggPSBpb3MvV0tNb3VzZURldmljZU9ic2VydmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1MEYyODdGMjUyNDE0RUEwMEI3NEYx
QyAvKiBXS01vdXNlRGV2aWNlT2JzZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBXS01vdXNlRGV2aWNlT2JzZXJ2ZXIubW07IHBhdGggPSBpb3MvV0tNb3Vz
ZURldmljZU9ic2VydmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NTkzNjc1
RDI1MkU1RTMwMDBEM0YwQTAgLyogV0tTdHlsdXNEZXZpY2VPYnNlcnZlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1N0eWx1c0RldmljZU9ic2VydmVyLmg7IHBhdGggPSBp
b3MvV0tTdHlsdXNEZXZpY2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtNjc2Nyw2ICs2NzcwLDggQEAKIAkJCQk1MTA2RDdCRjE4QkRCRTczMDAwQUIxNjYgLyogQ29u
dGV4dE1lbnVDb250ZXh0RGF0YS5jcHAgKi8sCiAJCQkJNTEwNkQ3QzAxOEJEQkU3MzAwMEFCMTY2
IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuaCAqLywKIAkJCQk5OUY2NDJEMjFGQUJFMzc4MDA5
NjIxRTkgLyogQ29vcmRpbmF0ZVN5c3RlbS5oICovLAorCQkJCTkzRjhGMEY0MjY5OEIzQUIwMEE5
RjMzMSAvKiBEYXRhYmFzZUFzc2VydGlvblNjb3BlLmNwcCAqLywKKwkJCQk5M0Y4RjBGNTI2OThC
M0FCMDBBOUYzMzEgLyogRGF0YWJhc2VBc3NlcnRpb25TY29wZS5oICovLAogCQkJCTk5MDM2QUU4
MjNBOTcwODcwMDAwQjA2QSAvKiBEZWJ1Z2dhYmxlSW5mb0RhdGEuY3BwICovLAogCQkJCTk5MDM2
QUU3MjNBOTcwODcwMDAwQjA2QSAvKiBEZWJ1Z2dhYmxlSW5mb0RhdGEuaCAqLywKIAkJCQkwRjE4
OUNBQjI0NzQ5RjJGMDBFNThEODEgLyogRGlzcGxheUxpbmtPYnNlcnZlcklELmggKi8sCkBAIC0x
MTk5MSw2ICsxMTk5Niw3IEBACiAJCQkJNTc1OTdFQkQyMTgxODQ5MDAwMzdGOTI0IC8qIEN0YXBB
dXRoZW50aWNhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzU5N0VCOTIxODExRDlBMDAzN0Y5
MjQgLyogQ3RhcEhpZERyaXZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcwREFBQ0EyMzAzODVG
RDAwRThGQzA0IC8qIEN0YXBOZmNEcml2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzNzA2RUZG
MjY5Q0M5OUEwMDJEQTEyNyAvKiBEYXRhYmFzZUFzc2VydGlvblNjb3BlLmggaW4gSGVhZGVycyAq
LywKIAkJCQlDNTVGOTE3MTFDNTk2NzZFMDAyOUU5MkQgLyogRGF0YURldGVjdGlvblJlc3VsdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNzUzODAxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZl
cmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5MDM2QUU5MjNBOTcwODcwMDAwQjA2QSAvKiBE
ZWJ1Z2dhYmxlSW5mb0RhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKaW5kZXggZWVhMDAwNDRiYWZiZmJmMzVjZWY4
ODY2ODlmNDA5NTRhZDljNGYyNC4uYzg1ODllYTY0YTZiNGZmYTk4ZTY3NDIwZWFmZTk1ZjIwZmIx
NDkwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIu
Y3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiU3RvcmFnZVRyYWNrZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRmls
ZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW5EYXRhLmg+CkBAIC0zODUsMTMgKzM4Niw2IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OmRl
bGV0ZUFsbE9yaWdpbnMoKQogICAgIH0pOwogfQogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
LXN0YXRpYyB2b2lkIHRydW5jYXRlRGF0YWJhc2VGaWxlKFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFz
ZSkKLXsKLSAgICBzcWxpdGUzX2ZpbGVfY29udHJvbChkYXRhYmFzZS5zcWxpdGUzSGFuZGxlKCks
IDAsIFNRTElURV9UUlVOQ0FURV9EQVRBQkFTRSwgMCk7Ci19Ci0jZW5kaWYKLQogdm9pZCBTdG9y
YWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdpbnMoKQogewogICAgIEFTU0VSVCghaXNNYWlu
VGhyZWFkKCkpOwpAQCAtNDI5LDcgKzQyMyw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNE
ZWxldGVBbGxPcmlnaW5zKCkKIAogICAgIGlmIChtX2RhdGFiYXNlLmlzT3BlbigpKSB7CiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgdHJ1bmNhdGVEYXRhYmFzZUZpbGUobV9kYXRh
YmFzZSk7CisgICAgICAgIFNRTGl0ZUZpbGVTeXN0ZW06OnRydW5jYXRlRGF0YWJhc2VGaWxlKG1f
ZGF0YWJhc2Uuc3FsaXRlM0hhbmRsZSgpKTsKICNlbmRpZgogICAgICAgICBtX2RhdGFiYXNlLmNs
b3NlKCk7CiAgICAgfQpAQCAtNTQzLDcgKzUzNyw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5
bmNEZWxldGVPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQogCiAgICAgaWYg
KHNob3VsZERlbGV0ZVRyYWNrZXJGaWxlcykgewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgICAgIHRydW5jYXRlRGF0YWJhc2VGaWxlKG1fZGF0YWJhc2UpOworICAgICAgICBTUUxpdGVG
aWxlU3lzdGVtOjp0cnVuY2F0ZURhdGFiYXNlRmlsZShtX2RhdGFiYXNlLnNxbGl0ZTNIYW5kbGUo
KSk7CiAjZW5kaWYKICAgICAgICAgbV9kYXRhYmFzZS5jbG9zZSgpOwogI2lmICFQTEFURk9STShJ
T1NfRkFNSUxZKQo=
</data>
<flag name="commit-queue"
          id="455682"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433442</attachid>
            <date>2021-07-13 12:19:44 -0700</date>
            <delta_ts>2021-07-13 12:21:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227887-20210713121943.patch</filename>
            <type>text/plain</type>
            <size>44994</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5ODU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQ1ZGU3M2RkZDIzMzUx
MmQ3ZmU0NzIxZTMzNWU4YTgyYWE5MmVhZC4uNDkzZDQzMTQ2OGYxNjdlZWYzNDM3NGFjZTIzMjUw
ZmM5MTAzMzhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTA3LTEyICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgZmlsZSBsb2NrcyBz
eW5jaHJvbm91c2x5IG9uIFByZXBhcmVUb1N1c3BlbmQgbWVzc2FnZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3ODg3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvdGVjdCBTUUxpdGUgQVBJIGNhbGxz
IHRoYXQgbWF5IGFjcXVpcmUgZGF0YWJhc2UgZmlsZSBsb2NrIHdpdGggU1FMaXRlTG9ja1Njb3Bl
LiBBIGdsb2JhbCBsb2NrIGlzIGhlbGQgYXQgd2hlbiAKKyAgICAgICAgU1FMaXRlTG9ja1Njb3Bl
IGlzIGNyZWF0ZWQgYW5kIHJlbGVhc2VkIHdoZW4gU1FMaXRlTG9ja1Njb3BlIGlzIGRlc3Ryb3ll
ZC4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6Om9wZW4pOiBBZGQgYSBuZXcg
cGFyYW1ldGVyIGludGVycnVwdGFibGUgdG8gaW5kaWNhdGUgaWYgdGhlIGRhdGFiYXNlIHdhbnQg
aXRzCisgICAgICAgIHRyYW5zYWN0aW9uIHRvIGJlIGFib3J0ZWQgb3IgY29tbWl0dGVkIG9uIGlu
dGVycnVwdC4KKyAgICAgICAgKFdlYkNvcmU6OndhbEF1dG9tYXRpY1RydW5jYXRpb25Ib29rKToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjp1c2VXQUxKb3VybmFsTW9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2U6OmludGVycnVwdCk6IFJlbGVhc2UgZmlsZSBsb2NrIGJ5IGludGVy
cnVwdGluZyBsb25nIHF1ZXJ5IGFuZCBlbmRpbmcgdHJhbnNhY3Rpb24uCisgICAgICAgICogcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0
ZUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6dHJ1
bmNhdGVEYXRhYmFzZUZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2Nv
cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZTo6c2V0SW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6OlNRTGl0ZUxvY2tTY29wZSk6
CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6On5TUUxpdGVMb2NrU2NvcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMaXRlTG9ja1Njb3BlOjphZGREYXRhYmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6OnJlbW92ZURhdGFiYXNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9zcWwvU1FMaXRlTG9ja1Njb3BlLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVt
ZW50OjpzdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudDo6c3RlcFdpdGhv
dXRMb2NrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50Lmg6CisKIDIw
MjEtMDctMTIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dCBjYW4ndCBkcmF3IHRleHQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
MWI3OGY2OGY1MjM4OTQ2NWE1YjFjMzI1ZTU3ZGI2MjlhYjU1ZTJhZC4uOGExMGU3N2YwMDAyNTA0
ZDcyOGQzOGEyYWVhYzc4ZGMzYTliYTA5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAy
MS0wNy0xMiAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9w
IGZpbGUgbG9ja3Mgc3luY2hyb25vdXNseSBvbiBQcmVwYXJlVG9TdXNwZW5kIG1lc3NhZ2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzg4NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gbmV0d29y
ayBwcm9jZXNzIGlzIGFib3V0IHRvIHN1c3BlbmQsIGl0IHNob3VsZCByZWxlYXNlIGFsbCBkYXRh
YmFzZSBmaWxlIGxvY2tzIGFzIHNvb24gYXMgcG9zc2libGUuIE91cgorICAgICAgICBjdXJyZW50
IGltcGxlbWVudGF0aW9uIGlzIEluZGV4ZWREQiByZWxlYXNlcyBsb2NrcyBieSBhYm9ydGluZyB0
cmFuc2FjdGlvbnMgc3luY2hyb25vdXNseSBvbiBQcmVwYXJlVG9TdXNwZW5kLAorICAgICAgICBh
bmQgTG9jYWxTdG9yYWdlIGFuZCBJVFAgc2NoZWR1bGVzIHN1c3BlbmQgdGFzayB0byBiYWNrZ3Jv
dW5kIHRocmVhZHMuIEl0J3MgcG9zc2libGUgdGhhdCBzdXNwZW5kIHRhc2sKKyAgICAgICAgZG9l
cyBub3QgZ2V0IHRvIHJ1biBiZWZvcmUgbmV0d29yayBwcm9jZXNzIGdldHMgc3VzcGVuZGVkIGFj
Y29yZGluZyB0byBjcmFzaCBsb2dzLCBzbyBsZXQncyBtYWtlIHRoZSBiZWhhdmlvcgorICAgICAg
ICBjb25zaXN0ZW50IGFjcm9zcyBhbGwgZGF0YWJhc2VzLCBhbmQgbWFrZSBzdXJlIG5ldHdvcmsg
cHJvY2VzcyByZWxlYXNlcyBsb2NrcyBxdWlja2x5IG9uIFByZXBhcmVUb1N1c3BlbmQuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnJlc3VtZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURh
dGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2U6Om9wZW5E
YXRhYmFzZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9T
Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0SXNIb2xkaW5nTG9ja2Vk
RmlsZXMpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9EYXRhYmFzZUFzc2VydGlvblNjb3Bl
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGU6OkRh
dGFiYXNlQXNzZXJ0aW9uU2NvcGUpOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZUFzc2VydGlv
blNjb3BlOjp+RGF0YWJhc2VBc3NlcnRpb25TY29wZSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFi
YXNlQXNzZXJ0aW9uU2NvcGU6OmJlZ2luKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VBc3Nl
cnRpb25TY29wZTo6ZW5kKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VBc3NlcnRpb25TY29w
ZTo6YWRkRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZUFzc2VydGlvblNjb3Bl
OjpyZW1vdmVEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uU2Nv
cGU6OmludGVycnVwdCk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGU6
OnJlc3VtZSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGU6OmFzc2Vy
dGlvblJlbGVhc2VUaW1lckZpcmVkKToKKyAgICAgICAgKiBTaGFyZWQvRGF0YWJhc2VBc3NlcnRp
b25TY29wZS5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVy
L01lZGlhRm9ybWF0UmVhZGVyLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0
UmVhZGVyL01lZGlhVHJhY2tSZWFkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVRyYWNr
UmVhZGVyOjpsb2dDaGFubmVsIGNvbnN0KToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIxLTA3LTEy
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cmV2ZXJ0aW5nIHIyNzk4MzUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDYyM2U3YjY1YmIyNzZm
MjE5YWU3NzM2MmNmOGZkMmU0YTUyMzUwYzIuLmU5YzlmZjQyOTBlMTgxZDU1OGM3OGI5ZjQ2ZDU1
MDQxYzAwNzBhNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEt
MDctMTIgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBm
aWxlIGxvY2tzIHN5bmNocm9ub3VzbHkgb24gUHJlcGFyZVRvU3VzcGVuZCBtZXNzYWdlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc4ODcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3Rv
cmFnZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6c3luY0Rl
bGV0ZUFsbE9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6c3luY0Rl
bGV0ZU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OnRydW5jYXRlRGF0YWJhc2VGaWxlKTogRGVs
ZXRlZC4KKwogMjAyMS0wNi0yMSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAog
ICAgICAgICBNYWtlIEluUHJvY2Vzc0lEQlNlcnZlciB1c2UgV29ya1F1ZXVlIGluc3RlYWQgb2Yg
VGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDNjYmZhNWFiNWE0YmY1ODQ0OTZhYjYxMzNjZTMwOGQ0
OTkyM2JhMDIuLjVmMWQ0NGUxZDM5NWY4NDg3NjQ0ZTQ2MTQ4YTc4ZDRhZWRjMTg1M2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CkBAIC0yMTg4LDYgKzIxODgsNyBAQCBwbGF0Zm9ybS9zcWwvU1FMaXRlQXV0aG9y
aXplci5jcHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKIHBsYXRmb3JtL3NxbC9T
UUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5j
cHAKK3BsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2NvcGUuY3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRl
U3RhdGVtZW50LmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3Bl
LmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGUyYTJmOThhNWIx
YWE2Y2JlOWY3NzA2YzUxMDAxN2M1OGY0NGU0Y2IuLmRjMjczZDAzMWMyY2M2YjBjOGNkOGYyN2M3
NDhhOWI0MGExZDFmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTI5MzEsNiArMjkzMSw3IEBACiAJCTkzRjZCODFGMjU2N0Ew
OEMwMEEwODQ4OCAvKiBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y2QjgxQzI1Njc5Rjcw
MDBBMDg0ODggLyogU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjZCODIyMjU2N0E2
NTYwMEEwODQ4OCAvKiBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjZCODFCMjU2NzlGNkYwMEEw
ODQ4OCAvKiBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Y2RjFFRTEyN0Y3MEIxMDA1NUNC
MDYgLyogV2ViR0xDb250ZXh0RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzRjZGMUVCMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRF
dmVudC5oICovOyB9OworCQk5M0Y4RjBGMzI2OTgyNjEzMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Nj
b3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y4
RjBGMTI2OTgyNjEyMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGOTI1NDMwRjdFRjVCODAwN0Uz
N0M5IC8qIFJhZGlvQnV0dG9uR3JvdXBzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0Y5MjU0MTBGN0VGNUI4MDA3RTM3QzkgLyogUmFkaW9CdXR0b25H
cm91cHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5M0Y5QjZFMTBCQTBGQjcyMDA4NTQwNjQgLyogSlNDb21tZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y5QjZERjBCQTBGQjcyMDA4NTQwNjQg
LyogSlNDb21tZW50LmggKi87IH07CiAJCTkzRjlCN0ExMEJBNjAzMjYwMDg1NDA2NCAvKiBKU0NE
QVRBU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNGOUI3OUYwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmggKi87IH07CkBA
IC0xMTgzNCw2ICsxMTgzNSw4IEBACiAJCTkzRjhCMzA1MEEzMDBGRTEwMEY2MUFCOCAvKiBDb2Rl
R2VuZXJhdG9yLnBtICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IENvZGVHZW5l
cmF0b3IucG07IHBhdGggPSBzY3JpcHRzL0NvZGVHZW5lcmF0b3IucG07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzRjhCMzA2MEEzMDBGRUEwMEY2MUFCOCAvKiBDb2RlR2VuZXJhdG9y
SlMucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gQ29kZUdlbmVyYXRvckpT
LnBtOyBwYXRoID0gc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHdyYXBzTGluZXMgPSAwOyB9OwogCQk5M0Y4QjMwNzBBMzAwRkVBMDBGNjFBQjggLyog
Z2VuZXJhdGUtYmluZGluZ3MucGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0g
ImdlbmVyYXRlLWJpbmRpbmdzLnBsIjsgcGF0aCA9ICJzY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdz
LnBsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNGOEYwRUYyNjk4MjYxMjAwQTlG
MzMxIC8qIFNRTGl0ZUxvY2tTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTUUxpdGVMb2NrU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5M0Y4RjBGMTI2OTgyNjEyMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTGl0ZUxvY2tTY29wZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5M0Y5MjU0MTBGN0VGNUI4MDA3RTM3QzkgLyogUmFkaW9CdXR0b25H
cm91cHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFkaW9CdXR0b25Hcm91
cHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGOTI1NDIwRjdFRjVCODAwN0Uz
N0M5IC8qIFJhZGlvQnV0dG9uR3JvdXBzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJhZGlvQnV0dG9uR3JvdXBzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNGOUI2REUwQkEwRkI3MjAwODU0MDY0IC8qIEpTQ29tbWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NvbW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTg1MzUsNiArMTg1MzgsOCBAQAogCQkJCTdFNDc0RTFCMTI0OTRE
QzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCAqLywKIAkJCQlCNUE2
ODQyMzBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5jcHAgKi8sCiAJCQkJQjVB
Njg0MjEwRkZBQkU5ODAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uaCAqLywKKwkJCQk5M0Y4
RjBFRjI2OTgyNjEyMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmNwcCAqLywKKwkJCQk5M0Y4
RjBGMTI2OTgyNjEyMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmggKi8sCiAJCQkJMUEyMjQ2
NDUwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZVN0YXRlbWVudC5jcHAgKi8sCiAJCQkJMUEyMjQ2
NDYwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZVN0YXRlbWVudC5oICovLAogCQkJCUVCRTVCMjI3
MjQ1QTI5Q0YwMDNBNUE4OCAvKiBTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZS5jcHAgKi8s
CkBAIC0zNTM4NSw2ICszNTM5MCw3IEBACiAJCQkJNTEyQkRCNEIxQzQ1NkZGQTAwNjQ5NERGIC8q
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExRUMxMzAxQzUw
QUJGNTAwMzJGOTgzIC8qIFNRTGl0ZUlEQkN1cnNvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEx
RUMxMkMxQzUwQUJCRjAwMzJGOTgzIC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5M0Y4RjBGMzI2OTgyNjEzMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTIyNDY0QzBDQzk4RERCMDBDMDUyNDAgLyogU1FMaXRlU3Rh
dGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFQkU1QjIyNjI0NUEyNkVGMDAzQTVBODggLyog
U1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjI0
NjRFMENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAppbmRl
eCBhMTExMDI1NjgxZTQ2OTMxMjNmYmM4Y2I0OTBhODM3MGRiMzljMTgzLi4zYzUyZTE3MDljY2Qw
NjhjMTZmOTZiNGVlZWYwMzg3ZWQ4OWNhZjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJN
ZW1vcnlSZWxlYXNlLmgiCiAjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5j
bHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIlNRTGl0ZUxvY2tTY29wZS5oIgog
I2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUg
PHNxbGl0ZTMuaD4KQEAgLTg4LDcgKzg5LDcgQEAgU1FMaXRlRGF0YWJhc2U6On5TUUxpdGVEYXRh
YmFzZSgpCiAgICAgY2xvc2UoKTsKIH0KIAotYm9vbCBTUUxpdGVEYXRhYmFzZTo6b3Blbihjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBPcGVuTW9kZSBvcGVuTW9kZSkKK2Jvb2wgU1FMaXRlRGF0YWJh
c2U6Om9wZW4oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgT3Blbk1vZGUgb3Blbk1vZGUsIElzSW50
ZXJydXB0YWJsZSBpbnRlcnJ1cHRhYmxlKQogewogICAgIGluaXRpYWxpemVTUUxpdGVJZk5lY2Vz
c2FyeSgpOwogCkBAIC0xMTQsNyArMTE1LDE0IEBAIGJvb2wgU1FMaXRlRGF0YWJhc2U6Om9wZW4o
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgT3Blbk1vZGUgb3Blbk1vZGUpCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogCi0gICAgICAgIG1fb3BlbkVycm9yID0gc3FsaXRlM19vcGVuX3Yy
KEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlbmFtZSkuZGF0YSgpLCAm
bV9kYiwgZmxhZ3MsIG51bGxwdHIpOworICAgICAgICB7CisgICAgICAgICAgICBTUUxpdGVMb2Nr
U2NvcGUgbG9ja1Njb3BlOworICAgICAgICAgICAgbV9vcGVuRXJyb3IgPSBzcWxpdGUzX29wZW5f
djIoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVuYW1lKS5kYXRhKCks
ICZtX2RiLCBmbGFncywgbnVsbHB0cik7CisgICAgICAgICAgICBtX2ludGVycnVwdGFibGUgPSBp
bnRlcnJ1cHRhYmxlOworICAgICAgICAgICAgaWYgKG1fb3BlbkVycm9yID09IFNRTElURV9PSykK
KyAgICAgICAgICAgICAgICBsb2NrU2NvcGUuYWRkRGF0YWJhc2UoKnRoaXMpOworICAgICAgICB9
CisKICAgICAgICAgaWYgKG1fb3BlbkVycm9yICE9IFNRTElURV9PSykgewogICAgICAgICAgICAg
bV9vcGVuRXJyb3JNZXNzYWdlID0gbV9kYiA/IHNxbGl0ZTNfZXJybXNnKG1fZGIpIDogInNxbGl0
ZV9vcGVuIHJldHVybmVkIG51bGwiOwogICAgICAgICAgICAgTE9HX0VSUk9SKCJTUUxpdGUgZGF0
YWJhc2UgZmFpbGVkIHRvIGxvYWQgZnJvbSAlc1xuQ2F1c2UgLSAlcyIsIGZpbGVuYW1lLmFzY2lp
KCkuZGF0YSgpLApAQCAtMTY3LDYgKzE3NSw3IEBAIHN0YXRpYyBpbnQgd2FsQXV0b21hdGljVHJ1
bmNhdGlvbkhvb2sodm9pZCogY29udGV4dCwgc3FsaXRlMyogZGIsIGNvbnN0IGNoYXIqIGRiCiAK
ICAgICBpZiAod2FsUGFnZUNvdW50ID49IGNoZWNrcG9pbnRUaHJlc2hvbGQpIHsKICAgICAgICAg
aW50IG5ld1dhbFBhZ2VDb3VudCA9IDA7CisgICAgICAgIEFTU0VSVChTUUxpdGVMb2NrU2NvcGU6
OmlzSW5zaWRlU2NvcGUoKSk7CiAgICAgICAgIGludCByZXN1bHQgPSBzcWxpdGUzX3dhbF9jaGVj
a3BvaW50X3YyKGRiLCBkYk5hbWUsIFNRTElURV9DSEVDS1BPSU5UX1RSVU5DQVRFLCAmbmV3V2Fs
UGFnZUNvdW50LCBudWxscHRyKTsKIAogI2lmIExPR19ESVNBQkxFRApAQCAtMTk0LDcgKzIwMyw2
IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmVuYWJsZUF1dG9tYXRpY1dBTFRydW5jYXRpb24oKQog
CiB2b2lkIFNRTGl0ZURhdGFiYXNlOjp1c2VXQUxKb3VybmFsTW9kZSgpCiB7Ci0gICAgbV91c2VX
QUwgPSB0cnVlOwogICAgIHsKICAgICAgICAgYXV0byB3YWxTdGF0ZW1lbnQgPSBwcmVwYXJlU3Rh
dGVtZW50KCJQUkFHTUEgam91cm5hbF9tb2RlPVdBTDsiX3MpOwogICAgICAgICBpZiAod2FsU3Rh
dGVtZW50ICYmIHdhbFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKQEAgLTIzMiwx
MiArMjQwLDExIEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmNsb3NlKFNob3VsZFNldEVycm9yU3Rh
dGUgc2hvdWxkU2V0RXJyb3JTdGF0ZSkKICAgICAgICAgfQogCiAgICAgICAgIGludCBjbG9zZVJl
c3VsdDsKLSAgICAgICAgaWYgKG1fdXNlV0FMKSB7Ci0gICAgICAgICAgICAvLyBDbG9zZSBpbiB0
aGUgc2NvcGUgb2YgY291bnRlciBhcyBpdCBtYXkgYWNxdWlyZSBsb2NrIG9mIGRhdGFiYXNlLgot
ICAgICAgICAgICAgU1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNh
Y3Rpb25Db3VudGVyOwotICAgICAgICAgICAgY2xvc2VSZXN1bHQgPSBzcWxpdGUzX2Nsb3NlKGRi
KTsKLSAgICAgICAgfSBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIFNRTGl0ZUxvY2tTY29w
ZSBsb2NrU2NvcGU7CiAgICAgICAgICAgICBjbG9zZVJlc3VsdCA9IHNxbGl0ZTNfY2xvc2UoZGIp
OworICAgICAgICAgICAgbG9ja1Njb3BlLnJlbW92ZURhdGFiYXNlKCp0aGlzKTsKKyAgICAgICAg
fQogCiAgICAgICAgIGlmIChjbG9zZVJlc3VsdCAhPSBTUUxJVEVfT0spCiAgICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihTUUxEYXRhYmFzZSwgIlNRTGl0ZURhdGFiYXNlOjpjbG9zZTogRmFp
bGVkIHRvIGNsb3NlIGRhdGFiYXNlICglZCkgLSAle3B1YmxpY31zIiwgY2xvc2VSZXN1bHQsIGxh
c3RFcnJvck1zZygpKTsKQEAgLTQ1OCw4ICs0NjUsMTUgQEAgaW50IFNRTGl0ZURhdGFiYXNlOjpy
dW5JbmNyZW1lbnRhbFZhY3V1bUNvbW1hbmQoKQogdm9pZCBTUUxpdGVEYXRhYmFzZTo6aW50ZXJy
dXB0KCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhYmFzZUNsb3NpbmdNdXRleCB9Owot
ICAgIGlmIChtX2RiKQotICAgICAgICBzcWxpdGUzX2ludGVycnVwdChtX2RiKTsKKyAgICAKKyAg
ICBpZiAoIW1fZGIpCisgICAgICAgIHJldHVybjsKKworICAgIHNxbGl0ZTNfaW50ZXJydXB0KG1f
ZGIpOworCisgICAgQVNDSUlMaXRlcmFsIHF1ZXJ5U3RyaW5nID0gbV9pbnRlcnJ1cHRhYmxlID09
IElzSW50ZXJydXB0YWJsZTo6WWVzID8gIkNPTU1JVCJfcyA6ICJST0xMQkFDSyJfczsKKyAgICBp
ZiAoYXV0byBxdWVyeSA9IHByZXBhcmVTdGF0ZW1lbnQocXVlcnlTdHJpbmcpKQorICAgICAgICBx
dWVyeS0+c3RlcFdpdGhvdXRMb2NrKCk7CiB9CiAKIGludDY0X3QgU1FMaXRlRGF0YWJhc2U6Omxh
c3RJbnNlcnRSb3dJRCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZS5oCmluZGV4IDRiMjJjOGZlNjhlMzVmYmRkMDk3MjU4NjhjNGM5YTBlNWNhYjJjZjAuLjA5
Y2YwZmFmMGEzNjY2MzUyZGRhY2Y0ZGJmMWMyODU4OWVhMmEwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCkBAIC01Nyw3ICs1Nyw4IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB+U1FMaXRlRGF0YWJhc2UoKTsKIAogICAgIGVudW0gY2xh
c3MgT3Blbk1vZGUgeyBSZWFkT25seSwgUmVhZFdyaXRlLCBSZWFkV3JpdGVDcmVhdGUgfTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZW4oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgT3Blbk1v
ZGUgPSBPcGVuTW9kZTo6UmVhZFdyaXRlQ3JlYXRlKTsKKyAgICBlbnVtIGNsYXNzIElzSW50ZXJy
dXB0YWJsZSA6IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVu
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIE9wZW5Nb2RlID0gT3Blbk1vZGU6OlJlYWRXcml0ZUNy
ZWF0ZSwgSXNJbnRlcnJ1cHRhYmxlID0gSXNJbnRlcnJ1cHRhYmxlOjpObyk7CiAgICAgYm9vbCBp
c09wZW4oKSBjb25zdCB7IHJldHVybiBtX2RiOyB9CiAgICAgZW51bSBjbGFzcyBTaG91bGRTZXRF
cnJvclN0YXRlIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNs
b3NlKFNob3VsZFNldEVycm9yU3RhdGUgPSBTaG91bGRTZXRFcnJvclN0YXRlOjpZZXMpOwpAQCAt
MTgxLDggKzE4Miw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IG1fc3Rh
dGVtZW50Q291bnQgeyAwIH07CiAjZW5kaWYKIAotICAgIGJvb2wgbV91c2VXQUwgeyBmYWxzZSB9
OwotCiAgICAgTG9jayBtX2F1dGhvcml6ZXJMb2NrOwogICAgIFJlZlB0cjxEYXRhYmFzZUF1dGhv
cml6ZXI+IG1fYXV0aG9yaXplciBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fYXV0aG9yaXplckxvY2sp
OwogCkBAIC0xOTMsNiArMTkyLDggQEAgcHJpdmF0ZToKIAogICAgIGludCBtX29wZW5FcnJvciB7
IFNRTElURV9FUlJPUiB9OwogICAgIENTdHJpbmcgbV9vcGVuRXJyb3JNZXNzYWdlOworCisgICAg
SXNJbnRlcnJ1cHRhYmxlIG1faW50ZXJydXB0YWJsZSB7IElzSW50ZXJydXB0YWJsZTo6Tm8gfTsK
IH07CiAKIGlubGluZSB2b2lkIFNRTGl0ZURhdGFiYXNlOjppbmNyZW1lbnRTdGF0ZW1lbnRDb3Vu
dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5
c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5j
cHAKaW5kZXggNzZlNDVhZjM0ZWQwOTNmZDlmMjc2ZGQ1ZDRiOTIyYTQxNjM0ZDlhZS4uOGI5YjMy
MWRjNjQ4MTAwZmNiZjRjNWMyMmY1MGYxNGIxNWEzMTg4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIlNRTGl0ZUZpbGVTeXN0ZW0uaCIKIAogI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNl
LmgiCisjaW5jbHVkZSAiU1FMaXRlTG9ja1Njb3BlLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVt
ZW50LmgiCiAjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNsdWRlIDxz
cWxpdGUzLmg+CkBAIC05NCw2ICs5NSw3IEBAIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRl
RGF0YWJhc2VGaWxlKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6dHJ1bmNhdGVEYXRhYmFzZUZpbGUoc3FsaXRl
MyogZGF0YWJhc2UpCiB7CisgICAgU1FMaXRlTG9ja1Njb3BlIGxvY2tTY29wZTsKICAgICByZXR1
cm4gc3FsaXRlM19maWxlX2NvbnRyb2woZGF0YWJhc2UsIDAsIFNRTElURV9UUlVOQ0FURV9EQVRB
QkFTRSwgMCkgPT0gU1FMSVRFX09LOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaAppbmRleCBjNjhkOWM3ZTdhZjk4OTc2YTFlZDNk
Y2I2ZjJhY2ZlNGI2Y2Y1YzJmLi5kMzI2OGJkODVjY2U0MjJhNmUzN2E4OWIyMzAyZGY0ZjZmOGVk
N2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5
c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVt
LmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIC8vIFRydW5jYXRlcyBhIGRhdGFiYXNl
IGZpbGUuIFVzZWQgd2hlbiBNb2JpbGVTYWZhcmlTZXR0aW5ncyBkZWxldGVzIGEgZGF0YWJhc2Ug
ZmlsZSwKICAgICAvLyBzaW5jZSBkZWxldGluZyB0aGUgZmlsZSBudWtlcyB0aGUgUE9TSVggZmls
ZSBsb2NrcyB3aGljaCB3b3VsZCBwb3RlbnRpYWxseSBjYXVzZSBTYWZhcmkKICAgICAvLyB0byBj
b3JydXB0IHRoZSBuZXcgZGIgaWYgaXQncyBydW5uaW5nIGluIHRoZSBiYWNrZ3JvdW5kLgotICAg
IHN0YXRpYyBib29sIHRydW5jYXRlRGF0YWJhc2VGaWxlKHNxbGl0ZTMqIGRhdGFiYXNlKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCB0cnVuY2F0ZURhdGFiYXNlRmlsZShzcWxpdGUz
KiBkYXRhYmFzZSk7CiAjZW5kaWYKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdWlu
dDY0X3QgZGF0YWJhc2VGaWxlU2l6ZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2NvcGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUxvY2tTY29wZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmJmZTczZTljZDQ0YmU4OGVlOTI1MWM5NmRkODNhNDFlZDgzYzY3MgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2NvcGUuY3BwCkBAIC0w
LDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
U1FMaXRlTG9ja1Njb3BlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIExvY2sg
c2NvcGVMb2NrOworc3RhdGljIFNRTGl0ZUxvY2tTY29wZUltcGwqIHNfaW1wbCB7IG51bGxwdHIg
fTsKK3N0YXRpYyBib29sIGlzTG9ja2VkRXh0ZXJuYWxseSB7IGZhbHNlIH07CisKK3ZvaWQgU1FM
aXRlTG9ja1Njb3BlOjpzZXRJbXBsKFNRTGl0ZUxvY2tTY29wZUltcGwqIGltcGwpCit7CisgICAg
TG9ja2VyIGxvY2tlciB7IHNjb3BlTG9jayB9OworICAgIHNfaW1wbCA9IGltcGw7Cit9CisKK3Zv
aWQgU1FMaXRlTG9ja1Njb3BlOjpsb2NrKCkgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFM
WVNJUworeworICAgIHNjb3BlTG9jay5sb2NrKCk7CisgICAgaXNMb2NrZWRFeHRlcm5hbGx5ID0g
dHJ1ZTsKK30KKwordm9pZCBTUUxpdGVMb2NrU2NvcGU6OnVubG9jaygpIFdURl9JR05PUkVTX1RI
UkVBRF9TQUZFVFlfQU5BTFlTSVMKK3sKKyAgICBpc0xvY2tlZEV4dGVybmFsbHkgPSBmYWxzZTsK
KyAgICBzY29wZUxvY2sudW5sb2NrKCk7Cit9CisKK2Jvb2wgU1FMaXRlTG9ja1Njb3BlOjppc0lu
c2lkZVNjb3BlKCkKK3sKKyAgICByZXR1cm4gc2NvcGVMb2NrLmlzTG9ja2VkKCkgJiYgIWlzTG9j
a2VkRXh0ZXJuYWxseTsKK30KKworU1FMaXRlTG9ja1Njb3BlOjpTUUxpdGVMb2NrU2NvcGUoKQor
eworICAgIHNjb3BlTG9jay5sb2NrKCk7CisgICAgaWYgKHNfaW1wbCkKKyAgICAgICAgc19pbXBs
LT5iZWdpbigpOworfQorCitTUUxpdGVMb2NrU2NvcGU6On5TUUxpdGVMb2NrU2NvcGUoKQorewor
ICAgIGlmIChzX2ltcGwpCisgICAgICAgIHNfaW1wbC0+ZW5kKCk7CisgICAgc2NvcGVMb2NrLnVu
bG9jaygpOworfQorCit2b2lkIFNRTGl0ZUxvY2tTY29wZTo6YWRkRGF0YWJhc2UoU1FMaXRlRGF0
YWJhc2UmIGRhdGFiYXNlKQoreworICAgIGlmIChzX2ltcGwpCisgICAgICAgIHNfaW1wbC0+YWRk
RGF0YWJhc2UoZGF0YWJhc2UpOworfQorCit2b2lkIFNRTGl0ZUxvY2tTY29wZTo6cmVtb3ZlRGF0
YWJhc2UoU1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQoreworICAgIGlmIChzX2ltcGwpCisgICAg
ICAgIHNfaW1wbC0+cmVtb3ZlRGF0YWJhc2UoZGF0YWJhc2UpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
TG9ja1Njb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlTG9ja1Njb3Bl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTg2NjE0YzE2MDA2YjAyYWQ5YjI5OTQzNzhkOWY2ODljNGY5NGVmOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVMb2Nr
U2NvcGUuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1FMaXRlRGF0YWJhc2U7CitjbGFzcyBTUUxpdGVU
cmFuc2FjdGlvbjsKKworY2xhc3MgU1FMaXRlTG9ja1Njb3BlSW1wbCB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+U1FMaXRlTG9ja1Njb3BlSW1wbCgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwg
dm9pZCBiZWdpbigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kKCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBhZGREYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmKSA9IDA7Cit9OworCitjbGFzcyBTUUxp
dGVMb2NrU2NvcGUgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNl
dEltcGwoU1FMaXRlTG9ja1Njb3BlSW1wbCopOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIGxvY2soKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCB1bmxvY2soKTsKKyAg
ICBzdGF0aWMgYm9vbCBpc0luc2lkZVNjb3BlKCk7CisKKyAgICBTUUxpdGVMb2NrU2NvcGUoKTsK
KyAgICB+U1FMaXRlTG9ja1Njb3BlKCk7CisKKyAgICB2b2lkIGFkZERhdGFiYXNlKFNRTGl0ZURh
dGFiYXNlJik7CisgICAgdm9pZCByZW1vdmVEYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYpOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlU3RhdGVtZW50LmNwcAppbmRleCBiMDg0OWU2ZjgwOGNhMzgwYjA4YzYyNzRiMDRk
MTQ5Y2MwMzNjMDg3Li5iMzcxY2RiNGU1YjJmMmRjMGQ2YWI2YWI3ZWM0NTcxZjVlMjZiZGIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcApA
QCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNRTFZh
bHVlLmgiCisjaW5jbHVkZSAiU1FMaXRlTG9ja1Njb3BlLmgiCiAjaW5jbHVkZSA8c3FsaXRlMy5o
PgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4K
QEAgLTY2LDYgKzY3LDIyIEBAIGludCBTUUxpdGVTdGF0ZW1lbnQ6OnN0ZXAoKQogewogICAgIExv
Y2tlciBkYXRhYmFzZUxvY2sgeyBtX2RhdGFiYXNlLmRhdGFiYXNlTXV0ZXgoKSB9OwogCisgICAg
aW50IGVycm9yOworICAgIHsKKyAgICAgICAgU1FMaXRlTG9ja1Njb3BlIGxvY2tTY29wZTsKKyAg
ICAgICAgZXJyb3IgPSBzcWxpdGUzX3N0ZXAobV9zdGF0ZW1lbnQpOworICAgIH0KKworICAgIGlm
IChlcnJvciAhPSBTUUxJVEVfRE9ORSAmJiBlcnJvciAhPSBTUUxJVEVfUk9XKQorICAgICAgICBM
T0coU1FMRGF0YWJhc2UsICJzcWxpdGUzX3N0ZXAgZmFpbGVkICglaSlcbkVycm9yIC0gJXMiLCBl
cnJvciwgc3FsaXRlM19lcnJtc2cobV9kYXRhYmFzZS5zcWxpdGUzSGFuZGxlKCkpKTsKKworICAg
IHJldHVybiBlcnJvcjsKK30KKworaW50IFNRTGl0ZVN0YXRlbWVudDo6c3RlcFdpdGhvdXRMb2Nr
KCkKK3sKKyAgICBMb2NrZXIgZGF0YWJhc2VMb2NrIHsgbV9kYXRhYmFzZS5kYXRhYmFzZU11dGV4
KCkgfTsKKwogICAgIGludCBlcnJvciA9IHNxbGl0ZTNfc3RlcChtX3N0YXRlbWVudCk7CiAgICAg
aWYgKGVycm9yICE9IFNRTElURV9ET05FICYmIGVycm9yICE9IFNRTElURV9ST1cpCiAgICAgICAg
IExPRyhTUUxEYXRhYmFzZSwgInNxbGl0ZTNfc3RlcCBmYWlsZWQgKCVpKVxuRXJyb3IgLSAlcyIs
IGVycm9yLCBzcWxpdGUzX2Vycm1zZyhtX2RhdGFiYXNlLnNxbGl0ZTNIYW5kbGUoKSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oCmluZGV4IGNmMmYx
MjBmMmU3NTNhZDhkMTMxNzBmZDBkODcwMDE2OWRlYmMxNTUuLjhhY2ZkNjkyZjVlZDNlMjg0ODc5
N2M1Y2ExYzk4MGI4OThlNDFiY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVTdGF0ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlU3RhdGVtZW50LmgKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHVuc2lnbmVkIGJpbmRQYXJhbWV0ZXJDb3VudCgpIGNvbnN0OwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgaW50IHN0ZXAoKTsKKyAgICBpbnQgc3RlcFdpdGhvdXRMb2NrKCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgaW50IHJlc2V0KCk7CiAgICAgCiAgICAgLy8gc3RlcHMgYW5kIGZpbmFsaXpl
cyB0aGUgcXVlcnkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCmluZGV4IGFlYTJmYWE1OGExNTgxZjAwYmY1NmJjZWVlZDE3N2I0NGE0MzYwOTYu
LjhjYWM2OTc2MDc0M2UyMWQ4NzI5ZDJiNjVjOTg1NzRjZjQwMGZhNmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQXV4aWxp
YXJ5UHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1
ZGUgIkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJEb3dubG9hZC5oIgogI2lu
Y2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9N
X1BST1RPQ09MX01BTkFHRVIpCkBAIC0xNTgsOSArMTU5LDcgQEAgTmV0d29ya1Byb2Nlc3M6Ok5l
dHdvcmtQcm9jZXNzKEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWUKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgICwgbV9uZXR3b3JrQ29u
dGVudFJ1bGVMaXN0TWFuYWdlcigqdGhpcykKICNlbmRpZgotI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgLCBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcihbdGhpc10oYm9vbCBpc0hvbGRp
bmdMb2NrZWRGaWxlcykgeyBzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhpc0hvbGRpbmdMb2NrZWRG
aWxlcyk7IH0pCi0jZW5kaWYKKyAgICAsIG1fZGF0YWJhc2VBc3NlcnRpb25TY29wZSgiTmV0d29y
ayBQcm9jZXNzIGlzIGhvbGRpbmcgbG9ja2VkIGZpbGVzIikKICAgICAsIG1fbWVzc2FnZVBvcnRD
aGFubmVsUmVnaXN0cnkoY3JlYXRlTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoKnRoaXMpKQog
ewogICAgIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzOjppbml0aWFsaXplKCk7CkBA
IC0yMjE1LDEyICsyMjE0LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVu
ZChib29sIGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGwKIHsKICAgICBSRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVU
b1N1c3BlbmQoKSwgaXNTdXNwZW5zaW9uSW1taW5lbnQ9JWQiLCB0aGlzLCBpc1N1c3BlbnNpb25J
bW1pbmVudCk7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGZvciAoYXV0byYgc2Vy
dmVyIDogbV93ZWJJREJTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBzZXJ2ZXItPnN1c3BlbmQo
KTsKLSAgICBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXIgPSB0cnVlOwotI2VuZGlmCi0KICAgICBs
b3dNZW1vcnlIYW5kbGVyKENyaXRpY2FsOjpZZXMpOwogCiAgICAgUmVmUHRyPENhbGxiYWNrQWdn
cmVnYXRvcj4gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUo
W3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CkBAIC0yMjI4LDEwICsyMjIxLDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJl
cGFyZVRvU3VzcGVuZChib29sIGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGwK
ICAgICAgICAgVU5VU0VEX1ZBUklBQkxFKHRoaXMpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogICAgIH0pOwotICAgIAotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdXNwZW5kKFtjYWxsYmFja0Fn
Z3JlZ2F0b3JdIHsgfSk7Ci0jZW5kaWYKIAogICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbJl0g
KGF1dG8mIG5ldHdvcmtTZXNzaW9uKSB7CiAgICAgICAgIHBsYXRmb3JtRmx1c2hDb29raWVzKG5l
dHdvcmtTZXNzaW9uLnNlc3Npb25JRCgpLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwpAQCAt
MjI0Nyw3ICsyMjM2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZChi
b29sIGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGwKICAgICB9CiAjZW5kaWYK
IAotICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPnN1c3BlbmQoW2NhbGxiYWNrQWdncmVnYXRvcl0g
eyB9KTsKKyAgICBtX2RhdGFiYXNlQXNzZXJ0aW9uU2NvcGUuaW50ZXJydXB0KCk7CiB9CiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkKQEAgLTIy
NzAsMjIgKzIyNTksMTMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKCkKIHsKICAgICBm
b3IgKGF1dG8mIGNvbm5lY3Rpb24gOiBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy52YWx1ZXMoKSkK
ICAgICAgICAgY29ubmVjdGlvbi0+ZW5kU3VzcGVuc2lvbigpOwotCi0jaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnJlc3VtZSgpOwotI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IGZvciAoYXV0byYgc2VydmVyIDogbV9zd1NlcnZlcnMudmFsdWVzKCkpCiAgICAgICAgIHNlcnZl
ci0+ZW5kU3VzcGVuc2lvbigpOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAg
ICBmb3IgKGF1dG8mIHNlcnZlciA6IG1fd2ViSURCU2VydmVycy52YWx1ZXMoKSkKLSAgICAgICAg
c2VydmVyLT5yZXN1bWUoKTsKLSAgICBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXIgPSBmYWxzZTsK
LSNlbmRpZgogCi0gICAgbV9zdG9yYWdlTWFuYWdlclNldC0+cmVzdW1lKCk7CisgICAgbV9kYXRh
YmFzZUFzc2VydGlvblNjb3BlLnJlc3VtZSgpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpw
cmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDc5NDgwOTdhYTNkYzM4NmEyZmQ0MWZh
ZDYyM2IzY2VjZGY4ZDdlNGEuLjJkZGZhN2RhZmZjMmRjZDY3NmFlZGE4ZGM0ZjAwOWU1ZDM0YWIz
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBdXhpbGlhcnlQcm9jZXNzLmgiCiAjaW5jbHVk
ZSAiQ2FjaGVNb2RlbC5oIgogI2luY2x1ZGUgIkNhbGxiYWNrSUQuaCIKKyNpbmNsdWRlICJEYXRh
YmFzZUFzc2VydGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUg
IkRvd25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
ci5oIgpAQCAtNDk5LDEwICs1MDAsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkU2VydmljZVdv
cmtlclNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlF
bmFibGVkLCBTdHJpbmcmJiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBjb25z
dCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICB2b2lkIHNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wpOwotI2VuZGlm
Ci0KICAgICB2b2lkIGZpcmVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRpbWVySW1tZWRpYXRlbHko
UEFMOjpTZXNzaW9uSUQpOwogCiAgICAgY2xhc3MgU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIg
ewpAQCAtNTc2LDEwICs1NzMsNyBAQCBwcml2YXRlOgogICAgIE5ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyIG1fbmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI7CiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyIG1fd2Vi
U1FMaXRlRGF0YWJhc2VUcmFja2VyOwotICAgIFJlZlB0cjxQcm9jZXNzQXNzZXJ0aW9uPiBtX2hv
bGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uOwotI2VuZGlmCisgICAgRGF0YWJhc2VBc3NlcnRpb25T
Y29wZSBtX2RhdGFiYXNlQXNzZXJ0aW9uU2NvcGU7CiAKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lv
bklELCBTdHJpbmc+IG1faWRiRGF0YWJhc2VQYXRoczsKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lv
bklELCBSZWZQdHI8V2ViSURCU2VydmVyPj4gbV93ZWJJREJTZXJ2ZXJzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0
b3JhZ2VEYXRhYmFzZS5jcHAKaW5kZXggNTY5ZmRiMmRmOGY1M2VhYmNmMTkxODEyNDMwYWI2ZmRh
NjgwMjU0MC4uNzBjOTQ5YmIwMTBmNzMyMTE3NjI3OGEyNDY1YTAwMzIwZDlmNjM3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFn
ZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCkBAIC03NSw3ICs3NSw3IEBAIGJvb2wgTG9jYWxT
dG9yYWdlRGF0YWJhc2U6Om9wZW5EYXRhYmFzZShTaG91bGRDcmVhdGVEYXRhYmFzZSBzaG91bGRD
cmVhdGVEYXRhYmFzCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIW1f
ZGF0YWJhc2Uub3BlbihtX2RhdGFiYXNlUGF0aCkpIHsKKyAgICBpZiAoIW1fZGF0YWJhc2Uub3Bl
bihtX2RhdGFiYXNlUGF0aCwgU1FMaXRlRGF0YWJhc2U6Ok9wZW5Nb2RlOjpSZWFkV3JpdGVDcmVh
dGUsIFNRTGl0ZURhdGFiYXNlOjpJc0ludGVycnVwdGFibGU6OlllcykpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBkYXRhYmFzZSBmaWxlICVzIGZvciBsb2NhbCBzdG9yYWdl
IiwgbV9kYXRhYmFzZVBhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3
b3JrUHJvY2Vzc0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdv
cmtQcm9jZXNzSU9TLm1tCmluZGV4IDY0OTRiNWE3OThhZjY5MDgxZWEzZDdhNWEzY2M1NWVjODI3
ZTRiZjQuLjVkMDAxMGUwMmIyNDAxZTg0ZjQ1NTQ3ODkyYTE2OTMwNDQ5MzUzMWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9T
Lm1tCkBAIC0xMDAsMjEgKzEwMCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyU2Vydmlj
ZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pCiAKICNlbmRp
ZiAvLyAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldElz
SG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpCi17Ci0gICAgaWYg
KCFpc0hvbGRpbmdMb2NrZWRGaWxlcykgewotICAgICAgICBtX2hvbGRpbmdMb2NrZWRGaWxlQXNz
ZXJ0aW9uID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChtX2hv
bGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uICYmIG1faG9sZGluZ0xvY2tlZEZpbGVBc3NlcnRpb24t
PmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gV2Ugc3luY2hyb25vdXNseSB0
YWtlIGEgcHJvY2VzcyBhc3NlcnRpb24gd2hlbiBiZWdpbm5pbmcgYSBTUUxpdGUgdHJhbnNhY3Rp
b24gc28gdGhhdCB3ZSBkb24ndCBnZXQgc3VzcGVuZGVkCi0gICAgLy8gd2hpbGUgaG9sZGluZyBh
IGxvY2tlZCBmaWxlLiBXZSB3b3VsZCBnZXQga2lsbGVkIGlmIHN1c3BlbmRlZCB3aGlsZSBob2xk
aW5nIGxvY2tlZCBmaWxlcy4KLSAgICBtX2hvbGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uID0gUHJv
Y2Vzc0Fzc2VydGlvbjo6Y3JlYXRlKGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIk5ldHdvcmsgUHJv
Y2VzcyBpcyBob2xkaW5nIGxvY2tlZCBmaWxlcyJfcywgUHJvY2Vzc0Fzc2VydGlvblR5cGU6OkZp
bmlzaFRhc2tVbmludGVycnVwdGFibGUsIFByb2Nlc3NBc3NlcnRpb246Ok1vZGU6OlN5bmMpOwot
fQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1J
TFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhYmFzZUFzc2VydGlvblNj
b3BlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RhdGFiYXNlQXNzZXJ0aW9uU2NvcGUuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjJhM2U0MzBmODdiMTJhNjZiY2M3ZmE5Y2ZiYTQwNzJhZDFmMzA2OTAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhYmFzZUFzc2VydGlvblNj
b3BlLmNwcApAQCAtMCwwICsxLDEwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJEYXRhYmFzZUFzc2VydGlvblNjb3BlLmgiCisKKyNpbmNsdWRlICJQcm9j
ZXNzQXNzZXJ0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitEYXRhYmFz
ZUFzc2VydGlvblNjb3BlOjpEYXRhYmFzZUFzc2VydGlvblNjb3BlKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllcikKKyAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9hc3NlcnRp
b25SZWxlYXNlVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmRGF0YWJhc2VBc3NlcnRpb25T
Y29wZTo6YXNzZXJ0aW9uUmVsZWFzZVRpbWVyRmlyZWQpCit7CisgICAgV2ViQ29yZTo6U1FMaXRl
TG9ja1Njb3BlOjpzZXRJbXBsKHRoaXMpOworfQorCitEYXRhYmFzZUFzc2VydGlvblNjb3BlOjp+
RGF0YWJhc2VBc3NlcnRpb25TY29wZSgpCit7CisgICAgV2ViQ29yZTo6U1FMaXRlTG9ja1Njb3Bl
OjpzZXRJbXBsKG51bGxwdHIpOworfQorCit2b2lkIERhdGFiYXNlQXNzZXJ0aW9uU2NvcGU6OmJl
Z2luKCkKK3sKKyAgICBpZiAobV9hc3NlcnRpb24gJiYgbV9hc3NlcnRpb24tPmlzVmFsaWQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9hc3NlcnRpb24gPSBQcm9jZXNzQXNzZXJ0aW9uOjpj
cmVhdGUoZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCBtX2lkZW50aWZpZXIsIFByb2Nlc3NBc3NlcnRp
b25UeXBlOjpGaW5pc2hUYXNrVW5pbnRlcnJ1cHRhYmxlLCBQcm9jZXNzQXNzZXJ0aW9uOjpNb2Rl
OjpTeW5jKTsKK30KKwordm9pZCBEYXRhYmFzZUFzc2VydGlvblNjb3BlOjplbmQoKQoreworICAg
IG1fYXNzZXJ0aW9uUmVsZWFzZVRpbWVyLnN0b3AoKTsKKyAgICAKKyAgICBib29sIHNob3VsZFJl
bGVhc2VBc3NlcnRpb24gPSB0cnVlOworICAgIGZvciAoYXV0byYgZGF0YWJhc2UgOiBtX2RhdGFi
YXNlcykgeworICAgICAgICBpZiAoZGF0YWJhc2UudHJhbnNhY3Rpb25JblByb2dyZXNzKCkpCisg
ICAgICAgICAgICBzaG91bGRSZWxlYXNlQXNzZXJ0aW9uID0gZmFsc2U7CisgICAgfQorCisgICAg
aWYgKHNob3VsZFJlbGVhc2VBc3NlcnRpb24pCisgICAgICAgIG1fYXNzZXJ0aW9uUmVsZWFzZVRp
bWVyLnN0YXJ0T25lU2hvdCgxX3MpOworfQorCit2b2lkIERhdGFiYXNlQXNzZXJ0aW9uU2NvcGU6
OmFkZERhdGFiYXNlKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKK3sKKyAgICBt
X2RhdGFiYXNlcy5hZGQoJmRhdGFiYXNlKTsKK30KKwordm9pZCBEYXRhYmFzZUFzc2VydGlvblNj
b3BlOjpyZW1vdmVEYXRhYmFzZShXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UpCit7
CisgICAgbV9kYXRhYmFzZXMucmVtb3ZlKGRhdGFiYXNlKTsKK30KKwordm9pZCBEYXRhYmFzZUFz
c2VydGlvblNjb3BlOjppbnRlcnJ1cHQoKQoreworICAgIGlmIChtX2ludGVycnVwdGVkKQorICAg
ICAgICByZXR1cm47CisgICAgbV9pbnRlcnJ1cHRlZCA9IHRydWU7CisKKyAgICBXZWJDb3JlOjpT
UUxpdGVMb2NrU2NvcGU6OmxvY2soKTsKKyAgICBmb3IgKGF1dG8mIGRhdGFiYXNlIDogbV9kYXRh
YmFzZXMpCisgICAgICAgIGRhdGFiYXNlLmludGVycnVwdCgpOworCisgICAgbV9hc3NlcnRpb25S
ZWxlYXNlVGltZXIuc3RvcCgpOworICAgIG1fYXNzZXJ0aW9uID0gbnVsbHB0cjsKK30KKwordm9p
ZCBEYXRhYmFzZUFzc2VydGlvblNjb3BlOjpyZXN1bWUoKQoreworICAgIGlmICghbV9pbnRlcnJ1
cHRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pbnRlcnJ1cHRlZCA9IGZhbHNlOworICAg
IFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZTo6dW5sb2NrKCk7Cit9CisKK3ZvaWQgRGF0YWJhc2VB
c3NlcnRpb25TY29wZTo6YXNzZXJ0aW9uUmVsZWFzZVRpbWVyRmlyZWQoKQoreworICAgIFdlYkNv
cmU6OlNRTGl0ZUxvY2tTY29wZTo6bG9jaygpOworICAgIG1fYXNzZXJ0aW9uID0gbnVsbHB0cjsK
KyAgICBXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6OnVubG9jaygpOworfQorCit9IC8vIG5hbWVw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRGF0YWJhc2VBc3Nl
cnRpb25TY29wZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRGF0YWJhc2VBc3NlcnRpb25TY29w
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRlYWUzYjIyMTJiN2NmYThkOGU4MTY2MTcxZTE1NjBiOWY3OWI4NWQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhYmFzZUFzc2VydGlv
blNjb3BlLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiV2ViQ29yZS9TUUxpdGVMb2NrU2NvcGUuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFByb2Nlc3NBc3NlcnRpb247CisKK2NsYXNzIERhdGFiYXNlQXNzZXJ0aW9uU2Nv
cGUgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U1FMaXRlTG9ja1Njb3BlSW1wbCB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoRGF0YWJhc2VBc3NlcnRpb25TY29wZSkKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBEYXRhYmFzZUFzc2VydGlvblNjb3BlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcik7
CisgICAgfkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGUoKTsKKworICAgIHZvaWQgYmVnaW4oKSBmaW5h
bDsKKyAgICB2b2lkIGVuZCgpIGZpbmFsOworICAgIHZvaWQgYWRkRGF0YWJhc2UoV2ViQ29yZTo6
U1FMaXRlRGF0YWJhc2UmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZURhdGFiYXNlKFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlJikgZmluYWw7CisKKyAgICB2b2lkIGludGVycnVwdCgpOworICAgIHZv
aWQgcmVzdW1lKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBhc3NlcnRpb25SZWxlYXNlVGltZXJG
aXJlZCgpOworCisgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKKyAgICBSZWZQdHI8UHJvY2Vzc0Fz
c2VydGlvbj4gbV9hc3NlcnRpb247CisgICAgUnVuTG9vcDo6VGltZXI8RGF0YWJhc2VBc3NlcnRp
b25TY29wZT4gbV9hc3NlcnRpb25SZWxlYXNlVGltZXI7CisgICAgV2Vha0hhc2hTZXQ8V2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2U+IG1fZGF0YWJhc2VzOworICAgIGJvb2wgbV9pbnRlcnJ1cHRlZCB7
IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3Jt
YXRSZWFkZXIuY3BwCmluZGV4IGViZjcyMTI0MjNlOWNkNWUxN2E0Mjc1YjU5YWFiOGQxOThjNjk1
YjguLjAzZTE5OWUxMWJmMmEwODFkOTA0YzI2YWY5ZTg2Yzg4OTZiZTc0YzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJl
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVy
L01lZGlhRm9ybWF0UmVhZGVyLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlkZW9UcmFj
a1ByaXZhdGUuaD4KICNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRh
dGlvbi5oPgorI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgogI2luY2x1ZGUg
PHd0Zi9Mb2dnZXJIZWxwZXIuaD4KICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVRy
YWNrUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRl
ci9NZWRpYVRyYWNrUmVhZGVyLmNwcAppbmRleCAxZGMxY2FlMDMwMDhlMGEyMGE0NGFjNzNkMWFh
MzcyNTM1N2YyMGZhLi4xZDllZjhmN2I4NDU5ZmIwNzQwMjdhNTcwNTgyYzBhMDE1YjI0ODNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVk
aWFUcmFja1JlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9y
bWF0UmVhZGVyL01lZGlhVHJhY2tSZWFkZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgT1NTdGF0
dXMgTWVkaWFUcmFja1JlYWRlcjo6Y3JlYXRlQ3Vyc29yQXRMYXN0U2FtcGxlSW5EZWNvZGVPcmRl
cihNVFBsdWdpblNhbXBsZUMKIAogV1RGTG9nQ2hhbm5lbCYgTWVkaWFUcmFja1JlYWRlcjo6bG9n
Q2hhbm5lbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkxvZ01lZGlhOworICAgIHJl
dHVybiBMb2dNZWRpYTsKIH0KIAogY29uc3Qgdm9pZCogTWVkaWFUcmFja1JlYWRlcjo6bmV4dFNh
bXBsZUN1cnNvckxvZ0lkZW50aWZpZXIodWludDY0X3QgY3Vyc29ySUQpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQKaW5kZXggOTllOTY2YzkxMzZjNGRmOTIyZjg5ZjNkMWQwMzk3YTdmY2ExMWYx
Mi4uZWQ5MTdkZmE1NGI4ZmI4YzYzNDQ1MTEzMDEzZmY1MDA3NWM5MTFlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dApAQCAtMTQxLDYgKzE0MSw3IEBAIFNoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KIAogU2hhcmVkL0FQSVdlYkFyY2hpdmUubW0KIFNo
YXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KK1NoYXJlZC9EYXRhYmFzZUFzc2VydGlvblNj
b3BlLmNwcAogU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQubW0KIFNoYXJlZC9Gb2N1c2Vk
RWxlbWVudEluZm9ybWF0aW9uLmNwcAogU2hhcmVkL1Zpc2libGVDb250ZW50UmVjdFVwZGF0ZUlu
Zm8uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAyNDU0ZmQ0NTE0NGJmMGQwNjlkNjBlNjZlMzBjY2JhOTU1YzU0OTUxLi5kOWE1M2Q5
MDEwMWFiNWQwZjMwYmQ4ODBlZGYwMDg0MGNhYWVhOTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NzgsNiArMTQ3OCw3IEBACiAJ
CTkzNjhFRURFMjMwM0E5MDIwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzY4RUVEQzIzMDNBOEQ4MDBCREIxMUEgLyogU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlUmVjZWl2
ZXIuY3BwICovOyB9OwogCQk5MzY4RUVERjIzMDNBOUVEMDBCREIxMUEgLyogU3RvcmFnZU1hbmFn
ZXJTZXRNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTM2OEVFREQyMzAzQThEODAwQkRCMTFBIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2Fn
ZXMuaCAqLzsgfTsKIAkJOTM2QjA1OTgyMzAzOTA5NzAwMkZDMDZCIC8qIFN0b3JhZ2VNYW5hZ2Vy
U2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzZC
MDU5NTIzMDM5MDBCMDAyRkMwNkIgLyogU3RvcmFnZU1hbmFnZXJTZXQuaCAqLzsgfTsKKwkJOTM3
MDZFRkYyNjlDQzk5QTAwMkRBMTI3IC8qIERhdGFiYXNlQXNzZXJ0aW9uU2NvcGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhGMEY1MjY5OEIzQUIw
MEE5RjMzMSAvKiBEYXRhYmFzZUFzc2VydGlvblNjb3BlLmggKi87IH07CiAJCTkzNzM1RUJCMUM5
Mjk4NjMwMDMzNkZBNyAvKiBXS1ByZXZpZXdBY3Rpb25JdGVtSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNzM1RUJBMUM5Mjk4NjMwMDMz
NkZBNyAvKiBXS1ByZXZpZXdBY3Rpb25JdGVtSW50ZXJuYWwuaCAqLzsgfTsKIAkJOTM5MTA3NEYx
QkY2QkM2NTAwOEMxN0FEIC8qIFdLUHJldmlld0VsZW1lbnRJbmZvSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTEwNzRFMUJGNkJDNjUw
MDhDMTdBRCAvKiBXS1ByZXZpZXdFbGVtZW50SW5mb0ludGVybmFsLmggKi87IH07CiAJCTkzOTFG
MkNCMTIxQjY3QUQwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzkxRjI4MzEyMUIzOEY1
MDBFQkY3RTggLyogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oICovOyB9OwpAQCAtNDkzNSw2
ICs0OTM2LDggQEAKIAkJOTNFNkE0RUQxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1
bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSGl0VGVzdFJlc3VsdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y1NDlCMzFFMzE3NEI3MDAwRTcyMzkg
LyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNGNTQ5QjUxRTMxNzREQTAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9u
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tTbmFwc2hvdENv
bmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRjhGMEY0MjY5
OEIzQUIwMEE5RjMzMSAvKiBEYXRhYmFzZUFzc2VydGlvblNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERhdGFiYXNlQXNzZXJ0aW9uU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5M0Y4RjBGNTI2OThCM0FCMDBBOUYzMzEgLyogRGF0YWJhc2VBc3NlcnRpb25TY29w
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhYmFzZUFzc2VydGlvblNjb3BlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk1MEYyODdFMjUyNDE0RTkwMEI3NEYxQyAvKiBXS01vdXNlRGV2
aWNlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tNb3VzZURl
dmljZU9ic2VydmVyLmg7IHBhdGggPSBpb3MvV0tNb3VzZURldmljZU9ic2VydmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1MEYyODdGMjUyNDE0RUEwMEI3NEYxQyAvKiBXS01v
dXNlRGV2aWNlT2JzZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBXS01vdXNlRGV2aWNlT2JzZXJ2ZXIubW07IHBhdGggPSBpb3MvV0tNb3VzZURldmljZU9i
c2VydmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NTkzNjc1RDI1MkU1RTMw
MDBEM0YwQTAgLyogV0tTdHlsdXNEZXZpY2VPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXS1N0eWx1c0RldmljZU9ic2VydmVyLmg7IHBhdGggPSBpb3MvV0tTdHls
dXNEZXZpY2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjc2Nyw2
ICs2NzcwLDggQEAKIAkJCQk1MTA2RDdCRjE4QkRCRTczMDAwQUIxNjYgLyogQ29udGV4dE1lbnVD
b250ZXh0RGF0YS5jcHAgKi8sCiAJCQkJNTEwNkQ3QzAxOEJEQkU3MzAwMEFCMTY2IC8qIENvbnRl
eHRNZW51Q29udGV4dERhdGEuaCAqLywKIAkJCQk5OUY2NDJEMjFGQUJFMzc4MDA5NjIxRTkgLyog
Q29vcmRpbmF0ZVN5c3RlbS5oICovLAorCQkJCTkzRjhGMEY0MjY5OEIzQUIwMEE5RjMzMSAvKiBE
YXRhYmFzZUFzc2VydGlvblNjb3BlLmNwcCAqLywKKwkJCQk5M0Y4RjBGNTI2OThCM0FCMDBBOUYz
MzEgLyogRGF0YWJhc2VBc3NlcnRpb25TY29wZS5oICovLAogCQkJCTk5MDM2QUU4MjNBOTcwODcw
MDAwQjA2QSAvKiBEZWJ1Z2dhYmxlSW5mb0RhdGEuY3BwICovLAogCQkJCTk5MDM2QUU3MjNBOTcw
ODcwMDAwQjA2QSAvKiBEZWJ1Z2dhYmxlSW5mb0RhdGEuaCAqLywKIAkJCQkwRjE4OUNBQjI0NzQ5
RjJGMDBFNThEODEgLyogRGlzcGxheUxpbmtPYnNlcnZlcklELmggKi8sCkBAIC0xMTk5MSw2ICsx
MTk5Niw3IEBACiAJCQkJNTc1OTdFQkQyMTgxODQ5MDAwMzdGOTI0IC8qIEN0YXBBdXRoZW50aWNh
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzU5N0VCOTIxODExRDlBMDAzN0Y5MjQgLyogQ3Rh
cEhpZERyaXZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcwREFBQ0EyMzAzODVGRDAwRThGQzA0
IC8qIEN0YXBOZmNEcml2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzNzA2RUZGMjY5Q0M5OUEw
MDJEQTEyNyAvKiBEYXRhYmFzZUFzc2VydGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
NTVGOTE3MTFDNTk2NzZFMDAyOUU5MkQgLyogRGF0YURldGVjdGlvblJlc3VsdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFDNzUzODAxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTk5MDM2QUU5MjNBOTcwODcwMDAwQjA2QSAvKiBEZWJ1Z2dhYmxl
SW5mb0RhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9TdG9yYWdlVHJhY2tlci5jcHAKaW5kZXggZWVhMDAwNDRiYWZiZmJmMzVjZWY4ODY2ODlmNDA5
NTRhZDljNGYyNC4uYzg1ODllYTY0YTZiNGZmYTk4ZTY3NDIwZWFmZTk1ZjIwZmIxNDkwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBAIC0y
OSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiU3RvcmFnZVRyYWNrZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0
ZURhdGFiYXNlVHJhY2tlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRh
Lmg+CkBAIC0zODUsMTMgKzM4Niw2IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OmRlbGV0ZUFsbE9y
aWdpbnMoKQogICAgIH0pOwogfQogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLXN0YXRpYyB2
b2lkIHRydW5jYXRlRGF0YWJhc2VGaWxlKFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKLXsKLSAg
ICBzcWxpdGUzX2ZpbGVfY29udHJvbChkYXRhYmFzZS5zcWxpdGUzSGFuZGxlKCksIDAsIFNRTElU
RV9UUlVOQ0FURV9EQVRBQkFTRSwgMCk7Ci19Ci0jZW5kaWYKLQogdm9pZCBTdG9yYWdlVHJhY2tl
cjo6c3luY0RlbGV0ZUFsbE9yaWdpbnMoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OwpAQCAtNDI5LDcgKzQyMyw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVBbGxP
cmlnaW5zKCkKIAogICAgIGlmIChtX2RhdGFiYXNlLmlzT3BlbigpKSB7CiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICAgICAgdHJ1bmNhdGVEYXRhYmFzZUZpbGUobV9kYXRhYmFzZSk7Cisg
ICAgICAgIFNRTGl0ZUZpbGVTeXN0ZW06OnRydW5jYXRlRGF0YWJhc2VGaWxlKG1fZGF0YWJhc2Uu
c3FsaXRlM0hhbmRsZSgpKTsKICNlbmRpZgogICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7CiAg
ICAgfQpAQCAtNTQzLDcgKzUzNyw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVP
cmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQogCiAgICAgaWYgKHNob3VsZERl
bGV0ZVRyYWNrZXJGaWxlcykgewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIHRy
dW5jYXRlRGF0YWJhc2VGaWxlKG1fZGF0YWJhc2UpOworICAgICAgICBTUUxpdGVGaWxlU3lzdGVt
Ojp0cnVuY2F0ZURhdGFiYXNlRmlsZShtX2RhdGFiYXNlLnNxbGl0ZTNIYW5kbGUoKSk7CiAjZW5k
aWYKICAgICAgICAgbV9kYXRhYmFzZS5jbG9zZSgpOwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbmRl
eGVkREJTdXNwZW5kSW1taW5lbnRseS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5kZXhlZERCU3VzcGVuZEltbWluZW50bHkubW0KaW5kZXggNTEwYjI0ZjU2OWQy
MmJkNDBhN2FkYmUyNWVjZmQwZWNmYzhhYzcyNi4uYWQ3OTM5MTc2ZDVhOTJjMWE3MzUwOTU0OTc2
MWYyNDc4ZjlhOGJhOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9JbmRleGVkREJTdXNwZW5kSW1taW5lbnRseS5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luZGV4ZWREQlN1c3BlbmRJbW1pbmVudGx5Lm1tCkBA
IC0zNyw4ICszNyw2IEBACiAjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKLSNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotCiBzdGF0aWMgYm9vbCByZWNlaXZlZFNjcmlwdE1lc3NhZ2U7CiBzdGF0aWMgYm9vbCBp
ZGJBY2l0aXZpdGllc1N0YXJ0ZWQ7CiBzdGF0aWMgUmV0YWluUHRyPFdLU2NyaXB0TWVzc2FnZT4g
bGFzdFNjcmlwdE1lc3NhZ2U7CkBAIC0xNjQsNSArMTYyLDMgQEAgVEVTVChJbmRleGVkREIsIFN1
c3BlbmRJbW1pbmVudGx5Rm9yVGhpcmRQYXJ0eURhdGFiYXNlcykKIAogICAgIHJ1blRlc3RBbmRD
aGVja1Jlc3VsdChAInRyYW5zYWN0aW9uIGlzIGNvbXBsZXRlZCIpOwogfQotCi0jZW5kaWYgLy8g
UExBVEZPUk0oSU9TX0ZBTUlMWSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>433443</attachid>
            <date>2021-07-13 12:21:41 -0700</date>
            <delta_ts>2021-07-23 14:29:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227887-20210713122140.patch</filename>
            <type>text/plain</type>
            <size>44177</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc5ODU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQ1ZGU3M2RkZDIzMzUx
MmQ3ZmU0NzIxZTMzNWU4YTgyYWE5MmVhZC4uNDkzZDQzMTQ2OGYxNjdlZWYzNDM3NGFjZTIzMjUw
ZmM5MTAzMzhjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIxLTA3LTEyICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgZmlsZSBsb2NrcyBz
eW5jaHJvbm91c2x5IG9uIFByZXBhcmVUb1N1c3BlbmQgbWVzc2FnZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3ODg3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvdGVjdCBTUUxpdGUgQVBJIGNhbGxz
IHRoYXQgbWF5IGFjcXVpcmUgZGF0YWJhc2UgZmlsZSBsb2NrIHdpdGggU1FMaXRlTG9ja1Njb3Bl
LiBBIGdsb2JhbCBsb2NrIGlzIGhlbGQgYXQgd2hlbiAKKyAgICAgICAgU1FMaXRlTG9ja1Njb3Bl
IGlzIGNyZWF0ZWQgYW5kIHJlbGVhc2VkIHdoZW4gU1FMaXRlTG9ja1Njb3BlIGlzIGRlc3Ryb3ll
ZC4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6Om9wZW4pOiBBZGQgYSBuZXcg
cGFyYW1ldGVyIGludGVycnVwdGFibGUgdG8gaW5kaWNhdGUgaWYgdGhlIGRhdGFiYXNlIHdhbnQg
aXRzCisgICAgICAgIHRyYW5zYWN0aW9uIHRvIGJlIGFib3J0ZWQgb3IgY29tbWl0dGVkIG9uIGlu
dGVycnVwdC4KKyAgICAgICAgKFdlYkNvcmU6OndhbEF1dG9tYXRpY1RydW5jYXRpb25Ib29rKToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjp1c2VXQUxKb3VybmFsTW9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2U6OmludGVycnVwdCk6IFJlbGVhc2UgZmlsZSBsb2NrIGJ5IGludGVy
cnVwdGluZyBsb25nIHF1ZXJ5IGFuZCBlbmRpbmcgdHJhbnNhY3Rpb24uCisgICAgICAgICogcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NRTGl0
ZUZpbGVTeXN0ZW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlRmlsZVN5c3RlbTo6dHJ1
bmNhdGVEYXRhYmFzZUZpbGUpOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2Nv
cGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZTo6c2V0SW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6OlNRTGl0ZUxvY2tTY29wZSk6
CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6On5TUUxpdGVMb2NrU2NvcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U1FMaXRlTG9ja1Njb3BlOjphZGREYXRhYmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6OnJlbW92ZURhdGFiYXNlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9zcWwvU1FMaXRlTG9ja1Njb3BlLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3Jt
L3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVt
ZW50OjpzdGVwKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudDo6c3RlcFdpdGhv
dXRMb2NrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50Lmg6CisKIDIw
MjEtMDctMTIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgQmlmdXJjYXRlZEdyYXBoaWNzQ29udGV4dCBjYW4ndCBkcmF3IHRleHQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXgg
MWI3OGY2OGY1MjM4OTQ2NWE1YjFjMzI1ZTU3ZGI2MjlhYjU1ZTJhZC4uOGExMGU3N2YwMDAyNTA0
ZDcyOGQzOGEyYWVhYzc4ZGMzYTliYTA5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAy
MS0wNy0xMiAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9w
IGZpbGUgbG9ja3Mgc3luY2hyb25vdXNseSBvbiBQcmVwYXJlVG9TdXNwZW5kIG1lc3NhZ2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzg4NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gbmV0d29y
ayBwcm9jZXNzIGlzIGFib3V0IHRvIHN1c3BlbmQsIGl0IHNob3VsZCByZWxlYXNlIGFsbCBkYXRh
YmFzZSBmaWxlIGxvY2tzIGFzIHNvb24gYXMgcG9zc2libGUuIE91cgorICAgICAgICBjdXJyZW50
IGltcGxlbWVudGF0aW9uIGlzIEluZGV4ZWREQiByZWxlYXNlcyBsb2NrcyBieSBhYm9ydGluZyB0
cmFuc2FjdGlvbnMgc3luY2hyb25vdXNseSBvbiBQcmVwYXJlVG9TdXNwZW5kLAorICAgICAgICBh
bmQgTG9jYWxTdG9yYWdlIGFuZCBJVFAgc2NoZWR1bGVzIHN1c3BlbmQgdGFzayB0byBiYWNrZ3Jv
dW5kIHRocmVhZHMuIEl0J3MgcG9zc2libGUgdGhhdCBzdXNwZW5kIHRhc2sKKyAgICAgICAgZG9l
cyBub3QgZ2V0IHRvIHJ1biBiZWZvcmUgbmV0d29yayBwcm9jZXNzIGdldHMgc3VzcGVuZGVkIGFj
Y29yZGluZyB0byBjcmFzaCBsb2dzLCBzbyBsZXQncyBtYWtlIHRoZSBiZWhhdmlvcgorICAgICAg
ICBjb25zaXN0ZW50IGFjcm9zcyBhbGwgZGF0YWJhc2VzLCBhbmQgbWFrZSBzdXJlIG5ldHdvcmsg
cHJvY2VzcyByZWxlYXNlcyBsb2NrcyBxdWlja2x5IG9uIFByZXBhcmVUb1N1c3BlbmQuCisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnJlc3VtZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURh
dGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJhc2U6Om9wZW5E
YXRhYmFzZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9T
Lm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6c2V0SXNIb2xkaW5nTG9ja2Vk
RmlsZXMpOiBEZWxldGVkLgorICAgICAgICAqIFNoYXJlZC9EYXRhYmFzZUFzc2VydGlvblNjb3Bl
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGU6OkRh
dGFiYXNlQXNzZXJ0aW9uU2NvcGUpOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZUFzc2VydGlv
blNjb3BlOjp+RGF0YWJhc2VBc3NlcnRpb25TY29wZSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFi
YXNlQXNzZXJ0aW9uU2NvcGU6OmJlZ2luKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VBc3Nl
cnRpb25TY29wZTo6ZW5kKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VBc3NlcnRpb25TY29w
ZTo6YWRkRGF0YWJhc2UpOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZUFzc2VydGlvblNjb3Bl
OjpyZW1vdmVEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uU2Nv
cGU6OmludGVycnVwdCk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGU6
OnJlc3VtZSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGU6OmFzc2Vy
dGlvblJlbGVhc2VUaW1lckZpcmVkKToKKyAgICAgICAgKiBTaGFyZWQvRGF0YWJhc2VBc3NlcnRp
b25TY29wZS5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVy
L01lZGlhRm9ybWF0UmVhZGVyLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvbWFjL01lZGlhRm9ybWF0
UmVhZGVyL01lZGlhVHJhY2tSZWFkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVRyYWNr
UmVhZGVyOjpsb2dDaGFubmVsIGNvbnN0KToKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0Ogor
ICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIxLTA3LTEy
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cmV2ZXJ0aW5nIHIyNzk4MzUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDYyM2U3YjY1YmIyNzZm
MjE5YWU3NzM2MmNmOGZkMmU0YTUyMzUwYzIuLmU5YzlmZjQyOTBlMTgxZDU1OGM3OGI5ZjQ2ZDU1
MDQxYzAwNzBhNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEt
MDctMTIgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgRHJvcCBm
aWxlIGxvY2tzIHN5bmNocm9ub3VzbHkgb24gUHJlcGFyZVRvU3VzcGVuZCBtZXNzYWdlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc4ODcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3Rv
cmFnZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6c3luY0Rl
bGV0ZUFsbE9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6c3luY0Rl
bGV0ZU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OnRydW5jYXRlRGF0YWJhc2VGaWxlKTogRGVs
ZXRlZC4KKwogMjAyMS0wNi0yMSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAog
ICAgICAgICBNYWtlIEluUHJvY2Vzc0lEQlNlcnZlciB1c2UgV29ya1F1ZXVlIGluc3RlYWQgb2Yg
VGhyZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDNjYmZhNWFiNWE0YmY1ODQ0OTZhYjYxMzNjZTMwOGQ0
OTkyM2JhMDIuLjVmMWQ0NGUxZDM5NWY4NDg3NjQ0ZTQ2MTQ4YTc4ZDRhZWRjMTg1M2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0CkBAIC0yMTg4LDYgKzIxODgsNyBAQCBwbGF0Zm9ybS9zcWwvU1FMaXRlQXV0aG9y
aXplci5jcHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKIHBsYXRmb3JtL3NxbC9T
UUxpdGVEYXRhYmFzZVRyYWNrZXIuY3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5j
cHAKK3BsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2NvcGUuY3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRl
U3RhdGVtZW50LmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3Bl
LmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGUyYTJmOThhNWIx
YWE2Y2JlOWY3NzA2YzUxMDAxN2M1OGY0NGU0Y2IuLmRjMjczZDAzMWMyY2M2YjBjOGNkOGYyN2M3
NDhhOWI0MGExZDFmODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTI5MzEsNiArMjkzMSw3IEBACiAJCTkzRjZCODFGMjU2N0Ew
OEMwMEEwODQ4OCAvKiBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y2QjgxQzI1Njc5Rjcw
MDBBMDg0ODggLyogU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjZCODIyMjU2N0E2
NTYwMEEwODQ4OCAvKiBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjZCODFCMjU2NzlGNkYwMEEw
ODQ4OCAvKiBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2UuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Y2RjFFRTEyN0Y3MEIxMDA1NUNC
MDYgLyogV2ViR0xDb250ZXh0RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzRjZGMUVCMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRF
dmVudC5oICovOyB9OworCQk5M0Y4RjBGMzI2OTgyNjEzMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Nj
b3BlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y4
RjBGMTI2OTgyNjEyMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGOTI1NDMwRjdFRjVCODAwN0Uz
N0M5IC8qIFJhZGlvQnV0dG9uR3JvdXBzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0Y5MjU0MTBGN0VGNUI4MDA3RTM3QzkgLyogUmFkaW9CdXR0b25H
cm91cHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5M0Y5QjZFMTBCQTBGQjcyMDA4NTQwNjQgLyogSlNDb21tZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y5QjZERjBCQTBGQjcyMDA4NTQwNjQg
LyogSlNDb21tZW50LmggKi87IH07CiAJCTkzRjlCN0ExMEJBNjAzMjYwMDg1NDA2NCAvKiBKU0NE
QVRBU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNGOUI3OUYwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmggKi87IH07CkBA
IC0xMTgzNCw2ICsxMTgzNSw4IEBACiAJCTkzRjhCMzA1MEEzMDBGRTEwMEY2MUFCOCAvKiBDb2Rl
R2VuZXJhdG9yLnBtICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IENvZGVHZW5l
cmF0b3IucG07IHBhdGggPSBzY3JpcHRzL0NvZGVHZW5lcmF0b3IucG07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzRjhCMzA2MEEzMDBGRUEwMEY2MUFCOCAvKiBDb2RlR2VuZXJhdG9y
SlMucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gQ29kZUdlbmVyYXRvckpT
LnBtOyBwYXRoID0gc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHdyYXBzTGluZXMgPSAwOyB9OwogCQk5M0Y4QjMwNzBBMzAwRkVBMDBGNjFBQjggLyog
Z2VuZXJhdGUtYmluZGluZ3MucGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0g
ImdlbmVyYXRlLWJpbmRpbmdzLnBsIjsgcGF0aCA9ICJzY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdz
LnBsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNGOEYwRUYyNjk4MjYxMjAwQTlG
MzMxIC8qIFNRTGl0ZUxvY2tTY29wZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTUUxpdGVMb2NrU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5M0Y4RjBGMTI2OTgyNjEyMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNRTGl0ZUxvY2tTY29wZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5M0Y5MjU0MTBGN0VGNUI4MDA3RTM3QzkgLyogUmFkaW9CdXR0b25H
cm91cHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmFkaW9CdXR0b25Hcm91
cHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGOTI1NDIwRjdFRjVCODAwN0Uz
N0M5IC8qIFJhZGlvQnV0dG9uR3JvdXBzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJhZGlvQnV0dG9uR3JvdXBzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNGOUI2REUwQkEwRkI3MjAwODU0MDY0IC8qIEpTQ29tbWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NvbW1lbnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMTg1MzUsNiArMTg1MzgsOCBAQAogCQkJCTdFNDc0RTFCMTI0OTRE
QzkwMDIzNTM2NCAvKiBTUUxpdGVEYXRhYmFzZVRyYWNrZXJDbGllbnQuaCAqLywKIAkJCQlCNUE2
ODQyMzBGRkFCRUFBMDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5jcHAgKi8sCiAJCQkJQjVB
Njg0MjEwRkZBQkU5ODAwRDI0Njg5IC8qIFNRTGl0ZUZpbGVTeXN0ZW0uaCAqLywKKwkJCQk5M0Y4
RjBFRjI2OTgyNjEyMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmNwcCAqLywKKwkJCQk5M0Y4
RjBGMTI2OTgyNjEyMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmggKi8sCiAJCQkJMUEyMjQ2
NDUwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZVN0YXRlbWVudC5jcHAgKi8sCiAJCQkJMUEyMjQ2
NDYwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZVN0YXRlbWVudC5oICovLAogCQkJCUVCRTVCMjI3
MjQ1QTI5Q0YwMDNBNUE4OCAvKiBTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZS5jcHAgKi8s
CkBAIC0zNTM4NSw2ICszNTM5MCw3IEBACiAJCQkJNTEyQkRCNEIxQzQ1NkZGQTAwNjQ5NERGIC8q
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTExRUMxMzAxQzUw
QUJGNTAwMzJGOTgzIC8qIFNRTGl0ZUlEQkN1cnNvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTEx
RUMxMkMxQzUwQUJCRjAwMzJGOTgzIC8qIFNRTGl0ZUlEQlRyYW5zYWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5M0Y4RjBGMzI2OTgyNjEzMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxQTIyNDY0QzBDQzk4RERCMDBDMDUyNDAgLyogU1FMaXRlU3Rh
dGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFQkU1QjIyNjI0NUEyNkVGMDAzQTVBODggLyog
U1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjI0
NjRFMENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAppbmRl
eCBhMTExMDI1NjgxZTQ2OTMxMjNmYmM4Y2I0OTBhODM3MGRiMzljMTgzLi4zYzUyZTE3MDljY2Qw
NjhjMTZmOTZiNGVlZWYwMzg3ZWQ4OWNhZjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJN
ZW1vcnlSZWxlYXNlLmgiCiAjaW5jbHVkZSAiU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgiCiAjaW5j
bHVkZSAiU1FMaXRlRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIlNRTGl0ZUxvY2tTY29wZS5oIgog
I2luY2x1ZGUgIlNRTGl0ZVN0YXRlbWVudC5oIgogI2luY2x1ZGUgPG11dGV4PgogI2luY2x1ZGUg
PHNxbGl0ZTMuaD4KQEAgLTg4LDcgKzg5LDcgQEAgU1FMaXRlRGF0YWJhc2U6On5TUUxpdGVEYXRh
YmFzZSgpCiAgICAgY2xvc2UoKTsKIH0KIAotYm9vbCBTUUxpdGVEYXRhYmFzZTo6b3Blbihjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBPcGVuTW9kZSBvcGVuTW9kZSkKK2Jvb2wgU1FMaXRlRGF0YWJh
c2U6Om9wZW4oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgT3Blbk1vZGUgb3Blbk1vZGUsIElzSW50
ZXJydXB0YWJsZSBpbnRlcnJ1cHRhYmxlKQogewogICAgIGluaXRpYWxpemVTUUxpdGVJZk5lY2Vz
c2FyeSgpOwogCkBAIC0xMTQsNyArMTE1LDE0IEBAIGJvb2wgU1FMaXRlRGF0YWJhc2U6Om9wZW4o
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgT3Blbk1vZGUgb3Blbk1vZGUpCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogCi0gICAgICAgIG1fb3BlbkVycm9yID0gc3FsaXRlM19vcGVuX3Yy
KEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlbmFtZSkuZGF0YSgpLCAm
bV9kYiwgZmxhZ3MsIG51bGxwdHIpOworICAgICAgICB7CisgICAgICAgICAgICBTUUxpdGVMb2Nr
U2NvcGUgbG9ja1Njb3BlOworICAgICAgICAgICAgbV9vcGVuRXJyb3IgPSBzcWxpdGUzX29wZW5f
djIoRmlsZVN5c3RlbTo6ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uKGZpbGVuYW1lKS5kYXRhKCks
ICZtX2RiLCBmbGFncywgbnVsbHB0cik7CisgICAgICAgICAgICBtX2ludGVycnVwdGFibGUgPSBp
bnRlcnJ1cHRhYmxlOworICAgICAgICAgICAgaWYgKG1fb3BlbkVycm9yID09IFNRTElURV9PSykK
KyAgICAgICAgICAgICAgICBsb2NrU2NvcGUuYWRkRGF0YWJhc2UoKnRoaXMpOworICAgICAgICB9
CisKICAgICAgICAgaWYgKG1fb3BlbkVycm9yICE9IFNRTElURV9PSykgewogICAgICAgICAgICAg
bV9vcGVuRXJyb3JNZXNzYWdlID0gbV9kYiA/IHNxbGl0ZTNfZXJybXNnKG1fZGIpIDogInNxbGl0
ZV9vcGVuIHJldHVybmVkIG51bGwiOwogICAgICAgICAgICAgTE9HX0VSUk9SKCJTUUxpdGUgZGF0
YWJhc2UgZmFpbGVkIHRvIGxvYWQgZnJvbSAlc1xuQ2F1c2UgLSAlcyIsIGZpbGVuYW1lLmFzY2lp
KCkuZGF0YSgpLApAQCAtMTY3LDYgKzE3NSw3IEBAIHN0YXRpYyBpbnQgd2FsQXV0b21hdGljVHJ1
bmNhdGlvbkhvb2sodm9pZCogY29udGV4dCwgc3FsaXRlMyogZGIsIGNvbnN0IGNoYXIqIGRiCiAK
ICAgICBpZiAod2FsUGFnZUNvdW50ID49IGNoZWNrcG9pbnRUaHJlc2hvbGQpIHsKICAgICAgICAg
aW50IG5ld1dhbFBhZ2VDb3VudCA9IDA7CisgICAgICAgIEFTU0VSVChTUUxpdGVMb2NrU2NvcGU6
OmlzSW5zaWRlU2NvcGUoKSk7CiAgICAgICAgIGludCByZXN1bHQgPSBzcWxpdGUzX3dhbF9jaGVj
a3BvaW50X3YyKGRiLCBkYk5hbWUsIFNRTElURV9DSEVDS1BPSU5UX1RSVU5DQVRFLCAmbmV3V2Fs
UGFnZUNvdW50LCBudWxscHRyKTsKIAogI2lmIExPR19ESVNBQkxFRApAQCAtMTk0LDcgKzIwMyw2
IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmVuYWJsZUF1dG9tYXRpY1dBTFRydW5jYXRpb24oKQog
CiB2b2lkIFNRTGl0ZURhdGFiYXNlOjp1c2VXQUxKb3VybmFsTW9kZSgpCiB7Ci0gICAgbV91c2VX
QUwgPSB0cnVlOwogICAgIHsKICAgICAgICAgYXV0byB3YWxTdGF0ZW1lbnQgPSBwcmVwYXJlU3Rh
dGVtZW50KCJQUkFHTUEgam91cm5hbF9tb2RlPVdBTDsiX3MpOwogICAgICAgICBpZiAod2FsU3Rh
dGVtZW50ICYmIHdhbFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKQEAgLTIzMiwx
MiArMjQwLDExIEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmNsb3NlKFNob3VsZFNldEVycm9yU3Rh
dGUgc2hvdWxkU2V0RXJyb3JTdGF0ZSkKICAgICAgICAgfQogCiAgICAgICAgIGludCBjbG9zZVJl
c3VsdDsKLSAgICAgICAgaWYgKG1fdXNlV0FMKSB7Ci0gICAgICAgICAgICAvLyBDbG9zZSBpbiB0
aGUgc2NvcGUgb2YgY291bnRlciBhcyBpdCBtYXkgYWNxdWlyZSBsb2NrIG9mIGRhdGFiYXNlLgot
ICAgICAgICAgICAgU1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0NvdW50ZXIgdHJhbnNh
Y3Rpb25Db3VudGVyOwotICAgICAgICAgICAgY2xvc2VSZXN1bHQgPSBzcWxpdGUzX2Nsb3NlKGRi
KTsKLSAgICAgICAgfSBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIFNRTGl0ZUxvY2tTY29w
ZSBsb2NrU2NvcGU7CiAgICAgICAgICAgICBjbG9zZVJlc3VsdCA9IHNxbGl0ZTNfY2xvc2UoZGIp
OworICAgICAgICAgICAgbG9ja1Njb3BlLnJlbW92ZURhdGFiYXNlKCp0aGlzKTsKKyAgICAgICAg
fQogCiAgICAgICAgIGlmIChjbG9zZVJlc3VsdCAhPSBTUUxJVEVfT0spCiAgICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihTUUxEYXRhYmFzZSwgIlNRTGl0ZURhdGFiYXNlOjpjbG9zZTogRmFp
bGVkIHRvIGNsb3NlIGRhdGFiYXNlICglZCkgLSAle3B1YmxpY31zIiwgY2xvc2VSZXN1bHQsIGxh
c3RFcnJvck1zZygpKTsKQEAgLTQ1OCw4ICs0NjUsMTUgQEAgaW50IFNRTGl0ZURhdGFiYXNlOjpy
dW5JbmNyZW1lbnRhbFZhY3V1bUNvbW1hbmQoKQogdm9pZCBTUUxpdGVEYXRhYmFzZTo6aW50ZXJy
dXB0KCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhYmFzZUNsb3NpbmdNdXRleCB9Owot
ICAgIGlmIChtX2RiKQotICAgICAgICBzcWxpdGUzX2ludGVycnVwdChtX2RiKTsKKyAgICAKKyAg
ICBpZiAoIW1fZGIpCisgICAgICAgIHJldHVybjsKKworICAgIHNxbGl0ZTNfaW50ZXJydXB0KG1f
ZGIpOworCisgICAgQVNDSUlMaXRlcmFsIHF1ZXJ5U3RyaW5nID0gbV9pbnRlcnJ1cHRhYmxlID09
IElzSW50ZXJydXB0YWJsZTo6WWVzID8gIkNPTU1JVCJfcyA6ICJST0xMQkFDSyJfczsKKyAgICBp
ZiAoYXV0byBxdWVyeSA9IHByZXBhcmVTdGF0ZW1lbnQocXVlcnlTdHJpbmcpKQorICAgICAgICBx
dWVyeS0+c3RlcFdpdGhvdXRMb2NrKCk7CiB9CiAKIGludDY0X3QgU1FMaXRlRGF0YWJhc2U6Omxh
c3RJbnNlcnRSb3dJRCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRh
YmFzZS5oCmluZGV4IDRiMjJjOGZlNjhlMzVmYmRkMDk3MjU4NjhjNGM5YTBlNWNhYjJjZjAuLjA5
Y2YwZmFmMGEzNjY2MzUyZGRhY2Y0ZGJmMWMyODU4OWVhMmEwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5oCkBAIC01Nyw3ICs1Nyw4IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB+U1FMaXRlRGF0YWJhc2UoKTsKIAogICAgIGVudW0gY2xh
c3MgT3Blbk1vZGUgeyBSZWFkT25seSwgUmVhZFdyaXRlLCBSZWFkV3JpdGVDcmVhdGUgfTsKLSAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIG9wZW4oY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgT3Blbk1v
ZGUgPSBPcGVuTW9kZTo6UmVhZFdyaXRlQ3JlYXRlKTsKKyAgICBlbnVtIGNsYXNzIElzSW50ZXJy
dXB0YWJsZSA6IGJvb2wgeyBObywgWWVzIH07CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBvcGVu
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIE9wZW5Nb2RlID0gT3Blbk1vZGU6OlJlYWRXcml0ZUNy
ZWF0ZSwgSXNJbnRlcnJ1cHRhYmxlID0gSXNJbnRlcnJ1cHRhYmxlOjpObyk7CiAgICAgYm9vbCBp
c09wZW4oKSBjb25zdCB7IHJldHVybiBtX2RiOyB9CiAgICAgZW51bSBjbGFzcyBTaG91bGRTZXRF
cnJvclN0YXRlIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNs
b3NlKFNob3VsZFNldEVycm9yU3RhdGUgPSBTaG91bGRTZXRFcnJvclN0YXRlOjpZZXMpOwpAQCAt
MTgxLDggKzE4Miw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IG1fc3Rh
dGVtZW50Q291bnQgeyAwIH07CiAjZW5kaWYKIAotICAgIGJvb2wgbV91c2VXQUwgeyBmYWxzZSB9
OwotCiAgICAgTG9jayBtX2F1dGhvcml6ZXJMb2NrOwogICAgIFJlZlB0cjxEYXRhYmFzZUF1dGhv
cml6ZXI+IG1fYXV0aG9yaXplciBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fYXV0aG9yaXplckxvY2sp
OwogCkBAIC0xOTMsNiArMTkyLDggQEAgcHJpdmF0ZToKIAogICAgIGludCBtX29wZW5FcnJvciB7
IFNRTElURV9FUlJPUiB9OwogICAgIENTdHJpbmcgbV9vcGVuRXJyb3JNZXNzYWdlOworCisgICAg
SXNJbnRlcnJ1cHRhYmxlIG1faW50ZXJydXB0YWJsZSB7IElzSW50ZXJydXB0YWJsZTo6Tm8gfTsK
IH07CiAKIGlubGluZSB2b2lkIFNRTGl0ZURhdGFiYXNlOjppbmNyZW1lbnRTdGF0ZW1lbnRDb3Vu
dCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5
c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5j
cHAKaW5kZXggNzZlNDVhZjM0ZWQwOTNmZDlmMjc2ZGQ1ZDRiOTIyYTQxNjM0ZDlhZS4uOGI5YjMy
MWRjNjQ4MTAwZmNiZjRjNWMyMmY1MGYxNGIxNWEzMTg4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIlNRTGl0ZUZpbGVTeXN0ZW0uaCIKIAogI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNl
LmgiCisjaW5jbHVkZSAiU1FMaXRlTG9ja1Njb3BlLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVt
ZW50LmgiCiAjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNsdWRlIDxz
cWxpdGUzLmg+CkBAIC05NCw2ICs5NSw3IEBAIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRl
RGF0YWJhc2VGaWxlKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6dHJ1bmNhdGVEYXRhYmFzZUZpbGUoc3FsaXRl
MyogZGF0YWJhc2UpCiB7CisgICAgU1FMaXRlTG9ja1Njb3BlIGxvY2tTY29wZTsKICAgICByZXR1
cm4gc3FsaXRlM19maWxlX2NvbnRyb2woZGF0YWJhc2UsIDAsIFNRTElURV9UUlVOQ0FURV9EQVRB
QkFTRSwgMCkgPT0gU1FMSVRFX09LOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaAppbmRleCBjNjhkOWM3ZTdhZjk4OTc2YTFlZDNk
Y2I2ZjJhY2ZlNGI2Y2Y1YzJmLi5kMzI2OGJkODVjY2U0MjJhNmUzN2E4OWIyMzAyZGY0ZjZmOGVk
N2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5
c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVt
LmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIC8vIFRydW5jYXRlcyBhIGRhdGFiYXNl
IGZpbGUuIFVzZWQgd2hlbiBNb2JpbGVTYWZhcmlTZXR0aW5ncyBkZWxldGVzIGEgZGF0YWJhc2Ug
ZmlsZSwKICAgICAvLyBzaW5jZSBkZWxldGluZyB0aGUgZmlsZSBudWtlcyB0aGUgUE9TSVggZmls
ZSBsb2NrcyB3aGljaCB3b3VsZCBwb3RlbnRpYWxseSBjYXVzZSBTYWZhcmkKICAgICAvLyB0byBj
b3JydXB0IHRoZSBuZXcgZGIgaWYgaXQncyBydW5uaW5nIGluIHRoZSBiYWNrZ3JvdW5kLgotICAg
IHN0YXRpYyBib29sIHRydW5jYXRlRGF0YWJhc2VGaWxlKHNxbGl0ZTMqIGRhdGFiYXNlKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCB0cnVuY2F0ZURhdGFiYXNlRmlsZShzcWxpdGUz
KiBkYXRhYmFzZSk7CiAjZW5kaWYKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdWlu
dDY0X3QgZGF0YWJhc2VGaWxlU2l6ZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2NvcGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUxvY2tTY29wZS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MmJmZTczZTljZDQ0YmU4OGVlOTI1MWM5NmRkODNhNDFlZDgzYzY3MgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2NvcGUuY3BwCkBAIC0w
LDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
U1FMaXRlTG9ja1Njb3BlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIExvY2sg
c2NvcGVMb2NrOworc3RhdGljIFNRTGl0ZUxvY2tTY29wZUltcGwqIHNfaW1wbCB7IG51bGxwdHIg
fTsKK3N0YXRpYyBib29sIGlzTG9ja2VkRXh0ZXJuYWxseSB7IGZhbHNlIH07CisKK3ZvaWQgU1FM
aXRlTG9ja1Njb3BlOjpzZXRJbXBsKFNRTGl0ZUxvY2tTY29wZUltcGwqIGltcGwpCit7CisgICAg
TG9ja2VyIGxvY2tlciB7IHNjb3BlTG9jayB9OworICAgIHNfaW1wbCA9IGltcGw7Cit9CisKK3Zv
aWQgU1FMaXRlTG9ja1Njb3BlOjpsb2NrKCkgV1RGX0lHTk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFM
WVNJUworeworICAgIHNjb3BlTG9jay5sb2NrKCk7CisgICAgaXNMb2NrZWRFeHRlcm5hbGx5ID0g
dHJ1ZTsKK30KKwordm9pZCBTUUxpdGVMb2NrU2NvcGU6OnVubG9jaygpIFdURl9JR05PUkVTX1RI
UkVBRF9TQUZFVFlfQU5BTFlTSVMKK3sKKyAgICBpc0xvY2tlZEV4dGVybmFsbHkgPSBmYWxzZTsK
KyAgICBzY29wZUxvY2sudW5sb2NrKCk7Cit9CisKK2Jvb2wgU1FMaXRlTG9ja1Njb3BlOjppc0lu
c2lkZVNjb3BlKCkKK3sKKyAgICByZXR1cm4gc2NvcGVMb2NrLmlzTG9ja2VkKCkgJiYgIWlzTG9j
a2VkRXh0ZXJuYWxseTsKK30KKworU1FMaXRlTG9ja1Njb3BlOjpTUUxpdGVMb2NrU2NvcGUoKQor
eworICAgIHNjb3BlTG9jay5sb2NrKCk7CisgICAgaWYgKHNfaW1wbCkKKyAgICAgICAgc19pbXBs
LT5iZWdpbigpOworfQorCitTUUxpdGVMb2NrU2NvcGU6On5TUUxpdGVMb2NrU2NvcGUoKQorewor
ICAgIGlmIChzX2ltcGwpCisgICAgICAgIHNfaW1wbC0+ZW5kKCk7CisgICAgc2NvcGVMb2NrLnVu
bG9jaygpOworfQorCit2b2lkIFNRTGl0ZUxvY2tTY29wZTo6YWRkRGF0YWJhc2UoU1FMaXRlRGF0
YWJhc2UmIGRhdGFiYXNlKQoreworICAgIGlmIChzX2ltcGwpCisgICAgICAgIHNfaW1wbC0+YWRk
RGF0YWJhc2UoZGF0YWJhc2UpOworfQorCit2b2lkIFNRTGl0ZUxvY2tTY29wZTo6cmVtb3ZlRGF0
YWJhc2UoU1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQoreworICAgIGlmIChzX2ltcGwpCisgICAg
ICAgIHNfaW1wbC0+cmVtb3ZlRGF0YWJhc2UoZGF0YWJhc2UpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
TG9ja1Njb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlTG9ja1Njb3Bl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTg2NjE0YzE2MDA2YjAyYWQ5YjI5OTQzNzhkOWY2ODljNGY5NGVmOQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVMb2Nr
U2NvcGUuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1FMaXRlRGF0YWJhc2U7CitjbGFzcyBTUUxpdGVU
cmFuc2FjdGlvbjsKKworY2xhc3MgU1FMaXRlTG9ja1Njb3BlSW1wbCB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+U1FMaXRlTG9ja1Njb3BlSW1wbCgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwg
dm9pZCBiZWdpbigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kKCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBhZGREYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmKSA9IDA7Cit9OworCitjbGFzcyBTUUxp
dGVMb2NrU2NvcGUgeworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNl
dEltcGwoU1FMaXRlTG9ja1Njb3BlSW1wbCopOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIGxvY2soKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCB1bmxvY2soKTsKKyAg
ICBzdGF0aWMgYm9vbCBpc0luc2lkZVNjb3BlKCk7CisKKyAgICBTUUxpdGVMb2NrU2NvcGUoKTsK
KyAgICB+U1FMaXRlTG9ja1Njb3BlKCk7CisKKyAgICB2b2lkIGFkZERhdGFiYXNlKFNRTGl0ZURh
dGFiYXNlJik7CisgICAgdm9pZCByZW1vdmVEYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYpOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlU3RhdGVtZW50LmNwcAppbmRleCBiMDg0OWU2ZjgwOGNhMzgwYjA4YzYyNzRiMDRk
MTQ5Y2MwMzNjMDg3Li5iMzcxY2RiNGU1YjJmMmRjMGQ2YWI2YWI3ZWM0NTcxZjVlMjZiZGIyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcApA
QCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNRTFZh
bHVlLmgiCisjaW5jbHVkZSAiU1FMaXRlTG9ja1Njb3BlLmgiCiAjaW5jbHVkZSA8c3FsaXRlMy5o
PgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4K
QEAgLTY2LDYgKzY3LDIyIEBAIGludCBTUUxpdGVTdGF0ZW1lbnQ6OnN0ZXAoKQogewogICAgIExv
Y2tlciBkYXRhYmFzZUxvY2sgeyBtX2RhdGFiYXNlLmRhdGFiYXNlTXV0ZXgoKSB9OwogCisgICAg
aW50IGVycm9yOworICAgIHsKKyAgICAgICAgU1FMaXRlTG9ja1Njb3BlIGxvY2tTY29wZTsKKyAg
ICAgICAgZXJyb3IgPSBzcWxpdGUzX3N0ZXAobV9zdGF0ZW1lbnQpOworICAgIH0KKworICAgIGlm
IChlcnJvciAhPSBTUUxJVEVfRE9ORSAmJiBlcnJvciAhPSBTUUxJVEVfUk9XKQorICAgICAgICBM
T0coU1FMRGF0YWJhc2UsICJzcWxpdGUzX3N0ZXAgZmFpbGVkICglaSlcbkVycm9yIC0gJXMiLCBl
cnJvciwgc3FsaXRlM19lcnJtc2cobV9kYXRhYmFzZS5zcWxpdGUzSGFuZGxlKCkpKTsKKworICAg
IHJldHVybiBlcnJvcjsKK30KKworaW50IFNRTGl0ZVN0YXRlbWVudDo6c3RlcFdpdGhvdXRMb2Nr
KCkKK3sKKyAgICBMb2NrZXIgZGF0YWJhc2VMb2NrIHsgbV9kYXRhYmFzZS5kYXRhYmFzZU11dGV4
KCkgfTsKKwogICAgIGludCBlcnJvciA9IHNxbGl0ZTNfc3RlcChtX3N0YXRlbWVudCk7CiAgICAg
aWYgKGVycm9yICE9IFNRTElURV9ET05FICYmIGVycm9yICE9IFNRTElURV9ST1cpCiAgICAgICAg
IExPRyhTUUxEYXRhYmFzZSwgInNxbGl0ZTNfc3RlcCBmYWlsZWQgKCVpKVxuRXJyb3IgLSAlcyIs
IGVycm9yLCBzcWxpdGUzX2Vycm1zZyhtX2RhdGFiYXNlLnNxbGl0ZTNIYW5kbGUoKSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oCmluZGV4IGNmMmYx
MjBmMmU3NTNhZDhkMTMxNzBmZDBkODcwMDE2OWRlYmMxNTUuLjhhY2ZkNjkyZjVlZDNlMjg0ODc5
N2M1Y2ExYzk4MGI4OThlNDFiY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3NxbC9TUUxpdGVTdGF0ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlU3RhdGVtZW50LmgKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHVuc2lnbmVkIGJpbmRQYXJhbWV0ZXJDb3VudCgpIGNvbnN0OwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgaW50IHN0ZXAoKTsKKyAgICBpbnQgc3RlcFdpdGhvdXRMb2NrKCk7CiAgICAgV0VC
Q09SRV9FWFBPUlQgaW50IHJlc2V0KCk7CiAgICAgCiAgICAgLy8gc3RlcHMgYW5kIGZpbmFsaXpl
cyB0aGUgcXVlcnkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwCmluZGV4IGFlYTJmYWE1OGExNTgxZjAwYmY1NmJjZWVlZDE3N2I0NGE0MzYwOTYu
LjhjYWM2OTc2MDc0M2UyMWQ4NzI5ZDJiNjVjOTg1NzRjZjQwMGZhNmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQXV4aWxp
YXJ5UHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1
ZGUgIkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJEb3dubG9hZC5oIgogI2lu
Y2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9N
X1BST1RPQ09MX01BTkFHRVIpCkBAIC0xNTgsOSArMTU5LDcgQEAgTmV0d29ya1Byb2Nlc3M6Ok5l
dHdvcmtQcm9jZXNzKEF1eGlsaWFyeVByb2Nlc3NJbml0aWFsaXphdGlvblBhcmFtZXRlcnMmJiBw
YXJhbWUKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQogICAgICwgbV9uZXR3b3JrQ29u
dGVudFJ1bGVMaXN0TWFuYWdlcigqdGhpcykKICNlbmRpZgotI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgLCBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcihbdGhpc10oYm9vbCBpc0hvbGRp
bmdMb2NrZWRGaWxlcykgeyBzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhpc0hvbGRpbmdMb2NrZWRG
aWxlcyk7IH0pCi0jZW5kaWYKKyAgICAsIG1fZGF0YWJhc2VBc3NlcnRpb25TY29wZSgiTmV0d29y
ayBQcm9jZXNzIGlzIGhvbGRpbmcgbG9ja2VkIGZpbGVzIikKICAgICAsIG1fbWVzc2FnZVBvcnRD
aGFubmVsUmVnaXN0cnkoY3JlYXRlTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoKnRoaXMpKQog
ewogICAgIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzOjppbml0aWFsaXplKCk7CkBA
IC0yMjE1LDEyICsyMjE0LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVu
ZChib29sIGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGwKIHsKICAgICBSRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVU
b1N1c3BlbmQoKSwgaXNTdXNwZW5zaW9uSW1taW5lbnQ9JWQiLCB0aGlzLCBpc1N1c3BlbnNpb25J
bW1pbmVudCk7CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGZvciAoYXV0byYgc2Vy
dmVyIDogbV93ZWJJREJTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBzZXJ2ZXItPnN1c3BlbmQo
KTsKLSAgICBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXIgPSB0cnVlOwotI2VuZGlmCi0KICAgICBs
b3dNZW1vcnlIYW5kbGVyKENyaXRpY2FsOjpZZXMpOwogCiAgICAgUmVmUHRyPENhbGxiYWNrQWdn
cmVnYXRvcj4gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUo
W3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CkBAIC0yMjI4LDEwICsyMjIxLDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJl
cGFyZVRvU3VzcGVuZChib29sIGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGwK
ICAgICAgICAgVU5VU0VEX1ZBUklBQkxFKHRoaXMpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogICAgIH0pOwotICAgIAotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
Ci0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdXNwZW5kKFtjYWxsYmFja0Fn
Z3JlZ2F0b3JdIHsgfSk7Ci0jZW5kaWYKIAogICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lvbihbJl0g
KGF1dG8mIG5ldHdvcmtTZXNzaW9uKSB7CiAgICAgICAgIHBsYXRmb3JtRmx1c2hDb29raWVzKG5l
dHdvcmtTZXNzaW9uLnNlc3Npb25JRCgpLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwpAQCAt
MjI0Nyw3ICsyMjM2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZChi
b29sIGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGwKICAgICB9CiAjZW5kaWYK
IAotICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPnN1c3BlbmQoW2NhbGxiYWNrQWdncmVnYXRvcl0g
eyB9KTsKKyAgICBtX2RhdGFiYXNlQXNzZXJ0aW9uU2NvcGUuaW50ZXJydXB0KCk7CiB9CiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3M6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkKQEAgLTIy
NzAsMjIgKzIyNTksMTMgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKCkKIHsKICAgICBm
b3IgKGF1dG8mIGNvbm5lY3Rpb24gOiBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy52YWx1ZXMoKSkK
ICAgICAgICAgY29ubmVjdGlvbi0+ZW5kU3VzcGVuc2lvbigpOwotCi0jaWYgRU5BQkxFKFJFU09V
UkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OnJlc3VtZSgpOwotI2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAg
IGZvciAoYXV0byYgc2VydmVyIDogbV9zd1NlcnZlcnMudmFsdWVzKCkpCiAgICAgICAgIHNlcnZl
ci0+ZW5kU3VzcGVuc2lvbigpOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAg
ICBmb3IgKGF1dG8mIHNlcnZlciA6IG1fd2ViSURCU2VydmVycy52YWx1ZXMoKSkKLSAgICAgICAg
c2VydmVyLT5yZXN1bWUoKTsKLSAgICBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXIgPSBmYWxzZTsK
LSNlbmRpZgogCi0gICAgbV9zdG9yYWdlTWFuYWdlclNldC0+cmVzdW1lKCk7CisgICAgbV9kYXRh
YmFzZUFzc2VydGlvblNjb3BlLnJlc3VtZSgpOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpw
cmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDc5NDgwOTdhYTNkYzM4NmEyZmQ0MWZh
ZDYyM2IzY2VjZGY4ZDdlNGEuLjJkZGZhN2RhZmZjMmRjZDY3NmFlZGE4ZGM0ZjAwOWU1ZDM0YWIz
M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBdXhpbGlhcnlQcm9jZXNzLmgiCiAjaW5jbHVk
ZSAiQ2FjaGVNb2RlbC5oIgogI2luY2x1ZGUgIkNhbGxiYWNrSUQuaCIKKyNpbmNsdWRlICJEYXRh
YmFzZUFzc2VydGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUg
IkRvd25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUgIkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tl
ci5oIgpAQCAtNDk5LDEwICs1MDAsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkU2VydmljZVdv
cmtlclNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIGJvb2wgcHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlF
bmFibGVkLCBTdHJpbmcmJiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGlyZWN0b3J5LCBjb25z
dCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSAgICB2b2lkIHNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wpOwotI2VuZGlm
Ci0KICAgICB2b2lkIGZpcmVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRpbWVySW1tZWRpYXRlbHko
UEFMOjpTZXNzaW9uSUQpOwogCiAgICAgY2xhc3MgU2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXIg
ewpAQCAtNTc2LDEwICs1NzMsNyBAQCBwcml2YXRlOgogICAgIE5ldHdvcmtDb250ZW50UnVsZUxp
c3RNYW5hZ2VyIG1fbmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI7CiAjZW5kaWYKIAotI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyIG1fd2Vi
U1FMaXRlRGF0YWJhc2VUcmFja2VyOwotICAgIFJlZlB0cjxQcm9jZXNzQXNzZXJ0aW9uPiBtX2hv
bGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uOwotI2VuZGlmCisgICAgRGF0YWJhc2VBc3NlcnRpb25T
Y29wZSBtX2RhdGFiYXNlQXNzZXJ0aW9uU2NvcGU7CiAKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lv
bklELCBTdHJpbmc+IG1faWRiRGF0YWJhc2VQYXRoczsKICAgICBIYXNoTWFwPFBBTDo6U2Vzc2lv
bklELCBSZWZQdHI8V2ViSURCU2VydmVyPj4gbV93ZWJJREJTZXJ2ZXJzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFi
YXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0
b3JhZ2VEYXRhYmFzZS5jcHAKaW5kZXggNTY5ZmRiMmRmOGY1M2VhYmNmMTkxODEyNDMwYWI2ZmRh
NjgwMjU0MC4uNzBjOTQ5YmIwMTBmNzMyMTE3NjI3OGEyNDY1YTAwMzIwZDlmNjM3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFn
ZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCkBAIC03NSw3ICs3NSw3IEBAIGJvb2wgTG9jYWxT
dG9yYWdlRGF0YWJhc2U6Om9wZW5EYXRhYmFzZShTaG91bGRDcmVhdGVEYXRhYmFzZSBzaG91bGRD
cmVhdGVEYXRhYmFzCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAoIW1f
ZGF0YWJhc2Uub3BlbihtX2RhdGFiYXNlUGF0aCkpIHsKKyAgICBpZiAoIW1fZGF0YWJhc2Uub3Bl
bihtX2RhdGFiYXNlUGF0aCwgU1FMaXRlRGF0YWJhc2U6Ok9wZW5Nb2RlOjpSZWFkV3JpdGVDcmVh
dGUsIFNRTGl0ZURhdGFiYXNlOjpJc0ludGVycnVwdGFibGU6OlllcykpIHsKICAgICAgICAgTE9H
X0VSUk9SKCJGYWlsZWQgdG8gb3BlbiBkYXRhYmFzZSBmaWxlICVzIGZvciBsb2NhbCBzdG9yYWdl
IiwgbV9kYXRhYmFzZVBhdGgudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3
b3JrUHJvY2Vzc0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdv
cmtQcm9jZXNzSU9TLm1tCmluZGV4IDY0OTRiNWE3OThhZjY5MDgxZWEzZDdhNWEzY2M1NWVjODI3
ZTRiZjQuLjVkMDAxMGUwMmIyNDAxZTg0ZjQ1NTQ3ODkyYTE2OTMwNDQ5MzUzMWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9T
Lm1tCkBAIC0xMDAsMjEgKzEwMCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyU2Vydmlj
ZVdvcmtlckVudGl0bGVtZW50T3ZlcnJpZGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pCiAKICNlbmRp
ZiAvLyAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldElz
SG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpCi17Ci0gICAgaWYg
KCFpc0hvbGRpbmdMb2NrZWRGaWxlcykgewotICAgICAgICBtX2hvbGRpbmdMb2NrZWRGaWxlQXNz
ZXJ0aW9uID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChtX2hv
bGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uICYmIG1faG9sZGluZ0xvY2tlZEZpbGVBc3NlcnRpb24t
PmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gV2Ugc3luY2hyb25vdXNseSB0
YWtlIGEgcHJvY2VzcyBhc3NlcnRpb24gd2hlbiBiZWdpbm5pbmcgYSBTUUxpdGUgdHJhbnNhY3Rp
b24gc28gdGhhdCB3ZSBkb24ndCBnZXQgc3VzcGVuZGVkCi0gICAgLy8gd2hpbGUgaG9sZGluZyBh
IGxvY2tlZCBmaWxlLiBXZSB3b3VsZCBnZXQga2lsbGVkIGlmIHN1c3BlbmRlZCB3aGlsZSBob2xk
aW5nIGxvY2tlZCBmaWxlcy4KLSAgICBtX2hvbGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uID0gUHJv
Y2Vzc0Fzc2VydGlvbjo6Y3JlYXRlKGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIk5ldHdvcmsgUHJv
Y2VzcyBpcyBob2xkaW5nIGxvY2tlZCBmaWxlcyJfcywgUHJvY2Vzc0Fzc2VydGlvblR5cGU6OkZp
bmlzaFRhc2tVbmludGVycnVwdGFibGUsIFByb2Nlc3NBc3NlcnRpb246Ok1vZGU6OlN5bmMpOwot
fQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1J
TFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhYmFzZUFzc2VydGlvblNj
b3BlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RhdGFiYXNlQXNzZXJ0aW9uU2NvcGUuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjJhM2U0MzBmODdiMTJhNjZiY2M3ZmE5Y2ZiYTQwNzJhZDFmMzA2OTAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhYmFzZUFzc2VydGlvblNj
b3BlLmNwcApAQCAtMCwwICsxLDEwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJEYXRhYmFzZUFzc2VydGlvblNjb3BlLmgiCisKKyNpbmNsdWRlICJQcm9j
ZXNzQXNzZXJ0aW9uLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitEYXRhYmFz
ZUFzc2VydGlvblNjb3BlOjpEYXRhYmFzZUFzc2VydGlvblNjb3BlKGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllcikKKyAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICwgbV9hc3NlcnRp
b25SZWxlYXNlVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmRGF0YWJhc2VBc3NlcnRpb25T
Y29wZTo6YXNzZXJ0aW9uUmVsZWFzZVRpbWVyRmlyZWQpCit7CisgICAgV2ViQ29yZTo6U1FMaXRl
TG9ja1Njb3BlOjpzZXRJbXBsKHRoaXMpOworfQorCitEYXRhYmFzZUFzc2VydGlvblNjb3BlOjp+
RGF0YWJhc2VBc3NlcnRpb25TY29wZSgpCit7CisgICAgV2ViQ29yZTo6U1FMaXRlTG9ja1Njb3Bl
OjpzZXRJbXBsKG51bGxwdHIpOworfQorCit2b2lkIERhdGFiYXNlQXNzZXJ0aW9uU2NvcGU6OmJl
Z2luKCkKK3sKKyAgICBpZiAobV9hc3NlcnRpb24gJiYgbV9hc3NlcnRpb24tPmlzVmFsaWQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9hc3NlcnRpb24gPSBQcm9jZXNzQXNzZXJ0aW9uOjpj
cmVhdGUoZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCBtX2lkZW50aWZpZXIsIFByb2Nlc3NBc3NlcnRp
b25UeXBlOjpGaW5pc2hUYXNrVW5pbnRlcnJ1cHRhYmxlLCBQcm9jZXNzQXNzZXJ0aW9uOjpNb2Rl
OjpTeW5jKTsKK30KKwordm9pZCBEYXRhYmFzZUFzc2VydGlvblNjb3BlOjplbmQoKQoreworICAg
IG1fYXNzZXJ0aW9uUmVsZWFzZVRpbWVyLnN0b3AoKTsKKyAgICAKKyAgICBib29sIHNob3VsZFJl
bGVhc2VBc3NlcnRpb24gPSB0cnVlOworICAgIGZvciAoYXV0byYgZGF0YWJhc2UgOiBtX2RhdGFi
YXNlcykgeworICAgICAgICBpZiAoZGF0YWJhc2UudHJhbnNhY3Rpb25JblByb2dyZXNzKCkpCisg
ICAgICAgICAgICBzaG91bGRSZWxlYXNlQXNzZXJ0aW9uID0gZmFsc2U7CisgICAgfQorCisgICAg
aWYgKHNob3VsZFJlbGVhc2VBc3NlcnRpb24pCisgICAgICAgIG1fYXNzZXJ0aW9uUmVsZWFzZVRp
bWVyLnN0YXJ0T25lU2hvdCgxX3MpOworfQorCit2b2lkIERhdGFiYXNlQXNzZXJ0aW9uU2NvcGU6
OmFkZERhdGFiYXNlKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKK3sKKyAgICBt
X2RhdGFiYXNlcy5hZGQoJmRhdGFiYXNlKTsKK30KKwordm9pZCBEYXRhYmFzZUFzc2VydGlvblNj
b3BlOjpyZW1vdmVEYXRhYmFzZShXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UpCit7
CisgICAgbV9kYXRhYmFzZXMucmVtb3ZlKGRhdGFiYXNlKTsKK30KKwordm9pZCBEYXRhYmFzZUFz
c2VydGlvblNjb3BlOjppbnRlcnJ1cHQoKQoreworICAgIGlmIChtX2ludGVycnVwdGVkKQorICAg
ICAgICByZXR1cm47CisgICAgbV9pbnRlcnJ1cHRlZCA9IHRydWU7CisKKyAgICBXZWJDb3JlOjpT
UUxpdGVMb2NrU2NvcGU6OmxvY2soKTsKKyAgICBmb3IgKGF1dG8mIGRhdGFiYXNlIDogbV9kYXRh
YmFzZXMpCisgICAgICAgIGRhdGFiYXNlLmludGVycnVwdCgpOworCisgICAgbV9hc3NlcnRpb25S
ZWxlYXNlVGltZXIuc3RvcCgpOworICAgIG1fYXNzZXJ0aW9uID0gbnVsbHB0cjsKK30KKwordm9p
ZCBEYXRhYmFzZUFzc2VydGlvblNjb3BlOjpyZXN1bWUoKQoreworICAgIGlmICghbV9pbnRlcnJ1
cHRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pbnRlcnJ1cHRlZCA9IGZhbHNlOworICAg
IFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZTo6dW5sb2NrKCk7Cit9CisKK3ZvaWQgRGF0YWJhc2VB
c3NlcnRpb25TY29wZTo6YXNzZXJ0aW9uUmVsZWFzZVRpbWVyRmlyZWQoKQoreworICAgIFdlYkNv
cmU6OlNRTGl0ZUxvY2tTY29wZTo6bG9jaygpOworICAgIG1fYXNzZXJ0aW9uID0gbnVsbHB0cjsK
KyAgICBXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6OnVubG9jaygpOworfQorCit9IC8vIG5hbWVw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRGF0YWJhc2VBc3Nl
cnRpb25TY29wZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRGF0YWJhc2VBc3NlcnRpb25TY29w
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRlYWUzYjIyMTJiN2NmYThkOGU4MTY2MTcxZTE1NjBiOWY3OWI4NWQK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhYmFzZUFzc2VydGlv
blNjb3BlLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiV2ViQ29yZS9TUUxpdGVMb2NrU2NvcGUuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFByb2Nlc3NBc3NlcnRpb247CisKK2NsYXNzIERhdGFiYXNlQXNzZXJ0aW9uU2Nv
cGUgZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6U1FMaXRlTG9ja1Njb3BlSW1wbCB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoRGF0YWJhc2VBc3NlcnRpb25TY29wZSkKK3B1YmxpYzoKKyAgICBl
eHBsaWNpdCBEYXRhYmFzZUFzc2VydGlvblNjb3BlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcik7
CisgICAgfkRhdGFiYXNlQXNzZXJ0aW9uU2NvcGUoKTsKKworICAgIHZvaWQgYmVnaW4oKSBmaW5h
bDsKKyAgICB2b2lkIGVuZCgpIGZpbmFsOworICAgIHZvaWQgYWRkRGF0YWJhc2UoV2ViQ29yZTo6
U1FMaXRlRGF0YWJhc2UmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZURhdGFiYXNlKFdlYkNvcmU6
OlNRTGl0ZURhdGFiYXNlJikgZmluYWw7CisKKyAgICB2b2lkIGludGVycnVwdCgpOworICAgIHZv
aWQgcmVzdW1lKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBhc3NlcnRpb25SZWxlYXNlVGltZXJG
aXJlZCgpOworCisgICAgU3RyaW5nIG1faWRlbnRpZmllcjsKKyAgICBSZWZQdHI8UHJvY2Vzc0Fz
c2VydGlvbj4gbV9hc3NlcnRpb247CisgICAgUnVuTG9vcDo6VGltZXI8RGF0YWJhc2VBc3NlcnRp
b25TY29wZT4gbV9hc3NlcnRpb25SZWxlYXNlVGltZXI7CisgICAgV2Vha0hhc2hTZXQ8V2ViQ29y
ZTo6U1FMaXRlRGF0YWJhc2U+IG1fZGF0YWJhc2VzOworICAgIGJvb2wgbV9pbnRlcnJ1cHRlZCB7
IGZhbHNlIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3Jt
YXRSZWFkZXIuY3BwCmluZGV4IGViZjcyMTI0MjNlOWNkNWUxN2E0Mjc1YjU5YWFiOGQxOThjNjk1
YjguLjAzZTE5OWUxMWJmMmEwODFkOTA0YzI2YWY5ZTg2Yzg4OTZiZTc0YzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJl
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVy
L01lZGlhRm9ybWF0UmVhZGVyLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlkZW9UcmFj
a1ByaXZhdGUuaD4KICNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRh
dGlvbi5oPgorI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgogI2luY2x1ZGUg
PHd0Zi9Mb2dnZXJIZWxwZXIuaD4KICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYVRy
YWNrUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRl
ci9NZWRpYVRyYWNrUmVhZGVyLmNwcAppbmRleCAxZGMxY2FlMDMwMDhlMGEyMGE0NGFjNzNkMWFh
MzcyNTM1N2YyMGZhLi4xZDllZjhmN2I4NDU5ZmIwNzQwMjdhNTcwNTgyYzBhMDE1YjI0ODNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVk
aWFUcmFja1JlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9y
bWF0UmVhZGVyL01lZGlhVHJhY2tSZWFkZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAgT1NTdGF0
dXMgTWVkaWFUcmFja1JlYWRlcjo6Y3JlYXRlQ3Vyc29yQXRMYXN0U2FtcGxlSW5EZWNvZGVPcmRl
cihNVFBsdWdpblNhbXBsZUMKIAogV1RGTG9nQ2hhbm5lbCYgTWVkaWFUcmFja1JlYWRlcjo6bG9n
Q2hhbm5lbCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OkxvZ01lZGlhOworICAgIHJl
dHVybiBMb2dNZWRpYTsKIH0KIAogY29uc3Qgdm9pZCogTWVkaWFUcmFja1JlYWRlcjo6bmV4dFNh
bXBsZUN1cnNvckxvZ0lkZW50aWZpZXIodWludDY0X3QgY3Vyc29ySUQpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQKaW5kZXggOTllOTY2YzkxMzZjNGRmOTIyZjg5ZjNkMWQwMzk3YTdmY2ExMWYx
Mi4uZWQ5MTdkZmE1NGI4ZmI4YzYzNDQ1MTEzMDEzZmY1MDA3NWM5MTFlOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dApAQCAtMTQxLDYgKzE0MSw3IEBAIFNoYXJlZC9BcHBsZVBheS9tYWMvV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KIAogU2hhcmVkL0FQSVdlYkFyY2hpdmUubW0KIFNo
YXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KK1NoYXJlZC9EYXRhYmFzZUFzc2VydGlvblNj
b3BlLmNwcAogU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQubW0KIFNoYXJlZC9Gb2N1c2Vk
RWxlbWVudEluZm9ybWF0aW9uLmNwcAogU2hhcmVkL1Zpc2libGVDb250ZW50UmVjdFVwZGF0ZUlu
Zm8uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCAyNDU0ZmQ0NTE0NGJmMGQwNjlkNjBlNjZlMzBjY2JhOTU1YzU0OTUxLi5kOWE1M2Q5
MDEwMWFiNWQwZjMwYmQ4ODBlZGYwMDg0MGNhYWVhOTEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NzgsNiArMTQ3OCw3IEBACiAJ
CTkzNjhFRURFMjMwM0E5MDIwMEJEQjExQSAvKiBTdG9yYWdlTWFuYWdlclNldE1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzY4RUVEQzIzMDNBOEQ4MDBCREIxMUEgLyogU3RvcmFnZU1hbmFnZXJTZXRNZXNzYWdlUmVjZWl2
ZXIuY3BwICovOyB9OwogCQk5MzY4RUVERjIzMDNBOUVEMDBCREIxMUEgLyogU3RvcmFnZU1hbmFn
ZXJTZXRNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTM2OEVFREQyMzAzQThEODAwQkRCMTFBIC8qIFN0b3JhZ2VNYW5hZ2VyU2V0TWVzc2Fn
ZXMuaCAqLzsgfTsKIAkJOTM2QjA1OTgyMzAzOTA5NzAwMkZDMDZCIC8qIFN0b3JhZ2VNYW5hZ2Vy
U2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzZC
MDU5NTIzMDM5MDBCMDAyRkMwNkIgLyogU3RvcmFnZU1hbmFnZXJTZXQuaCAqLzsgfTsKKwkJOTM3
MDZFRkYyNjlDQzk5QTAwMkRBMTI3IC8qIERhdGFiYXNlQXNzZXJ0aW9uU2NvcGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhGMEY1MjY5OEIzQUIw
MEE5RjMzMSAvKiBEYXRhYmFzZUFzc2VydGlvblNjb3BlLmggKi87IH07CiAJCTkzNzM1RUJCMUM5
Mjk4NjMwMDMzNkZBNyAvKiBXS1ByZXZpZXdBY3Rpb25JdGVtSW50ZXJuYWwuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzNzM1RUJBMUM5Mjk4NjMwMDMz
NkZBNyAvKiBXS1ByZXZpZXdBY3Rpb25JdGVtSW50ZXJuYWwuaCAqLzsgfTsKIAkJOTM5MTA3NEYx
QkY2QkM2NTAwOEMxN0FEIC8qIFdLUHJldmlld0VsZW1lbnRJbmZvSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTEwNzRFMUJGNkJDNjUw
MDhDMTdBRCAvKiBXS1ByZXZpZXdFbGVtZW50SW5mb0ludGVybmFsLmggKi87IH07CiAJCTkzOTFG
MkNCMTIxQjY3QUQwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzkxRjI4MzEyMUIzOEY1
MDBFQkY3RTggLyogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oICovOyB9OwpAQCAtNDkzNSw2
ICs0OTM2LDggQEAKIAkJOTNFNkE0RUQxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1
bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSGl0VGVzdFJlc3VsdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y1NDlCMzFFMzE3NEI3MDAwRTcyMzkg
LyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNGNTQ5QjUxRTMxNzREQTAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9u
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tTbmFwc2hvdENv
bmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRjhGMEY0MjY5
OEIzQUIwMEE5RjMzMSAvKiBEYXRhYmFzZUFzc2VydGlvblNjb3BlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERhdGFiYXNlQXNzZXJ0aW9uU2NvcGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5M0Y4RjBGNTI2OThCM0FCMDBBOUYzMzEgLyogRGF0YWJhc2VBc3NlcnRpb25TY29w
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhYmFzZUFzc2VydGlvblNjb3BlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk1MEYyODdFMjUyNDE0RTkwMEI3NEYxQyAvKiBXS01vdXNlRGV2
aWNlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tNb3VzZURl
dmljZU9ic2VydmVyLmg7IHBhdGggPSBpb3MvV0tNb3VzZURldmljZU9ic2VydmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1MEYyODdGMjUyNDE0RUEwMEI3NEYxQyAvKiBXS01v
dXNlRGV2aWNlT2JzZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5h
bWUgPSBXS01vdXNlRGV2aWNlT2JzZXJ2ZXIubW07IHBhdGggPSBpb3MvV0tNb3VzZURldmljZU9i
c2VydmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NTkzNjc1RDI1MkU1RTMw
MDBEM0YwQTAgLyogV0tTdHlsdXNEZXZpY2VPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXS1N0eWx1c0RldmljZU9ic2VydmVyLmg7IHBhdGggPSBpb3MvV0tTdHls
dXNEZXZpY2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjc2Nyw2
ICs2NzcwLDggQEAKIAkJCQk1MTA2RDdCRjE4QkRCRTczMDAwQUIxNjYgLyogQ29udGV4dE1lbnVD
b250ZXh0RGF0YS5jcHAgKi8sCiAJCQkJNTEwNkQ3QzAxOEJEQkU3MzAwMEFCMTY2IC8qIENvbnRl
eHRNZW51Q29udGV4dERhdGEuaCAqLywKIAkJCQk5OUY2NDJEMjFGQUJFMzc4MDA5NjIxRTkgLyog
Q29vcmRpbmF0ZVN5c3RlbS5oICovLAorCQkJCTkzRjhGMEY0MjY5OEIzQUIwMEE5RjMzMSAvKiBE
YXRhYmFzZUFzc2VydGlvblNjb3BlLmNwcCAqLywKKwkJCQk5M0Y4RjBGNTI2OThCM0FCMDBBOUYz
MzEgLyogRGF0YWJhc2VBc3NlcnRpb25TY29wZS5oICovLAogCQkJCTk5MDM2QUU4MjNBOTcwODcw
MDAwQjA2QSAvKiBEZWJ1Z2dhYmxlSW5mb0RhdGEuY3BwICovLAogCQkJCTk5MDM2QUU3MjNBOTcw
ODcwMDAwQjA2QSAvKiBEZWJ1Z2dhYmxlSW5mb0RhdGEuaCAqLywKIAkJCQkwRjE4OUNBQjI0NzQ5
RjJGMDBFNThEODEgLyogRGlzcGxheUxpbmtPYnNlcnZlcklELmggKi8sCkBAIC0xMTk5MSw2ICsx
MTk5Niw3IEBACiAJCQkJNTc1OTdFQkQyMTgxODQ5MDAwMzdGOTI0IC8qIEN0YXBBdXRoZW50aWNh
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1NzU5N0VCOTIxODExRDlBMDAzN0Y5MjQgLyogQ3Rh
cEhpZERyaXZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTcwREFBQ0EyMzAzODVGRDAwRThGQzA0
IC8qIEN0YXBOZmNEcml2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTkzNzA2RUZGMjY5Q0M5OUEw
MDJEQTEyNyAvKiBEYXRhYmFzZUFzc2VydGlvblNjb3BlLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
NTVGOTE3MTFDNTk2NzZFMDAyOUU5MkQgLyogRGF0YURldGVjdGlvblJlc3VsdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMUFDNzUzODAxODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTk5MDM2QUU5MjNBOTcwODcwMDAwQjA2QSAvKiBEZWJ1Z2dhYmxl
SW5mb0RhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2Fj
eS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFn
ZS9TdG9yYWdlVHJhY2tlci5jcHAKaW5kZXggZWVhMDAwNDRiYWZiZmJmMzVjZWY4ODY2ODlmNDA5
NTRhZDljNGYyNC4uYzg1ODllYTY0YTZiNGZmYTk4ZTY3NDIwZWFmZTk1ZjIwZmIxNDkwMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBAIC0y
OSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiU3RvcmFnZVRyYWNrZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0
ZURhdGFiYXNlVHJhY2tlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRmlsZVN5c3RlbS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRh
Lmg+CkBAIC0zODUsMTMgKzM4Niw2IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OmRlbGV0ZUFsbE9y
aWdpbnMoKQogICAgIH0pOwogfQogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLXN0YXRpYyB2
b2lkIHRydW5jYXRlRGF0YWJhc2VGaWxlKFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKLXsKLSAg
ICBzcWxpdGUzX2ZpbGVfY29udHJvbChkYXRhYmFzZS5zcWxpdGUzSGFuZGxlKCksIDAsIFNRTElU
RV9UUlVOQ0FURV9EQVRBQkFTRSwgMCk7Ci19Ci0jZW5kaWYKLQogdm9pZCBTdG9yYWdlVHJhY2tl
cjo6c3luY0RlbGV0ZUFsbE9yaWdpbnMoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OwpAQCAtNDI5LDcgKzQyMyw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVBbGxP
cmlnaW5zKCkKIAogICAgIGlmIChtX2RhdGFiYXNlLmlzT3BlbigpKSB7CiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICAgICAgdHJ1bmNhdGVEYXRhYmFzZUZpbGUobV9kYXRhYmFzZSk7Cisg
ICAgICAgIFNRTGl0ZUZpbGVTeXN0ZW06OnRydW5jYXRlRGF0YWJhc2VGaWxlKG1fZGF0YWJhc2Uu
c3FsaXRlM0hhbmRsZSgpKTsKICNlbmRpZgogICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7CiAg
ICAgfQpAQCAtNTQzLDcgKzUzNyw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVP
cmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQogCiAgICAgaWYgKHNob3VsZERl
bGV0ZVRyYWNrZXJGaWxlcykgewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIHRy
dW5jYXRlRGF0YWJhc2VGaWxlKG1fZGF0YWJhc2UpOworICAgICAgICBTUUxpdGVGaWxlU3lzdGVt
Ojp0cnVuY2F0ZURhdGFiYXNlRmlsZShtX2RhdGFiYXNlLnNxbGl0ZTNIYW5kbGUoKSk7CiAjZW5k
aWYKICAgICAgICAgbV9kYXRhYmFzZS5jbG9zZSgpOwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZ
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434121</attachid>
            <date>2021-07-23 14:29:41 -0700</date>
            <delta_ts>2021-07-23 14:31:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227887-20210723142940.patch</filename>
            <type>text/plain</type>
            <size>45677</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzY0MDEyZGQxYzQwN2Rl
ODQ5ODM5NjQzMGQ1MGE0N2VhNDc0NjExMy4uOTZiOGE1YWVjNjNlYTI5ZTliNGFjOWY3YWUxZDA3
Mzk5Yzc0NmUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTA3LTIzICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgYWxsIGZpbGUgbG9j
a3Mgc3luY2hyb25vdXNseSBpbiBuZXR3b3JrIHByb2Nlc3Mgd2hlbiBpdCBpcyBhYm91dCB0byBz
dXNwZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mjc4ODcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgwODAyMjI0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZl
cjo6c3RvcERhdGFiYXNlQWN0aXZpdGllc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6SURCU2VydmVyOjpoYXNEYXRhYmFzZUFjdGl2aXRpZXNPbk1haW5UaHJlYWQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnN0
b3BEYXRhYmFzZUFjdGl2aXRpZXNPbk1haW5UaHJlYWQpOiBEZWxldGVkLgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaDoKKyAgICAgICAgKiBTb3VyY2VzLnR4
dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNR
TGl0ZURhdGFiYXNlOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OndhbEF1dG9tYXRpY1RydW5j
YXRpb25Ib29rKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjp1c2VXQUxKb3Vy
bmFsTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6Y2xvc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmludGVycnVwdCk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZTo6c2V0SXNSdW5uaW5nVHJhbnNhY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmlzUnVubmluZ1RyYW5zYWN0aW9uIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVGaWxl
U3lzdGVtOjp0cnVuY2F0ZURhdGFiYXNlRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NR
TGl0ZUZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudDo6c2hvdWxkRXhlY3V0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OnN0ZXApOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMaXRlU3RhdGVtZW50OjpzdGVwV2l0aG91dExvY2tTY29wZSk6CisgICAgICAgICog
cGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9T
UUxpdGVUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlv
bjo6YmVnaW4pOgorCiAyMDIxLTA3LTIyICBWw61jdG9yIE1hbnVlbCBKw6FxdWV6IExlYWwgIDx2
amFxdWV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgQ29tcGlsYXRpb24gZXJyb3Igd2l0aCBnY2Mg
dmVyc2lvbiA5LjMuMCAoQnVpbGRyb290IDIwMjAuMDgtMTQtZ2U1YTJhOTApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGNjMGMwMDVmOTIzYjA3NjY0MGEzZjQ2NTkyZWZjNGU2MDMyOGUzNjMuLjk0ZjdjMWY4Mzg3MzE3
ZGYyZjRkODMyYzExZjM3N2NiYTUxMWUyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIw
MjEtMDctMjMgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgRHJv
cCBhbGwgZmlsZSBsb2NrcyBzeW5jaHJvbm91c2x5IGluIG5ldHdvcmsgcHJvY2VzcyB3aGVuIGl0
IGlzIGFib3V0IHRvIHN1c3BlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNzg4NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vODA4MDIyMjQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCU2VydmVyOjp+V2ViSURCU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVy
OjpzdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpyZXN1bWUpOgorICAg
ICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2Vi
SURCU2VydmVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6TmV0d29ya1Byb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6Y3JlYXRlV2ViSURCU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnN1c3BlbmRJREJTZXJ2ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2lvcy9O
ZXR3b3JrUHJvY2Vzc0lPUy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNl
dElzSG9sZGluZ0xvY2tlZEZpbGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvbWFjL01l
ZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcDoKKyAgICAgICAgKiBTb3VyY2Vz
Q29jb2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphcHBIaWdobGlnaHRzT3ZlcmxheVJl
Y3QpOgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIx
LTA3LTIyICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAKICAgICAg
ICAgQXZvaWQgUXVpY2sgTm90ZSBvdmVybGF5IHdoZW4gc2Nyb2xsaW5nIHRvIHNob3cgYSBoaWdo
bGlnaHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggNWE5M2E0ZDdlZjA5NWFjYzgxMGU2NjljYmNh
NGIyNWY0ZmUwNDJkZi4uZGU4NDBjMzVhMzI3N2U4N2ViOTg3NTNjMTE3NDllNjAxMTFlNTk4NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wNy0yMyAgU2lodWkg
TGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9wIGFsbCBmaWxlIGxvY2tz
IHN5bmNocm9ub3VzbHkgaW4gbmV0d29yayBwcm9jZXNzIHdoZW4gaXQgaXMgYWJvdXQgdG8gc3Vz
cGVuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3
ODg3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MDgwMjIyND4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRyYWNrZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdp
bnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZU9yaWdpbik6
CisgICAgICAgIChXZWJLaXQ6OnRydW5jYXRlRGF0YWJhc2VGaWxlKTogRGVsZXRlZC4KKwogMjAy
MS0wNy0xOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBs
ZW1lbnQgSURCVHJhbnNhY3Rpb24uY29tbWl0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5kZXggYjRkNTU5NDU0MjQ4
MDlhZjI2OGIwYzc0Mzg3NDFhNTYyOTE4ZGMyNC4uMDg2ZWQxMzE0NjI1MDk5MTJhMDUzYjE3YmYw
MjYyZDliYzRlYzA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTc2NywyNiArNzY3LDkgQEAgdm9pZCBJREJT
ZXJ2ZXI6OnVwZ3JhZGVGaWxlc0lmTmVjZXNzYXJ5KCkKICAgICAgICAgRmlsZVN5c3RlbTo6bWFr
ZUFsbERpcmVjdG9yaWVzKG5ld1ZlcnNpb25EaXJlY3RvcnkpOwogfQogCi1ib29sIElEQlNlcnZl
cjo6aGFzRGF0YWJhc2VBY3Rpdml0aWVzT25NYWluVGhyZWFkKCkgY29uc3QKK3ZvaWQgSURCU2Vy
dmVyOjpzdG9wRGF0YWJhc2VBY3Rpdml0aWVzSWZOZWVkZWQoKQogewotICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKG1fbG9jay5pc0hlbGQoKSk7Ci0KLSAgICBpZiAobV9z
ZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZm9y
IChhdXRvJiBkYXRhYmFzZSA6IG1fdW5pcXVlSURCRGF0YWJhc2VNYXAudmFsdWVzKCkpIHsKLSAg
ICAgICAgaWYgKCFkYXRhYmFzZS0+aWRlbnRpZmllcigpLmlzVHJhbnNpZW50KCkgJiYgZGF0YWJh
c2UtPmhhc0FjdGl2ZVRyYW5zYWN0aW9ucygpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfQotICAgIAotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBJREJTZXJ2ZXI6OnN0b3BE
YXRhYmFzZUFjdGl2aXRpZXNPbk1haW5UaHJlYWQoKQotewotICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7Ci0gICAgQVNTRVJUKG1fbG9jay5pc0hlbGQoKSk7CisgICAgQVNTRVJUKCFpc01haW5U
aHJlYWQoKSk7CiAKICAgICAvLyBPbmx5IHN0b3Agbm9uLWVwaGVtZXJhbCBJREJTZXJ2ZXIgdGhh
dCBjYW4gaG9sZCBkYXRhYmFzZSBmaWxlIGxvY2suCiAgICAgaWYgKG1fc2Vzc2lvbklELmlzRXBo
ZW1lcmFsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCU2VydmVyLmgKaW5kZXggZDg4MzY0OWE1YzhkNWI1OWYwMmMyYmRhY2RkZTY3OGExY2Ez
YzQyZi4uYmFhODZmNWNhNGIzNDAxODM1MTcxNjE3NjU4MGQ5ZmM4NjRiODM4NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaApA
QCAtMTA3LDggKzEwNyw3IEBAIHB1YmxpYzoKICAgICBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNp
c2lvbiByZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3QgdGFza1NpemUp
OwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB1aW50NjRfdCBkaXNrVXNhZ2UoY29uc3QgU3Ry
aW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBDbGllbnRPcmlnaW4mKTsKIAotICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgaGFzRGF0YWJhc2VBY3Rpdml0aWVzT25NYWluVGhyZWFkKCkgY29uc3Q7Ci0g
ICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wRGF0YWJhc2VBY3Rpdml0aWVzT25NYWluVGhyZWFk
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wRGF0YWJhc2VBY3Rpdml0aWVzSWZOZWVk
ZWQoKTsKIAogcHJpdmF0ZToKICAgICBVbmlxdWVJREJEYXRhYmFzZSYgZ2V0T3JDcmVhdGVVbmlx
dWVJREJEYXRhYmFzZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
aW5kZXggZTc2OTRjMmNlYjkxYTU2M2ViODYxNzMzMzVhNjUxYmNmZjI3ZDE2Ny4uOTM1YTBjMzhh
NTcxYzdkYTAzZWZlYTRhOTM1MWJhOTA2MGYxYzZmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIxOTAs
NiArMjE5MCw3IEBAIHBsYXRmb3JtL3NxbC9TUUxpdGVBdXRob3JpemVyLmNwcAogcGxhdGZvcm0v
c3FsL1NRTGl0ZURhdGFiYXNlLmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhY2tl
ci5jcHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcAorcGxhdGZvcm0vc3FsL1NR
TGl0ZUxvY2tTY29wZS5jcHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwCiBwbGF0
Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUuY3BwCiBwbGF0Zm9ybS9zcWwv
U1FMaXRlVHJhbnNhY3Rpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjAxYjk5MjdlM2NjNjIyZTljY2MwMGIxMWViMmEy
Y2RkMDNmNzUzNy4uNmFkNDRmNzA3YTBhZWMyMjUzYmQxNjNhYTIxNmY1Nzk5ODc2ODAzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMjkzNiw2ICsyOTM2LDcgQEAKIAkJOTNGNkI4MUYyNTY3QTA4QzAwQTA4NDg4IC8qIFNwZWVj
aFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjZCODFDMjU2NzlGNzAwMEEwODQ4OCAvKiBTcGVlY2hS
ZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGNkI4MjIyNTY3QTY1NjAwQTA4NDg4IC8qIFNwZWVj
aFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTNGNkI4MUIyNTY3OUY2RjAwQTA4NDg4IC8qIFNwZWVjaFJlY29n
bml0aW9uQ2FwdHVyZVNvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTkzRjZGMUVFMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRF
dmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNG
NkYxRUIxMjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50LmggKi87IH07CisJCTkz
RjhGMEYzMjY5ODI2MTMwMEE5RjMzMSAvKiBTUUxpdGVMb2NrU2NvcGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhGMEYxMjY5ODI2MTIwMEE5RjMz
MSAvKiBTUUxpdGVMb2NrU2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5M0Y5MjU0MzBGN0VGNUI4MDA3RTM3QzkgLyogUmFkaW9CdXR0b25H
cm91cHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
RjkyNTQxMEY3RUY1QjgwMDdFMzdDOSAvKiBSYWRpb0J1dHRvbkdyb3Vwcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjlCNkUxMEJBMEZCNzIw
MDg1NDA2NCAvKiBKU0NvbW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzRjlCNkRGMEJBMEZCNzIwMDg1NDA2NCAvKiBKU0NvbW1lbnQuaCAqLzsg
fTsKIAkJOTNGOUI3QTEwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y5Qjc5RjBCQTYwMzI2
MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uaCAqLzsgfTsKQEAgLTExODQ4LDYgKzExODQ5LDgg
QEAKIAkJOTNGOEIzMDUwQTMwMEZFMTAwRjYxQUI4IC8qIENvZGVHZW5lcmF0b3IucG0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gQ29kZUdlbmVyYXRvci5wbTsgcGF0aCA9IHNj
cmlwdHMvQ29kZUdlbmVyYXRvci5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNG
OEIzMDYwQTMwMEZFQTAwRjYxQUI4IC8qIENvZGVHZW5lcmF0b3JKUy5wbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBDb2RlR2VuZXJhdG9ySlMucG07IHBhdGggPSBzY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsgd3JhcHNMaW5lcyA9
IDA7IH07CiAJCTkzRjhCMzA3MEEzMDBGRUEwMEY2MUFCOCAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5w
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSAiZ2VuZXJhdGUtYmluZGluZ3Mu
cGwiOyBwYXRoID0gInNjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5M0Y4RjBFRjI2OTgyNjEyMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Nj
b3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNRTGl0ZUxvY2tT
Y29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRjhGMEYxMjY5ODI2MTIw
MEE5RjMzMSAvKiBTUUxpdGVMb2NrU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1FMaXRlTG9ja1Njb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
RjkyNTQxMEY3RUY1QjgwMDdFMzdDOSAvKiBSYWRpb0J1dHRvbkdyb3Vwcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSYWRpb0J1dHRvbkdyb3Vwcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5M0Y5MjU0MjBGN0VGNUI4MDA3RTM3QzkgLyogUmFkaW9CdXR0b25H
cm91cHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmFkaW9CdXR0
b25Hcm91cHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y5QjZERTBCQTBG
QjcyMDA4NTQwNjQgLyogSlNDb21tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTQ29tbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
ODU1MCw2ICsxODU1Myw4IEBACiAJCQkJN0U0NzRFMUIxMjQ5NERDOTAwMjM1MzY0IC8qIFNRTGl0
ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oICovLAogCQkJCUI1QTY4NDIzMEZGQUJFQUEwMEQyNDY4
OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmNwcCAqLywKIAkJCQlCNUE2ODQyMTBGRkFCRTk4MDBEMjQ2
ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5oICovLAorCQkJCTkzRjhGMEVGMjY5ODI2MTIwMEE5RjMz
MSAvKiBTUUxpdGVMb2NrU2NvcGUuY3BwICovLAorCQkJCTkzRjhGMEYxMjY5ODI2MTIwMEE5RjMz
MSAvKiBTUUxpdGVMb2NrU2NvcGUuaCAqLywKIAkJCQkxQTIyNDY0NTBDQzk4RERCMDBDMDUyNDAg
LyogU1FMaXRlU3RhdGVtZW50LmNwcCAqLywKIAkJCQkxQTIyNDY0NjBDQzk4RERCMDBDMDUyNDAg
LyogU1FMaXRlU3RhdGVtZW50LmggKi8sCiAJCQkJRUJFNUIyMjcyNDVBMjlDRjAwM0E1QTg4IC8q
IFNRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlLmNwcCAqLywKQEAgLTM1NDEyLDYgKzM1NDE3
LDcgQEAKIAkJCQk1MTJCREI0QjFDNDU2RkZBMDA2NDk0REYgLyogU1FMaXRlSURCQmFja2luZ1N0
b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTFFQzEzMDFDNTBBQkY1MDAzMkY5ODMgLyogU1FM
aXRlSURCQ3Vyc29yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTFFQzEyQzFDNTBBQkJGMDAzMkY5
ODMgLyogU1FMaXRlSURCVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTkzRjhGMEYz
MjY5ODI2MTMwMEE5RjMzMSAvKiBTUUxpdGVMb2NrU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBMjI0NjRDMENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVTdGF0ZW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUVCRTVCMjI2MjQ1QTI2RUYwMDNBNUE4OCAvKiBTUUxpdGVTdGF0ZW1lbnRBdXRv
UmVzZXRTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyMjQ2NEUwQ0M5OEREQjAwQzA1MjQw
IC8qIFNRTGl0ZVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCmluZGV4IGExMTEwMjU2ODFlNDY5MzEy
M2ZiYzhjYjQ5MGE4MzcwZGIzOWMxODMuLmFlZDQ5ZGRhNTg4YmQ5MjgxZWIwNjMxZmJhMzM4NzYy
NmM0ZjM1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVE
YXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFi
YXNlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIk1lbW9yeVJlbGVhc2UuaCIKICNp
bmNsdWRlICJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJTUUxpdGVGaWxlU3lz
dGVtLmgiCisjaW5jbHVkZSAiU1FMaXRlTG9ja1Njb3BlLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3Rh
dGVtZW50LmgiCiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8c3FsaXRlMy5oPgpAQCAtMTE0
LDcgKzExNSwxMyBAQCBib29sIFNRTGl0ZURhdGFiYXNlOjpvcGVuKGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIE9wZW5Nb2RlIG9wZW5Nb2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
IAotICAgICAgICBtX29wZW5FcnJvciA9IHNxbGl0ZTNfb3Blbl92MihGaWxlU3lzdGVtOjpmaWxl
U3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZW5hbWUpLmRhdGEoKSwgJm1fZGIsIGZsYWdzLCBudWxs
cHRyKTsKKyAgICAgICAgeworICAgICAgICAgICAgU1FMaXRlTG9ja1Njb3BlIGxvY2tTY29wZTsK
KyAgICAgICAgICAgIG1fb3BlbkVycm9yID0gc3FsaXRlM19vcGVuX3YyKEZpbGVTeXN0ZW06OmZp
bGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlbmFtZSkuZGF0YSgpLCAmbV9kYiwgZmxhZ3MsIG51
bGxwdHIpOworICAgICAgICAgICAgaWYgKG1fb3BlbkVycm9yID09IFNRTElURV9PSykKKyAgICAg
ICAgICAgICAgICBsb2NrU2NvcGUuYWRkRGF0YWJhc2UoKnRoaXMpOworICAgICAgICB9CisKICAg
ICAgICAgaWYgKG1fb3BlbkVycm9yICE9IFNRTElURV9PSykgewogICAgICAgICAgICAgbV9vcGVu
RXJyb3JNZXNzYWdlID0gbV9kYiA/IHNxbGl0ZTNfZXJybXNnKG1fZGIpIDogInNxbGl0ZV9vcGVu
IHJldHVybmVkIG51bGwiOwogICAgICAgICAgICAgTE9HX0VSUk9SKCJTUUxpdGUgZGF0YWJhc2Ug
ZmFpbGVkIHRvIGxvYWQgZnJvbSAlc1xuQ2F1c2UgLSAlcyIsIGZpbGVuYW1lLmFzY2lpKCkuZGF0
YSgpLApAQCAtMTY3LDYgKzE3NCw3IEBAIHN0YXRpYyBpbnQgd2FsQXV0b21hdGljVHJ1bmNhdGlv
bkhvb2sodm9pZCogY29udGV4dCwgc3FsaXRlMyogZGIsIGNvbnN0IGNoYXIqIGRiCiAKICAgICBp
ZiAod2FsUGFnZUNvdW50ID49IGNoZWNrcG9pbnRUaHJlc2hvbGQpIHsKICAgICAgICAgaW50IG5l
d1dhbFBhZ2VDb3VudCA9IDA7CisgICAgICAgIEFTU0VSVChTUUxpdGVMb2NrU2NvcGU6OmlzSW5z
aWRlU2NvcGUoKSk7CiAgICAgICAgIGludCByZXN1bHQgPSBzcWxpdGUzX3dhbF9jaGVja3BvaW50
X3YyKGRiLCBkYk5hbWUsIFNRTElURV9DSEVDS1BPSU5UX1RSVU5DQVRFLCAmbmV3V2FsUGFnZUNv
dW50LCBudWxscHRyKTsKIAogI2lmIExPR19ESVNBQkxFRApAQCAtMTk0LDcgKzIwMiw2IEBAIHZv
aWQgU1FMaXRlRGF0YWJhc2U6OmVuYWJsZUF1dG9tYXRpY1dBTFRydW5jYXRpb24oKQogCiB2b2lk
IFNRTGl0ZURhdGFiYXNlOjp1c2VXQUxKb3VybmFsTW9kZSgpCiB7Ci0gICAgbV91c2VXQUwgPSB0
cnVlOwogICAgIHsKICAgICAgICAgYXV0byB3YWxTdGF0ZW1lbnQgPSBwcmVwYXJlU3RhdGVtZW50
KCJQUkFHTUEgam91cm5hbF9tb2RlPVdBTDsiX3MpOwogICAgICAgICBpZiAod2FsU3RhdGVtZW50
ICYmIHdhbFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKQEAgLTIzMiwxMiArMjM5
LDEyIEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmNsb3NlKFNob3VsZFNldEVycm9yU3RhdGUgc2hv
dWxkU2V0RXJyb3JTdGF0ZSkKICAgICAgICAgfQogCiAgICAgICAgIGludCBjbG9zZVJlc3VsdDsK
LSAgICAgICAgaWYgKG1fdXNlV0FMKSB7Ci0gICAgICAgICAgICAvLyBDbG9zZSBpbiB0aGUgc2Nv
cGUgb2YgY291bnRlciBhcyBpdCBtYXkgYWNxdWlyZSBsb2NrIG9mIGRhdGFiYXNlLgorICAgICAg
ICB7CiAgICAgICAgICAgICBTUUxpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0
cmFuc2FjdGlvbkNvdW50ZXI7CisgICAgICAgICAgICBTUUxpdGVMb2NrU2NvcGUgbG9ja1Njb3Bl
OwogICAgICAgICAgICAgY2xvc2VSZXN1bHQgPSBzcWxpdGUzX2Nsb3NlKGRiKTsKLSAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICBjbG9zZVJlc3VsdCA9IHNxbGl0ZTNfY2xvc2UoZGIpOworICAg
ICAgICAgICAgbG9ja1Njb3BlLnJlbW92ZURhdGFiYXNlKCp0aGlzKTsKKyAgICAgICAgfQogCiAg
ICAgICAgIGlmIChjbG9zZVJlc3VsdCAhPSBTUUxJVEVfT0spCiAgICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihTUUxEYXRhYmFzZSwgIlNRTGl0ZURhdGFiYXNlOjpjbG9zZTogRmFpbGVkIHRv
IGNsb3NlIGRhdGFiYXNlICglZCkgLSAle3B1YmxpY31zIiwgY2xvc2VSZXN1bHQsIGxhc3RFcnJv
ck1zZygpKTsKQEAgLTQ1OCw4ICs0NjUsMTQgQEAgaW50IFNRTGl0ZURhdGFiYXNlOjpydW5JbmNy
ZW1lbnRhbFZhY3V1bUNvbW1hbmQoKQogdm9pZCBTUUxpdGVEYXRhYmFzZTo6aW50ZXJydXB0KCkK
IHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhYmFzZUNsb3NpbmdNdXRleCB9OwotICAgIGlm
IChtX2RiKQotICAgICAgICBzcWxpdGUzX2ludGVycnVwdChtX2RiKTsKKyAgICAKKyAgICBpZiAo
IW1fZGIpCisgICAgICAgIHJldHVybjsKKworICAgIHNxbGl0ZTNfaW50ZXJydXB0KG1fZGIpOwor
CisgICAgaWYgKGF1dG8gcXVlcnkgPSBwcmVwYXJlU3RhdGVtZW50KCJST0xMQkFDSyJfcykpCisg
ICAgICAgIHF1ZXJ5LT5zdGVwV2l0aG91dExvY2tTY29wZSgpOwogfQogCiBpbnQ2NF90IFNRTGl0
ZURhdGFiYXNlOjpsYXN0SW5zZXJ0Um93SUQoKQpAQCAtNzMzLDQgKzc0NiwxNCBAQCBFeHBlY3Rl
ZDxVbmlxdWVSZWY8U1FMaXRlU3RhdGVtZW50PiwgaW50PiBTUUxpdGVEYXRhYmFzZTo6cHJlcGFy
ZUhlYXBTdGF0ZW1lbnQoQQogICAgIHJldHVybiBVbmlxdWVSZWY8U1FMaXRlU3RhdGVtZW50Pigq
bmV3IFNRTGl0ZVN0YXRlbWVudCgqdGhpcywgc3FsU3RhdGVtZW50LnZhbHVlKCkpKTsKIH0KIAor
dm9pZCBTUUxpdGVEYXRhYmFzZTo6c2V0SXNSdW5uaW5nVHJhbnNhY3Rpb24oYm9vbCBpc1J1bm5p
bmdUcmFuc2FjdGlvbikKK3sKKyAgICBtX2lzUnVubmluZ1RyYW5zYWN0aW9uID0gaXNSdW5uaW5n
VHJhbnNhY3Rpb247Cit9CisKK2Jvb2wgU1FMaXRlRGF0YWJhc2U6OmlzUnVubmluZ1RyYW5zYWN0
aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc1J1bm5pbmdUcmFuc2FjdGlvbjsKK30KKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZURhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlRGF0YWJhc2UuaAppbmRleCA0YjIyYzhmZTY4ZTM1ZmJkZDA5NzI1ODY4YzRjOWEwZTVjYWIy
Y2YwLi40YjBkZGJmM2NkNThlNWMwY2Q1NGIyYTk2ODdkM2QwN2YwY2M1NGRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaApAQCAtMTMwLDcgKzEzMCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEF1dGhvcml6ZXIoRGF0YWJhc2VBdXRob3JpemVyJik7
CiAKICAgICBMb2NrJiBkYXRhYmFzZU11dGV4KCkgeyByZXR1cm4gbV9sb2NraW5nTXV0ZXg7IH0K
LSAgICBib29sIGlzQXV0b0NvbW1pdE9uKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBpc0F1dG9Db21taXRPbigpIGNvbnN0OwogCiAgICAgLy8gVGhlIFNRTGl0ZSBBVVRPX1ZBQ1VV
TSBwcmFnbWEgY2FuIGJlIGVpdGhlciBOT05FLCBGVUxMLCBvciBJTkNSRU1FTlRBTC4KICAgICAv
LyBOT05FIC0gU1FMaXRlIGRvZXMgbm90IGRvIGFueSB2YWN1dW1pbmcKQEAgLTE2Miw2ICsxNjIs
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbmNyZW1lbnRTdGF0ZW1lbnRDb3VudCgpOwogICAgIHZv
aWQgZGVjcmVtZW50U3RhdGVtZW50Q291bnQoKTsKIAorICAgIHZvaWQgc2V0SXNSdW5uaW5nVHJh
bnNhY3Rpb24oYm9vbCk7CisgICAgYm9vbCBpc1J1bm5pbmdUcmFuc2FjdGlvbigpIGNvbnN0Owor
CiBwcml2YXRlOgogICAgIHN0YXRpYyBpbnQgYXV0aG9yaXplckZ1bmN0aW9uKHZvaWQqLCBpbnQs
IGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqKTsKIApA
QCAtMTgxLDggKzE4NCw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IG1f
c3RhdGVtZW50Q291bnQgeyAwIH07CiAjZW5kaWYKIAotICAgIGJvb2wgbV91c2VXQUwgeyBmYWxz
ZSB9OwotCiAgICAgTG9jayBtX2F1dGhvcml6ZXJMb2NrOwogICAgIFJlZlB0cjxEYXRhYmFzZUF1
dGhvcml6ZXI+IG1fYXV0aG9yaXplciBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fYXV0aG9yaXplckxv
Y2spOwogCkBAIC0xOTMsNiArMTk0LDggQEAgcHJpdmF0ZToKIAogICAgIGludCBtX29wZW5FcnJv
ciB7IFNRTElURV9FUlJPUiB9OwogICAgIENTdHJpbmcgbV9vcGVuRXJyb3JNZXNzYWdlOworCisg
ICAgYm9vbCBtX2lzUnVubmluZ1RyYW5zYWN0aW9uIHsgZmFsc2UgfTsKIH07CiAKIGlubGluZSB2
b2lkIFNRTGl0ZURhdGFiYXNlOjppbmNyZW1lbnRTdGF0ZW1lbnRDb3VudCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAKaW5kZXggNzZlNDVh
ZjM0ZWQwOTNmZDlmMjc2ZGQ1ZDRiOTIyYTQxNjM0ZDlhZS4uOGI5YjMyMWRjNjQ4MTAwZmNiZjRj
NWMyMmY1MGYxNGIxNWEzMTg4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
c3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVGaWxlU3lzdGVtLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlNRTGl0
ZUZpbGVTeXN0ZW0uaCIKIAogI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlLmgiCisjaW5jbHVkZSAi
U1FMaXRlTG9ja1Njb3BlLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVk
ZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNsdWRlIDxzcWxpdGUzLmg+CkBAIC05
NCw2ICs5NSw3IEBAIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRGF0YWJhc2VGaWxlKGNv
bnN0IFN0cmluZyYgZmlsZU5hbWUpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGJvb2wgU1FM
aXRlRmlsZVN5c3RlbTo6dHJ1bmNhdGVEYXRhYmFzZUZpbGUoc3FsaXRlMyogZGF0YWJhc2UpCiB7
CisgICAgU1FMaXRlTG9ja1Njb3BlIGxvY2tTY29wZTsKICAgICByZXR1cm4gc3FsaXRlM19maWxl
X2NvbnRyb2woZGF0YWJhc2UsIDAsIFNRTElURV9UUlVOQ0FURV9EQVRBQkFTRSwgMCkgPT0gU1FM
SVRFX09LOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZUZpbGVTeXN0ZW0uaAppbmRleCBjNjhkOWM3ZTdhZjk4OTc2YTFlZDNkY2I2ZjJhY2ZlNGI2Y2Y1
YzJmLi5kMzI2OGJkODVjY2U0MjJhNmUzN2E4OWIyMzAyZGY0ZjZmOGVkN2QzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmgKQEAgLTg2LDcgKzg2
LDcgQEAgcHVibGljOgogICAgIC8vIFRydW5jYXRlcyBhIGRhdGFiYXNlIGZpbGUuIFVzZWQgd2hl
biBNb2JpbGVTYWZhcmlTZXR0aW5ncyBkZWxldGVzIGEgZGF0YWJhc2UgZmlsZSwKICAgICAvLyBz
aW5jZSBkZWxldGluZyB0aGUgZmlsZSBudWtlcyB0aGUgUE9TSVggZmlsZSBsb2NrcyB3aGljaCB3
b3VsZCBwb3RlbnRpYWxseSBjYXVzZSBTYWZhcmkKICAgICAvLyB0byBjb3JydXB0IHRoZSBuZXcg
ZGIgaWYgaXQncyBydW5uaW5nIGluIHRoZSBiYWNrZ3JvdW5kLgotICAgIHN0YXRpYyBib29sIHRy
dW5jYXRlRGF0YWJhc2VGaWxlKHNxbGl0ZTMqIGRhdGFiYXNlKTsKKyAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgYm9vbCB0cnVuY2F0ZURhdGFiYXNlRmlsZShzcWxpdGUzKiBkYXRhYmFzZSk7CiAj
ZW5kaWYKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdWludDY0X3QgZGF0YWJhc2VG
aWxlU2l6ZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKaW5kZXggYjA4NDllNmY4MDhjYTM4MGIwOGM2
Mjc0YjA0ZDE0OWNjMDMzYzA4Ny4uYjJmY2NkNGNkNzQxNTc4NjQ3YjAwZTQ1ZTI3NDQ3NDU1MDhl
ZWM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVu
dC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJTUUxWYWx1ZS5oIgorI2luY2x1ZGUgIlNRTGl0ZUxvY2tTY29wZS5oIgogI2luY2x1ZGUgPHNx
bGl0ZTMuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9WYXJp
YW50Lmg+CkBAIC02MiwxMCArNjMsNDggQEAgU1FMaXRlU3RhdGVtZW50Ojp+U1FMaXRlU3RhdGVt
ZW50KCkKICAgICBtX2RhdGFiYXNlLmRlY3JlbWVudFN0YXRlbWVudENvdW50KCk7CiB9CiAKK2Jv
b2wgU1FMaXRlU3RhdGVtZW50OjpzaG91bGRFeGVjdXRlKCkKK3sKKyAgICBhdXRvIHF1ZXJ5ID0g
c3FsaXRlM19zcWwobV9zdGF0ZW1lbnQpOworICAgIGlmICghc3RyY21wKHF1ZXJ5LCAiQkVHSU4i
KSB8fCAhc3RyY21wKHF1ZXJ5LCAiQkVHSU4gSU1NRURJQVRFIikpCisgICAgICAgIG1fZGF0YWJh
c2Uuc2V0SXNSdW5uaW5nVHJhbnNhY3Rpb24odHJ1ZSk7CisgICAgZWxzZSBpZiAoIXN0cmNtcChx
dWVyeSwgIkNPTU1JVCIpIHx8ICFzdHJjbXAocXVlcnksICJST0xMQkFDSyIpKQorICAgICAgICBt
X2RhdGFiYXNlLnNldElzUnVubmluZ1RyYW5zYWN0aW9uKGZhbHNlKTsKKyAgICBlbHNlIGlmICht
X2RhdGFiYXNlLmlzUnVubmluZ1RyYW5zYWN0aW9uKCkgJiYgbV9kYXRhYmFzZS5pc0F1dG9Db21t
aXRPbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwog
aW50IFNRTGl0ZVN0YXRlbWVudDo6c3RlcCgpCiB7CiAgICAgTG9ja2VyIGRhdGFiYXNlTG9jayB7
IG1fZGF0YWJhc2UuZGF0YWJhc2VNdXRleCgpIH07CiAKKyAgICBpbnQgZXJyb3I7CisgICAgLy8g
QXV0byBjb21taXQgc2hvdWxkIGJlIG9mZiB3aGVuIHRyYW5zYWN0aW9uIGlzIHN0YXJ0ZWQgc3Vj
Y2Vzc2Z1bGx5LgorICAgIGlmIChpc1JlYWRPbmx5KCkgJiYgbV9kYXRhYmFzZS5pc0F1dG9Db21t
aXRPbigpKQorICAgICAgICBlcnJvciA9IHNxbGl0ZTNfc3RlcChtX3N0YXRlbWVudCk7CisgICAg
ZWxzZSB7CisgICAgICAgIFNRTGl0ZUxvY2tTY29wZSBsb2NrU2NvcGU7CisKKyAgICAgICAgaWYg
KCFzaG91bGRFeGVjdXRlKCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFNRTERh
dGFiYXNlLCAiU1FMaXRlU3RhdGVtZW50OjpzdGVwOiBDYW5ub3Qgc3RlcCAle3B1YmxpY31zIGJl
Y2F1c2UgdHJhbnNhY3Rpb24gaXMgcm9sbGVkIGJhY2siLCBzcWxpdGUzX3NxbChtX3N0YXRlbWVu
dCkpOworICAgICAgICAgICAgcmV0dXJuIFNRTElURV9BQk9SVDsKKyAgICAgICAgfQorCisgICAg
ICAgIGVycm9yID0gc3FsaXRlM19zdGVwKG1fc3RhdGVtZW50KTsKKyAgICB9CisKKyAgICBpZiAo
ZXJyb3IgIT0gU1FMSVRFX0RPTkUgJiYgZXJyb3IgIT0gU1FMSVRFX1JPVykKKyAgICAgICAgTE9H
KFNRTERhdGFiYXNlLCAic3FsaXRlM19zdGVwIGZhaWxlZCAoJWkpXG5FcnJvciAtICVzIiwgZXJy
b3IsIHNxbGl0ZTNfZXJybXNnKG1fZGF0YWJhc2Uuc3FsaXRlM0hhbmRsZSgpKSk7CisKKyAgICBy
ZXR1cm4gZXJyb3I7Cit9CisKK2ludCBTUUxpdGVTdGF0ZW1lbnQ6OnN0ZXBXaXRob3V0TG9ja1Nj
b3BlKCkKK3sKKyAgICBMb2NrZXIgZGF0YWJhc2VMb2NrIHsgbV9kYXRhYmFzZS5kYXRhYmFzZU11
dGV4KCkgfTsKKwogICAgIGludCBlcnJvciA9IHNxbGl0ZTNfc3RlcChtX3N0YXRlbWVudCk7CiAg
ICAgaWYgKGVycm9yICE9IFNRTElURV9ET05FICYmIGVycm9yICE9IFNRTElURV9ST1cpCiAgICAg
ICAgIExPRyhTUUxEYXRhYmFzZSwgInNxbGl0ZTNfc3RlcCBmYWlsZWQgKCVpKVxuRXJyb3IgLSAl
cyIsIGVycm9yLCBzcWxpdGUzX2Vycm1zZyhtX2RhdGFiYXNlLnNxbGl0ZTNIYW5kbGUoKSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oCmluZGV4IGNm
MmYxMjBmMmU3NTNhZDhkMTMxNzBmZDBkODcwMDE2OWRlYmMxNTUuLjNjYzAxOWZlNTM5M2I4M2Qw
YzBjY2Q5MTY5MTdiOTI4YWFmNDg5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlU3RhdGVtZW50LmgKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAgIFdFQkNP
UkVfRVhQT1JUIHVuc2lnbmVkIGJpbmRQYXJhbWV0ZXJDb3VudCgpIGNvbnN0OwogCiAgICAgV0VC
Q09SRV9FWFBPUlQgaW50IHN0ZXAoKTsKKyAgICBpbnQgc3RlcFdpdGhvdXRMb2NrU2NvcGUoKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgcmVzZXQoKTsKICAgICAKICAgICAvLyBzdGVwcyBhbmQg
ZmluYWxpemVzIHRoZSBxdWVyeS4KQEAgLTg0LDYgKzg1LDcgQEAgcHJpdmF0ZToKIAogICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJlcGFyZWQgc3RhdGVtZW50IGhhcyBiZWVuIHN0ZXBwZWQg
YXQgbGVhc3Qgb25jZSB1c2luZyBzdGVwKCkgYnV0IGhhcyBuZWl0aGVyIHJ1biB0byBjb21wbGV0
aW9uIChyZXR1cm5lZCBTUUxJVEVfRE9ORSBmcm9tIHN0ZXAoKSkgbm9yIGJlZW4gcmVzZXQoKS4K
ICAgICBib29sIGhhc1N0YXJ0ZWRTdGVwcGluZygpOworICAgIGJvb2wgc2hvdWxkRXhlY3V0ZSgp
OwogCiAgICAgU1FMaXRlRGF0YWJhc2UmIG1fZGF0YWJhc2U7CiAgICAgc3FsaXRlM19zdG10KiBt
X3N0YXRlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJh
bnNhY3Rpb24uY3BwCmluZGV4IDA4ZTllYjczZGIyNGEwOTBhN2EwODBjMWE4MTU2OTMxOGU1YTI4
NTkuLmQ1ODJmYWNjMmUxY2RjMDc1OTU4MDE1MzRhZDQ5Zjg5NGZkOGZjZWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcApAQCAtNjYs
MTAgKzY2LDE0IEBAIHZvaWQgU1FMaXRlVHJhbnNhY3Rpb246OmJlZ2luKCkKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgbV9pblByb2dyZXNzID0gbV9kYi5leGVjdXRlQ29tbWFuZCgiQkVHSU4g
SU1NRURJQVRFIl9zKTsKICAgICAgICAgbV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVzcyA9IG1f
aW5Qcm9ncmVzczsKKworICAgICAgICBpZiAoIW1faW5Qcm9ncmVzcykgeworICAgICAgICAgICAg
Ly8gTWFrZSBzdXJlIHRoZXJlIGlzIGFuIGV4cGxpY2l0IHJvbGxiYWNrIGFmdGVyIGJlZ2luIHRv
IHVwZGF0ZSBkYXRhYmFzZSBzdGF0ZS4KKyAgICAgICAgICAgIG1fZGIuZXhlY3V0ZUNvbW1hbmQo
IlJPTExCQUNLIl9zKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICBpZiAoIW1f
aW5Qcm9ncmVzcykKICAgICAgICAgICAgIFNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6ZGVjcmVtZW50
VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKICNlbmRpZgorICAgICAgICB9CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9X
ZWJJREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIv
V2ViSURCU2VydmVyLmNwcAppbmRleCBmMDY4YjI2N2ExNTE2NjhjNjYwMWMwYWM0ZTRlN2U3YmI2
ZGRmZGQxLi42YjI1MGJhN2IzNDZiZDE5YTZhZjg3NGY0OWI3YmMwMzgwZTc4ZDg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNl
cnZlci5jcHAKQEAgLTUzLDcgKzUzLDYgQEAgV2ViSURCU2VydmVyOjpXZWJJREJTZXJ2ZXIoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgV2UKIFdlYklE
QlNlcnZlcjo6fldlYklEQlNlcnZlcigpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKLSAgICBBU1NFUlQoIW1faXNTdXNwZW5kZWQpOwogfQogCiB2b2lkIFdlYklEQlNlcnZlcjo6
Z2V0T3JpZ2lucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhPiYmKT4mJiBjYWxsYmFjaykKQEAgLTExNSw0NyArMTE0LDM5IEBAIHZvaWQg
V2ViSURCU2VydmVyOjpyZW5hbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiBvbGRPcmlnaW4sIGNvCiAgICAgfSk7CiB9CiAKLWJvb2wgV2ViSURCU2VydmVyOjpzdXNw
ZW5kKFN1c3BlbnNpb25Db25kaXRpb24gc3VzcGVuc2lvbkNvbmRpdGlvbikgV1RGX0lHTk9SRVNf
VEhSRUFEX1NBRkVUWV9BTkFMWVNJUwordm9pZCBXZWJJREJTZXJ2ZXI6OnN1c3BlbmQoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBpZiAobV9pc1N1c3BlbmRlZCkKLSAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgTG9ja2VyIHN1c3BlbnNpb25Mb2NrZXIgeyBtX3N1c3BlbnNpb25Mb2Nr
IH07CisgICAgbV9zaG91bGRTdXNwZW5kID0gdHJ1ZTsKIAotICAgIFJFTEVBU0VfTE9HKFByb2Nl
c3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJJREJTZXJ2ZXI6OnN1c3BlbmQoKSwgc3VzcGVuc2lvbkNv
bmRpdGlvbj0lcyIsIHRoaXMsIHN1c3BlbnNpb25Db25kaXRpb24gPT0gU3VzcGVuc2lvbkNvbmRp
dGlvbjo6QWx3YXlzID8gIkFsd2F5cyIgOiAiSWZJZGxlIik7Ci0KLSAgICBtX2lzU3VzcGVuZGVk
ID0gdHJ1ZTsKLSAgICBtX3NlcnZlckxvY2subG9jaygpOwotCi0gICAgaWYgKCFtX3NlcnZlcikK
LSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3VzcGVuc2lvbklkZW50aWZpZXIgPSArK21fc3Vz
cGVuc2lvbklkZW50aWZpZXIsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildICgpIG11dGFibGUgeworICAgICAgICBMb2NrZXIgc3VzcGVuc2lvbkxvY2tlciB7
IG1fc3VzcGVuc2lvbkxvY2sgfTsKKyAgICAgICAgaWYgKCFtX3Nob3VsZFN1c3BlbmQgfHwgc3Vz
cGVuc2lvbklkZW50aWZpZXIgIT0gbV9zdXNwZW5zaW9uSWRlbnRpZmllcikgeworICAgICAgICAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAgaWYgKHN1c3BlbnNpb25Db25k
aXRpb24gPT0gU3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlzKSB7Ci0gICAgICAgIG1fc2VydmVy
LT5zdG9wRGF0YWJhc2VBY3Rpdml0aWVzT25NYWluVGhyZWFkKCk7Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KKyAgICAgICAgeworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc2Vy
dmVyTG9jayB9OworICAgICAgICAgICAgbV9zZXJ2ZXItPnN0b3BEYXRhYmFzZUFjdGl2aXRpZXNJ
Zk5lZWRlZCgpOworICAgICAgICB9CiAKLSAgICAvLyBTdXNwZW5kIHRvIGF2b2lkIHN0YXJ0aW5n
IG5ldyB0cmFuc2FjdGlvbnMgaWYgdGhlcmUgaXMgbm8gb25nb2luZyB0cmFuc2FjdGlvbi4KLSAg
ICBpZiAoIW1fc2VydmVyLT5oYXNEYXRhYmFzZUFjdGl2aXRpZXNPbk1haW5UaHJlYWQoKSkKLSAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSAgICAvLyBSZXN1bWUgdG8gYWxsb3cgb25nb2lu
ZyB0cmFuc2FjdGlvbnMgdG8gYmUgZmluaXNoZWQuCi0gICAgbV9zZXJ2ZXJMb2NrLnVubG9jaygp
OwotICAgIG1faXNTdXNwZW5kZWQgPSBmYWxzZTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IHdoaWxlIChtX3Nob3VsZFN1c3BlbmQpCisgICAgICAgICAgICBtX3N1c3BlbnNpb25Db25kaXRp
b24ud2FpdChtX3N1c3BlbnNpb25Mb2NrKTsKKyAgICB9KTsKIH0KIAotdm9pZCBXZWJJREJTZXJ2
ZXI6OnJlc3VtZSgpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKK3ZvaWQgV2Vi
SURCU2VydmVyOjpyZXN1bWUoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAK
LSAgICBpZiAoIW1faXNTdXNwZW5kZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJFTEVBU0Vf
TE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJJREJTZXJ2ZXI6OnJlc3VtZSgpIiwgdGhp
cyk7Ci0KLSAgICBtX2lzU3VzcGVuZGVkID0gZmFsc2U7Ci0gICAgbV9zZXJ2ZXJMb2NrLnVubG9j
aygpOworICAgIExvY2tlciBzdXNwZW5zaW9uTG9ja2VyIHsgbV9zdXNwZW5zaW9uTG9jayB9Owor
ICAgIG1fc2hvdWxkU3VzcGVuZCA9IGZhbHNlOworICAgIG1fc3VzcGVuc2lvbkNvbmRpdGlvbi5u
b3RpZnlPbmUoKTsKIH0KIAogdm9pZCBXZWJJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZShjb25zdCBX
ZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5oCmluZGV4IDYyZjBj
YWMzNmRjNjhlNWFlZTFjMWJiY2FkMzY4MzlkNzMxODA3MTguLjhlZDdmNGI2Njc1MTE5NTY3NDNm
NDFiOTdkMDE2YWFiNmY0ZjcxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5oCkBAIC01Myw3ICs1Myw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlbmFtZU9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogCiAgICAgZW51bSBjbGFzcyBTdXNwZW5zaW9uQ29uZGl0aW9uIDogYm9v
bCB7IEFsd2F5cywgSWZJZGxlIH07Ci0gICAgYm9vbCBzdXNwZW5kKFN1c3BlbnNpb25Db25kaXRp
b24gPSBTdXNwZW5zaW9uQ29uZGl0aW9uOjpBbHdheXMpOworICAgIHZvaWQgc3VzcGVuZChDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzdW1lKCk7CiAKICAgICAvLyBN
ZXNzYWdlIGhhbmRsZXJzLgpAQCAtOTgsMTAgKzk4LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBw
b3N0VGFza1JlcGx5KEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKICAgICBSZWY8V29ya1F1ZXVlPiBt
X3F1ZXVlOwotCiAgICAgTG9jayBtX3NlcnZlckxvY2s7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyPiBtX3NlcnZlciBXVEZfR1VBUkRFRF9CWV9MT0NL
KG1fc2VydmVyTG9jayk7Ci0gICAgYm9vbCBtX2lzU3VzcGVuZGVkIHsgZmFsc2UgfTsKKworICAg
IExvY2sgbV9zdXNwZW5zaW9uTG9jazsKKyAgICBDb25kaXRpb24gbV9zdXNwZW5zaW9uQ29uZGl0
aW9uOworICAgIGJvb2wgbV9zaG91bGRTdXNwZW5kIFdURl9HVUFSREVEX0JZX0xPQ0sobV9zdXNw
ZW5zaW9uTG9jaykgeyBmYWxzZSB9OworICAgIHVpbnQ2NF90IG1fc3VzcGVuc2lvbklkZW50aWZp
ZXIgV1RGX0dVQVJERURfQllfTE9DSyhtX3N1c3BlbnNpb25Mb2NrKSB7IDAgfTsKIAogICAgIEhh
c2hNYXA8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgc3RkOjp1bmlxdWVfcHRyPFdlYklEQkNv
bm5lY3Rpb25Ub0NsaWVudD4+IG1fY29ubmVjdGlvbk1hcDsKICAgICBXZWFrSGFzaFNldDxJUEM6
OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbnM7IC8vIE9ubHkgdXNlZCBvbiB0aGUgbWFpbiB0aHJl
YWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
CmluZGV4IDQzNjA1MDJkMTA2MTc5ZjY3Mjg5NTljY2UzMmNmNjA3NmQxMTkwNzMuLmI0Nzg0YTM2
OGQwMjc2YzMxOGQ0OTE3NzVjZGE3MDdhOThlZTU0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5j
bHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQXV4aWxpYXJ5UHJvY2Vz
c01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIkRhdGFi
YXNlQXNzZXJ0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkRvd25sb2FkLmgiCiAjaW5jbHVkZSAi
RG93bmxvYWRQcm94eU1lc3NhZ2VzLmgiCiAjaWYgRU5BQkxFKExFR0FDWV9DVVNUT01fUFJPVE9D
T0xfTUFOQUdFUikKQEAgLTE1OCw5ICsxNTksOSBAQCBOZXR3b3JrUHJvY2Vzczo6TmV0d29ya1By
b2Nlc3MoQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYmIHBhcmFtZQog
I2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgLCBtX25ldHdvcmtDb250ZW50UnVs
ZUxpc3RNYW5hZ2VyKCp0aGlzKQogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAg
ICAsIG1fd2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyKFt0aGlzXShib29sIGlzSG9sZGluZ0xvY2tl
ZEZpbGVzKSB7IHNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGlzSG9sZGluZ0xvY2tlZEZpbGVzKTsg
fSkKLSNlbmRpZgorICAgICwgbV9kYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIoIk5ldHdvcmsgUHJv
Y2VzcyBpcyBob2xkaW5nIGxvY2tlZCBmaWxlcyIsIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKV0oKSB7CisgICAgICAgIHJldHVybiB3ZWFrVGhpcyA/IHdlYWtUaGlzLT5tX3Nob3VsZFN1
c3BlbmQgOiBmYWxzZTsKKyAgICB9KQogICAgICwgbV9tZXNzYWdlUG9ydENoYW5uZWxSZWdpc3Ry
eShjcmVhdGVNZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeSgqdGhpcykpCiB7CiAgICAgTmV0d29y
a1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluaXRpYWxpemUoKTsKQEAgLTIyMTEsMzEgKzIy
MTIsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5
Rm9yVGVzdGluZ1N5bmMoQ29tcGxldGlvbkhhbmRsZQogICAgIHByZXBhcmVUb1N1c3BlbmQodHJ1
ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNz
OjpzdXNwZW5kSURCU2VydmVycyhib29sIGlzU3VzcGVuc2lvbkltbWluZW50KQotewotICAgIG1f
c2hvdWxkU3VzcGVuZElEQlNlcnZlcnMgPSB0cnVlOwotICAgICsrbV9zdXNwZW5zaW9uSWRlbnRp
ZmllcjsKLQotICAgIGJvb2wgYWxsU3VzcGVuZGVkID0gdHJ1ZTsKLSAgICBhdXRvIGNvbmRpdGlv
biA9IGlzU3VzcGVuc2lvbkltbWluZW50ID8gV2ViSURCU2VydmVyOjpTdXNwZW5zaW9uQ29uZGl0
aW9uOjpBbHdheXMgOiBXZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25Db25kaXRpb246OklmSWRsZTsK
LSAgICBmb3IgKGF1dG8mIHNlcnZlciA6IG1fd2ViSURCU2VydmVycy52YWx1ZXMoKSkKLSAgICAg
ICAgYWxsU3VzcGVuZGVkICY9IHNlcnZlci0+c3VzcGVuZChjb25kaXRpb24pOwotCi0gICAgaWYg
KGFsbFN1c3BlbmRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoQWZ0ZXIoNV9zLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHN1
c3BlbnNpb25JZGVudGlmaWVyID0gbV9zdXNwZW5zaW9uSWRlbnRpZmllcl0gewotICAgICAgICBp
ZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghbV9zaG91
bGRTdXNwZW5kSURCU2VydmVycyB8fCBzdXNwZW5zaW9uSWRlbnRpZmllciAhPSBtX3N1c3BlbnNp
b25JZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGZvciAoYXV0byYg
c2VydmVyIDogbV93ZWJJREJTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICAgICAgc2VydmVyLT5z
dXNwZW5kKFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlzKTsKLSAgICB9
KTsKLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZChib29sIGlzU3Vz
cGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdv
cmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCksIGlzU3VzcGVuc2lvbkltbWluZW50PSVkIiwg
dGhpcywgaXNTdXNwZW5zaW9uSW1taW5lbnQpOwpAQCAtMjI0NiwxNSArMjIyMiwyMiBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5l
bnQsIENvbXBsZXRpb25IYW5kbAogCiAgICAgbG93TWVtb3J5SGFuZGxlcihDcml0aWNhbDo6WWVz
KTsKIAotICAgIFJlZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9
IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBSRUxFQVNFX0xP
RyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3Bl
bmQoKSBQcm9jZXNzIGlzIHJlYWR5IHRvIHN1c3BlbmQiLCB0aGlzKTsKLSAgICAgICAgVU5VU0VE
X1ZBUklBQkxFKHRoaXMpOworICAgIG1fc2hvdWxkU3VzcGVuZCA9IHRydWU7CisgICAgKyttX3N1
c3BlbnNpb25JZGVudGlmaWVyOworCisgICAgUmVmUHRyPENhbGxiYWNrQWdncmVnYXRvcj4gY2Fs
bGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoW3RoaXMsIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBzdXNwZW5zaW9uSWRlbnRpZmllciA9IG1fc3VzcGVu
c2lvbklkZW50aWZpZXIsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgfSk7CisKKyAgICAgICAgaWYgKCF3ZWFr
VGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIW1fc2hvdWxkU3VzcGVu
ZCB8fCBzdXNwZW5zaW9uSWRlbnRpZmllciAhPSBtX3N1c3BlbnNpb25JZGVudGlmaWVyKQorICAg
ICAgICAgICAgcmV0dXJuOwogICAgIAotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJ
Q1MpCi0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdXNwZW5kKFtjYWxsYmFj
a0FnZ3JlZ2F0b3JdIHsgfSk7Ci0jZW5kaWYKKyAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1
c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCkgUHJvY2Vz
cyBpcyByZWFkeSB0byBzdXNwZW5kIiwgdGhpcyk7CisgICAgICAgIG1fZGF0YWJhc2VBc3NlcnRp
b25NYW5hZ2VyLnN1c3BlbmQoKTsKKyAgICB9KTsKIAogICAgIGZvckVhY2hOZXR3b3JrU2Vzc2lv
bihbJl0gKGF1dG8mIG5ldHdvcmtTZXNzaW9uKSB7CiAgICAgICAgIHBsYXRmb3JtRmx1c2hDb29r
aWVzKG5ldHdvcmtTZXNzaW9uLnNlc3Npb25JRCgpLCBbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0p
OwpAQCAtMjI3MCw3ICsyMjUzLDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1
c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRsCiAgICAgfQog
I2VuZGlmCiAKLSAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5zdXNwZW5kKFtjYWxsYmFja0FnZ3Jl
Z2F0b3JdIHsgfSk7CisgICAgaWYgKGlzU3VzcGVuc2lvbkltbWluZW50KQorICAgICAgICBtX2Rh
dGFiYXNlQXNzZXJ0aW9uTWFuYWdlci5zdXNwZW5kKCk7CisgICAgZWxzZSB7CisgICAgICAgIG1f
c3RvcmFnZU1hbmFnZXJTZXQtPnN1c3BlbmQoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyAg
ICAgICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX3dlYklEQlNlcnZlcnMudmFsdWVzKCkpCisgICAg
ICAgICAgICBzZXJ2ZXItPnN1c3BlbmQoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgICAgICBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OnN1c3BlbmQoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyNlbmRp
ZgorICAgIH0KIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6YXBwbGljYXRpb25EaWRFbnRlckJh
Y2tncm91bmQoKQpAQCAtMjI5MywyMiArMjI4NSwyMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpy
ZXN1bWUoKQogewogICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fd2ViUHJvY2Vzc0Nvbm5l
Y3Rpb25zLnZhbHVlcygpKQogICAgICAgICBjb25uZWN0aW9uLT5lbmRTdXNwZW5zaW9uKCk7Ci0K
LSNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6cmVzdW1lKCk7Ci0jZW5kaWYKICAgICAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCiAgICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX3N3U2VydmVycy52YWx1ZXMo
KSkKICAgICAgICAgc2VydmVyLT5lbmRTdXNwZW5zaW9uKCk7CiAjZW5kaWYKLSNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQorCisgICAgbV9zaG91bGRTdXNwZW5kID0gZmFsc2U7CisgICAgbV9kYXRh
YmFzZUFzc2VydGlvbk1hbmFnZXIucmVzdW1lKCk7CisgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+
cmVzdW1lKCk7CiAgICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX3dlYklEQlNlcnZlcnMudmFsdWVz
KCkpCiAgICAgICAgIHNlcnZlci0+cmVzdW1lKCk7Ci0gICAgbV9zaG91bGRTdXNwZW5kSURCU2Vy
dmVycyA9IGZhbHNlOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCisgICAg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXN1bWUoKTsKICNlbmRpZgotCi0gICAg
bV9zdG9yYWdlTWFuYWdlclNldC0+cmVzdW1lKCk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCkBAIC0yMzcwLDggKzIzNjAsOCBA
QCBSZWY8V2ViSURCU2VydmVyPiBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlV2ViSURCU2VydmVyKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICB9OwogCiAgICAgYXV0byByZXN1bHQgPSBXZWJJ
REJTZXJ2ZXI6OmNyZWF0ZShzZXNzaW9uSUQsIHBhdGgsIFdURk1vdmUoc3BhY2VSZXF1ZXN0ZXIp
KTsKLSAgICBpZiAobV9zaG91bGRTdXNwZW5kSURCU2VydmVycykKLSAgICAgICAgcmVzdWx0LT5z
dXNwZW5kKFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlzKTsKKyAgICBp
ZiAobV9zaG91bGRTdXNwZW5kKQorICAgICAgICByZXN1bHQtPnN1c3BlbmQoW10geyB9KTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmgKaW5kZXggZjA2ZGFkNDcyOWJkZmJlYTc1M2ZmOGM5M2FhM2U3NWE5YWQ4
OGIwMy4uYTE5ZmI5Yzc1ODY5ZjYwZDdhMGU0NzBjYTQ4NmMwNGIwM2RlZTkwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjksNiArMjks
NyBAQAogI2luY2x1ZGUgIkF1eGlsaWFyeVByb2Nlc3MuaCIKICNpbmNsdWRlICJDYWNoZU1vZGVs
LmgiCiAjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQXNzZXJ0aW9u
TWFuYWdlci5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEb3dubG9hZE1h
bmFnZXIuaCIKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCIKQEAgLTYx
LDEwICs2Miw2IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotI2luY2x1ZGUgIldlYlNRTGl0
ZURhdGFiYXNlVHJhY2tlci5oIgotI2VuZGlmCi0KICNpZiBQTEFURk9STShDT0NPQSkKICNpbmNs
dWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KIHR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tp
ZVN0b3JhZ2UqICBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwpAQCAtNDg2LDcgKzQ4Myw2IEBAIHBy
aXZhdGU6CiAgICAgUmVmPFdlYklEQlNlcnZlcj4gY3JlYXRlV2ViSURCU2VydmVyKFBBTDo6U2Vz
c2lvbklEKTsKICAgICB2b2lkIHNldFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VySURCUm9vdFBh
dGgoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgaWRiUm9vdFBhdGgpOwogICAgIHZvaWQg
cmVtb3ZlV2ViSURCU2VydmVySWZQb3NzaWJsZShQQUw6OlNlc3Npb25JRCk7Ci0gICAgdm9pZCBz
dXNwZW5kSURCU2VydmVycyhib29sIGlzU3VzcGVuc2lvbkltbWluZW50KTsKIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGRpZENyZWF0ZVdvcmtlckNvbnRleHRQcm9jZXNz
Q29ubmVjdGlvbihjb25zdCBJUEM6OkF0dGFjaG1lbnQmKTsKQEAgLTUwMCwxMCArNDk2LDYgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKFBBTDo6U2Vzc2lvbklE
LCBib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3RyaW5nJiYgc2VydmljZVdv
cmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
Jik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCBzZXRJc0hv
bGRpbmdMb2NrZWRGaWxlcyhib29sKTsKLSNlbmRpZgotCiAgICAgdm9pZCBmaXJlUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRUaW1lckltbWVkaWF0ZWx5KFBBTDo6U2Vzc2lvbklEKTsKIAogICAgIGNs
YXNzIFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyIHsKQEAgLTU3NywxNSArNTY5LDEyIEBAIHBy
aXZhdGU6CiAgICAgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIgbV9uZXR3b3JrQ29udGVu
dFJ1bGVMaXN0TWFuYWdlcjsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAg
ICBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIgbV93ZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXI7Ci0g
ICAgUmVmUHRyPFByb2Nlc3NBc3NlcnRpb24+IG1faG9sZGluZ0xvY2tlZEZpbGVBc3NlcnRpb247
Ci0jZW5kaWYKKyAgICBEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIgbV9kYXRhYmFzZUFzc2VydGlv
bk1hbmFnZXI7CisgICAgYm9vbCBtX3Nob3VsZFN1c3BlbmQgeyBmYWxzZSB9OworICAgIHVpbnQ2
NF90IG1fc3VzcGVuc2lvbklkZW50aWZpZXIgeyAwIH07CiAKICAgICBIYXNoTWFwPFBBTDo6U2Vz
c2lvbklELCBTdHJpbmc+IG1faWRiRGF0YWJhc2VQYXRoczsKICAgICBIYXNoTWFwPFBBTDo6U2Vz
c2lvbklELCBSZWZQdHI8V2ViSURCU2VydmVyPj4gbV93ZWJJREJTZXJ2ZXJzOwotICAgIGJvb2wg
bV9zaG91bGRTdXNwZW5kSURCU2VydmVycyB7IGZhbHNlIH07Ci0gICAgdWludDY0X3QgbV9zdXNw
ZW5zaW9uSWRlbnRpZmllciB7IDAgfTsKICAgICAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIp
CiAgICAgc3RydWN0IFNlcnZpY2VXb3JrZXJJbmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0KaW5kZXggYTFlMDkxNDJi
OGIzYTM0YTI3MGYzYmY1MGY5NjBhMTZkZTcxNTc5Yy4uNWQwMDEwZTAyYjI0MDFlODRmNDU1NDc4
OTJhMTY5MzA0NDkzNTMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0KQEAgLTEwMCwzMiArMTAwLDYgQEAgdm9pZCBO
ZXR3b3JrUHJvY2Vzczo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlkZShDb21w
bGV0aW9uSGFuZGxlcjx2b2kKIAogI2VuZGlmIC8vICFQTEFURk9STShNQUNDQVRBTFlTVCkKIAot
dm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBpc0hvbGRp
bmdMb2NrZWRGaWxlcykKLXsKLSAgICBpZiAoIWlzSG9sZGluZ0xvY2tlZEZpbGVzKSB7Ci0gICAg
ICAgIG1faG9sZGluZ0xvY2tlZEZpbGVBc3NlcnRpb24gPSBudWxscHRyOwotICAgICAgICByZXR1
cm47Ci0gICAgfQotCi0gICAgaWYgKG1faG9sZGluZ0xvY2tlZEZpbGVBc3NlcnRpb24gJiYgbV9o
b2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbi0+aXNWYWxpZCgpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICAvLyBXZSBzeW5jaHJvbm91c2x5IHRha2UgYSBwcm9jZXNzIGFzc2VydGlvbiB3aGVuIGJl
Z2lubmluZyBhIFNRTGl0ZSB0cmFuc2FjdGlvbiBzbyB0aGF0IHdlIGRvbid0IGdldCBzdXNwZW5k
ZWQKLSAgICAvLyB3aGlsZSBob2xkaW5nIGEgbG9ja2VkIGZpbGUuIFdlIHdvdWxkIGdldCBraWxs
ZWQgaWYgc3VzcGVuZGVkIHdoaWxlIGhvbGRpbmcgbG9ja2VkIGZpbGVzLgotICAgIG1faG9sZGlu
Z0xvY2tlZEZpbGVBc3NlcnRpb24gPSBQcm9jZXNzQXNzZXJ0aW9uOjpjcmVhdGUoZ2V0Q3VycmVu
dFByb2Nlc3NJRCgpLCAiTmV0d29yayBQcm9jZXNzIGlzIGhvbGRpbmcgbG9ja2VkIGZpbGVzIl9z
LCBQcm9jZXNzQXNzZXJ0aW9uVHlwZTo6RmluaXNoVGFza0ludGVycnVwdGFibGUsIFByb2Nlc3NB
c3NlcnRpb246Ok1vZGU6OlN5bmMpOwotICAgIG1faG9sZGluZ0xvY2tlZEZpbGVBc3NlcnRpb24t
PnNldFByZXBhcmVGb3JJbnZhbGlkYXRpb25IYW5kbGVyKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUKGlzTWFpblJ1bkxvb3Ao
KSk7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgaWYgKCFtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJzKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIGZvciAoYXV0byYgc2VydmVyIDogbV93ZWJJREJTZXJ2ZXJzLnZhbHVlcygpKQot
ICAgICAgICAgICAgc2VydmVyLT5zdXNwZW5kKCk7Ci0gICAgfSk7Ci19Ci0KIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJl
YWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVk
aWFGb3JtYXRSZWFkZXIuY3BwCmluZGV4IGViZjcyMTI0MjNlOWNkNWUxN2E0Mjc1YjU5YWFiOGQx
OThjNjk1YjguLjAzZTE5OWUxMWJmMmEwODFkOTA0YzI2YWY5ZTg2Yzg4OTZiZTc0YzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZv
cm1hdFJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0
UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlk
ZW9UcmFja1ByaXZhdGUuaD4KICNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFW
Rm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgogI2lu
Y2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dAppbmRleCAyOWY3ZmUwN2RiNjZiZGUzMGE3MTViNTlmNzFlNGYx
M2JhNTUzMzgzLi5iMTk4NTBiYTBjOTE5MzkxOTBkNzdiODhjZjc0MzQyMTJkMzExODc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktp
dC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0xNDMsNiArMTQzLDcgQEAgU2hhcmVkL0FwcGxlUGF5L21h
Yy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQogCiBTaGFyZWQvQVBJV2ViQXJjaGl2
ZS5tbQogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQorU2hhcmVkL0RhdGFiYXNlQXNz
ZXJ0aW9uTWFuYWdlci5jcHAKIFNoYXJlZC9Eb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tCiBTaGFy
ZWQvRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5jcHAKIFNoYXJlZC9WaXNpYmxlQ29udGVudFJl
Y3RVcGRhdGVJbmZvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCBkODllYmEyYjEzNDcxYzRhM2NlOTc5ODJmZmJmN2E3
ZWJiZmZjOWNlLi41OGZkYzFhNDFmYzgyMGE1Y2E2NTQxM2MwNTJjNmZlZjBmOTk2M2ZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5t
bQpAQCAtNjA3LDcgKzYwNyw5IEBAIENHUmVjdCBXZWJQYWdlUHJveHk6OmFwcEhpZ2hsaWdodHNP
dmVybGF5UmVjdCgpCiB7CiAgICAgaWYgKCFtX2FwcEhpZ2hsaWdodHNPYnNlcnZlcikKICAgICAg
ICAgc2V0VXBIaWdobGlnaHRzT2JzZXJ2ZXIoKTsKLSAgICByZXR1cm4gW21fYXBwSGlnaGxpZ2h0
c09ic2VydmVyIHZpc2libGVGcmFtZV07CisgICAgLy8gcmV0dXJuIFttX2FwcEhpZ2hsaWdodHNP
YnNlcnZlciB2aXNpYmxlRnJhbWVdOworICAgIC8vIHNpaHVpbCAtIGZpeAorICAgIHJldHVybiBD
R1JlY3QgeyB9OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXBIaWdobGlnaHRzT2JzZXJ2
ZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggMjI0NjA2Y2M1ZTE1ZDE4MDhmNTU5MzIzNjE1OTkzNGQ5NzFiMmY5Yi4uN2FlNDQ1ZGM3
MTJjNjE3YmQ0ZGRjOTU1MzVhZmQxMTViYzY3ODFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zLDcgKzMsNyBAQAogCWFyY2hpdmVW
ZXJzaW9uID0gMTsKIAljbGFzc2VzID0gewogCX07Ci0Jb2JqZWN0VmVyc2lvbiA9IDUyOworCW9i
amVjdFZlcnNpb24gPSA1NDsKIAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhBZ2dyZWdhdGVU
YXJnZXQgc2VjdGlvbiAqLwpAQCAtMTUxMyw2ICsxNTEzLDcgQEAKIAkJOTNENkI3QjkyNTUzNEEx
NzAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0I3MjU1MzRB
MTEwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNFNkE0RUUx
QkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTZBNEVEMUJDNUREMzkwMEY4QTBFNyAvKiBf
V0tIaXRUZXN0UmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTNGNTQ5QjQxRTMxNzRCNzAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1
cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
M0Y1NDlCMzFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTkzRjlCNjE0MjZB
NjI3NjQwMDQxRjk2RiAvKiBEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjlCNjEzMjZBNjI3NEMwMDQxRjk2
RiAvKiBEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIuaCAqLzsgfTsKIAkJOTUwRjI4ODAyNTI0MTRF
QTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwRjI4N0UyNTI0MTRFOTAwQjc0RjFDIC8qIFdL
TW91c2VEZXZpY2VPYnNlcnZlci5oICovOyB9OwogCQk5NTkzNjc1RjI1MkU1RTMxMDBEM0YwQTAg
LyogV0tTdHlsdXNEZXZpY2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTU5MzY3NUQyNTJFNUUzMDAwRDNGMEEwIC8qIFdLU3R5bHVzRGV2
aWNlT2JzZXJ2ZXIuaCAqLzsgfTsKIAkJOTVDOTQzOTEyNTIzQzBEMDAwNTRGM0Q1IC8qIEJhc2VC
b2FyZFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTVDOTQzOTAyNTIzQzBEMDAwNTRGM0Q1IC8qIEJhc2VCb2FyZFNQSS5oICovOyB9OwpAQCAtNDk0
Nyw2ICs0OTQ4LDggQEAKIAkJOTNFNkE0RUQxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RS
ZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSGl0VGVzdFJlc3Vs
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y1NDlCMzFFMzE3NEI3MDAwRTcy
MzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTNGNTQ5QjUxRTMxNzREQTAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0
aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tTbmFwc2hv
dENvbmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRjlCNjEy
MjZBNjI3NEMwMDQxRjk2RiAvKiBEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTNGOUI2MTMyNkE2Mjc0QzAwNDFGOTZGIC8qIERhdGFiYXNlQXNzZXJ0
aW9uTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTUwRjI4N0UyNTI0MTRFOTAwQjc0RjFDIC8q
IFdLTW91c2VEZXZpY2VPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBXS01vdXNlRGV2aWNlT2JzZXJ2ZXIuaDsgcGF0aCA9IGlvcy9XS01vdXNlRGV2aWNlT2JzZXJ2
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTUwRjI4N0YyNTI0MTRFQTAwQjc0
RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IFdLTW91c2VEZXZpY2VPYnNlcnZlci5tbTsgcGF0aCA9IGlvcy9XS01v
dXNlRGV2aWNlT2JzZXJ2ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1OTM2
NzVEMjUyRTVFMzAwMEQzRjBBMCAvKiBXS1N0eWx1c0RldmljZU9ic2VydmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLU3R5bHVzRGV2aWNlT2JzZXJ2ZXIuaDsgcGF0aCA9
IGlvcy9XS1N0eWx1c0RldmljZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC01OTk4LDcgKzYwMDEsNiBAQAogCQlGNDBCQkI0MDI1N0ZGNDZFMDA2NzQ2M0EgLyogR1BV
UHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUHJvY2Vz
c1dha2V1cE1lc3NhZ2VBcmd1bWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjQwRDFCNjgyMjBCREMwRjAwQjQ5QTAxIC8qIFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaDsgcGF0aCA9IGlvcy9XZWJB
dXRvY29ycmVjdGlvbkNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQx
MDU2NjEyMTMwNjk5QTAwOTIyODFEIC8qIEFQSUF0dGFjaG1lbnRDb2NvYS5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEFQSUF0dGFjaG1lbnRDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKLQkJRjQxNENFMkEyNjlEREVEMTAwQkQyMTZBIC8qIEdQVVByb2Nlc3NDb2NvYS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdQVVByb2Nlc3NDb2NvYS5t
bTsgcGF0aCA9IGNvY29hL0dQVVByb2Nlc3NDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjQxNENFMkMyNjlERTZFQTAwQkQyMTZBIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tl
bmRTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kU3RhdGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQyRDYzM0YyMkEwRUZEMzAwRDJGQjNBIC8q
IFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBXZWJBdXRvY29ycmVjdGlvbkRhdGEuaDsgcGF0aCA9IGlvcy9XZWJBdXRvY29ycmVjdGlvbkRh
dGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQyRDYzNDAyMkEwRUZEMzAwRDJG
QjNBIC8qIFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbTsgcGF0aCA9IGlvcy9XZWJB
dXRvY29ycmVjdGlvbkRhdGEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02Nzgy
LDYgKzY3ODQsOCBAQAogCQkJCTUxMDZEN0JGMThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVu
dUNvbnRleHREYXRhLmNwcCAqLywKIAkJCQk1MTA2RDdDMDE4QkRCRTczMDAwQUIxNjYgLyogQ29u
dGV4dE1lbnVDb250ZXh0RGF0YS5oICovLAogCQkJCTk5RjY0MkQyMUZBQkUzNzgwMDk2MjFFOSAv
KiBDb29yZGluYXRlU3lzdGVtLmggKi8sCisJCQkJOTNGOUI2MTIyNkE2Mjc0QzAwNDFGOTZGIC8q
IERhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlci5jcHAgKi8sCisJCQkJOTNGOUI2MTMyNkE2Mjc0QzAw
NDFGOTZGIC8qIERhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlci5oICovLAogCQkJCTk5MDM2QUU4MjNB
OTcwODcwMDAwQjA2QSAvKiBEZWJ1Z2dhYmxlSW5mb0RhdGEuY3BwICovLAogCQkJCTk5MDM2QUU3
MjNBOTcwODcwMDAwQjA2QSAvKiBEZWJ1Z2dhYmxlSW5mb0RhdGEuaCAqLywKIAkJCQkwRjE4OUNB
QjI0NzQ5RjJGMDBFNThEODEgLyogRGlzcGxheUxpbmtPYnNlcnZlcklELmggKi8sCkBAIC0xMTcx
MiwxNCArMTE3MTYsNiBAQAogCQkJcGF0aCA9IGNhY2hlOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKIAkJfTsKLQkJRjQxNENFMjcyNjlEREU4MDAwQkQyMTZBIC8qIGNvY29hICovID0gewot
CQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlGNDE0Q0UyQTI2OURERUQx
MDBCRDIxNkEgLyogR1BVUHJvY2Vzc0NvY29hLm1tICovLAotCQkJKTsKLQkJCW5hbWUgPSBjb2Nv
YTsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCUY2Mzg5NTVBMTMzQkY1N0Qw
MDg5NDFENSAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KApAQCAtMTIwMjMsNiArMTIwMTksNyBAQAogCQkJCTU3NTk3RUJEMjE4MTg0OTAwMDM3RjkyNCAv
KiBDdGFwQXV0aGVudGljYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc1OTdFQjkyMTgxMUQ5
QTAwMzdGOTI0IC8qIEN0YXBIaWREcml2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MERBQUNB
MjMwMzg1RkQwMEU4RkMwNCAvKiBDdGFwTmZjRHJpdmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5
M0Y5QjYxNDI2QTYyNzY0MDA0MUY5NkYgLyogRGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDNTVGOTE3MTFDNTk2NzZFMDAyOUU5MkQgLyogRGF0YURldGVjdGlv
blJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNzUzODAxODNCRTUwRjAwNzJDQjE1IC8q
IERhdGFSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5MDM2QUU5MjNBOTcwODcwMDAw
QjA2QSAvKiBEZWJ1Z2dhYmxlSW5mb0RhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKaW5kZXggZWVhMDAwNDRiYWZi
ZmJmMzVjZWY4ODY2ODlmNDA5NTRhZDljNGYyNC4uYzg1ODllYTY0YTZiNGZmYTk4ZTY3NDIwZWFm
ZTk1ZjIwZmIxNDkwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0
b3JhZ2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFn
ZVRyYWNrZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiU3RvcmFnZVRyYWNrZXJD
bGllbnQuaCIKICNpbmNsdWRlICJXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U1FMaXRlRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW5EYXRhLmg+CkBAIC0zODUsMTMgKzM4Niw2IEBAIHZvaWQgU3RvcmFnZVRy
YWNrZXI6OmRlbGV0ZUFsbE9yaWdpbnMoKQogICAgIH0pOwogfQogCi0jaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLXN0YXRpYyB2b2lkIHRydW5jYXRlRGF0YWJhc2VGaWxlKFNRTGl0ZURhdGFiYXNl
JiBkYXRhYmFzZSkKLXsKLSAgICBzcWxpdGUzX2ZpbGVfY29udHJvbChkYXRhYmFzZS5zcWxpdGUz
SGFuZGxlKCksIDAsIFNRTElURV9UUlVOQ0FURV9EQVRBQkFTRSwgMCk7Ci19Ci0jZW5kaWYKLQog
dm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdpbnMoKQogewogICAgIEFTU0VS
VCghaXNNYWluVGhyZWFkKCkpOwpAQCAtNDI5LDcgKzQyMyw3IEBAIHZvaWQgU3RvcmFnZVRyYWNr
ZXI6OnN5bmNEZWxldGVBbGxPcmlnaW5zKCkKIAogICAgIGlmIChtX2RhdGFiYXNlLmlzT3Blbigp
KSB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgdHJ1bmNhdGVEYXRhYmFzZUZp
bGUobV9kYXRhYmFzZSk7CisgICAgICAgIFNRTGl0ZUZpbGVTeXN0ZW06OnRydW5jYXRlRGF0YWJh
c2VGaWxlKG1fZGF0YWJhc2Uuc3FsaXRlM0hhbmRsZSgpKTsKICNlbmRpZgogICAgICAgICBtX2Rh
dGFiYXNlLmNsb3NlKCk7CiAgICAgfQpAQCAtNTQzLDcgKzUzNyw3IEBAIHZvaWQgU3RvcmFnZVRy
YWNrZXI6OnN5bmNEZWxldGVPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQog
CiAgICAgaWYgKHNob3VsZERlbGV0ZVRyYWNrZXJGaWxlcykgewogI2lmIFBMQVRGT1JNKElPU19G
QU1JTFkpCi0gICAgICAgIHRydW5jYXRlRGF0YWJhc2VGaWxlKG1fZGF0YWJhc2UpOworICAgICAg
ICBTUUxpdGVGaWxlU3lzdGVtOjp0cnVuY2F0ZURhdGFiYXNlRmlsZShtX2RhdGFiYXNlLnNxbGl0
ZTNIYW5kbGUoKSk7CiAjZW5kaWYKICAgICAgICAgbV9kYXRhYmFzZS5jbG9zZSgpOwogI2lmICFQ
TEFURk9STShJT1NfRkFNSUxZKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434123</attachid>
            <date>2021-07-23 14:31:15 -0700</date>
            <delta_ts>2021-07-23 14:37:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227887-20210723143114.patch</filename>
            <type>text/plain</type>
            <size>44897</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzY0MDEyZGQxYzQwN2Rl
ODQ5ODM5NjQzMGQ1MGE0N2VhNDc0NjExMy4uOTZiOGE1YWVjNjNlYTI5ZTliNGFjOWY3YWUxZDA3
Mzk5Yzc0NmUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIxLTA3LTIzICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgYWxsIGZpbGUgbG9j
a3Mgc3luY2hyb25vdXNseSBpbiBuZXR3b3JrIHByb2Nlc3Mgd2hlbiBpdCBpcyBhYm91dCB0byBz
dXNwZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mjc4ODcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgwODAyMjI0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZl
cjo6c3RvcERhdGFiYXNlQWN0aXZpdGllc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6SURCU2VydmVyOjpoYXNEYXRhYmFzZUFjdGl2aXRpZXNPbk1haW5UaHJlYWQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnN0
b3BEYXRhYmFzZUFjdGl2aXRpZXNPbk1haW5UaHJlYWQpOiBEZWxldGVkLgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaDoKKyAgICAgICAgKiBTb3VyY2VzLnR4
dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNR
TGl0ZURhdGFiYXNlOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OndhbEF1dG9tYXRpY1RydW5j
YXRpb25Ib29rKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjp1c2VXQUxKb3Vy
bmFsTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6Y2xvc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmludGVycnVwdCk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZTo6c2V0SXNSdW5uaW5nVHJhbnNhY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmlzUnVubmluZ1RyYW5zYWN0aW9uIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVGaWxl
U3lzdGVtOjp0cnVuY2F0ZURhdGFiYXNlRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NR
TGl0ZUZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudDo6c2hvdWxkRXhlY3V0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OnN0ZXApOgorICAgICAgICAoV2Vi
Q29yZTo6U1FMaXRlU3RhdGVtZW50OjpzdGVwV2l0aG91dExvY2tTY29wZSk6CisgICAgICAgICog
cGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9T
UUxpdGVUcmFuc2FjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVUcmFuc2FjdGlv
bjo6YmVnaW4pOgorCiAyMDIxLTA3LTIyICBWw61jdG9yIE1hbnVlbCBKw6FxdWV6IExlYWwgIDx2
amFxdWV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgQ29tcGlsYXRpb24gZXJyb3Igd2l0aCBnY2Mg
dmVyc2lvbiA5LjMuMCAoQnVpbGRyb290IDIwMjAuMDgtMTQtZ2U1YTJhOTApCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4
IGNjMGMwMDVmOTIzYjA3NjY0MGEzZjQ2NTkyZWZjNGU2MDMyOGUzNjMuLjFkZWNjOGY0MzdlNWUz
NmRjNmQ0NTBlMDcxYTkwMDFkOGE4YjQzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIw
MjEtMDctMjMgIFNpaHVpIExpdSAgPHNpaHVpX2xpdUBhcHBsZS5jb20+CisKKyAgICAgICAgRHJv
cCBhbGwgZmlsZSBsb2NrcyBzeW5jaHJvbm91c2x5IGluIG5ldHdvcmsgcHJvY2VzcyB3aGVuIGl0
IGlzIGFib3V0IHRvIHN1c3BlbmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIyNzg4NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vODA4MDIyMjQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
SURCU2VydmVyOjp+V2ViSURCU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVy
OjpzdXNwZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjpyZXN1bWUpOgorICAg
ICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2Vi
SURCU2VydmVyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6TmV0d29ya1Byb2Nlc3MpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpyZXN1bWUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUHJvY2Vzczo6Y3JlYXRlV2ViSURCU2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29y
a1Byb2Nlc3M6OnN1c3BlbmRJREJTZXJ2ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2lvcy9O
ZXR3b3JrUHJvY2Vzc0lPUy5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnNl
dElzSG9sZGluZ0xvY2tlZEZpbGVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvbWFjL01l
ZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcDoKKyAgICAgICAgKiBTb3VyY2Vz
Q29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
CiAyMDIxLTA3LTIyICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CiAK
ICAgICAgICAgQXZvaWQgUXVpY2sgTm90ZSBvdmVybGF5IHdoZW4gc2Nyb2xsaW5nIHRvIHNob3cg
YSBoaWdobGlnaHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggNWE5M2E0ZDdlZjA5NWFjYzgxMGU2
NjljYmNhNGIyNWY0ZmUwNDJkZi4uZGU4NDBjMzVhMzI3N2U4N2ViOTg3NTNjMTE3NDllNjAxMTFl
NTk4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMS0wNy0yMyAg
U2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9wIGFsbCBmaWxl
IGxvY2tzIHN5bmNocm9ub3VzbHkgaW4gbmV0d29yayBwcm9jZXNzIHdoZW4gaXQgaXMgYWJvdXQg
dG8gc3VzcGVuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI3ODg3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MDgwMjIyND4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRy
YWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFs
bE9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZU9y
aWdpbik6CisgICAgICAgIChXZWJLaXQ6OnRydW5jYXRlRGF0YWJhc2VGaWxlKTogRGVsZXRlZC4K
KwogMjAyMS0wNy0xOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KIAogICAgICAg
ICBJbXBsZW1lbnQgSURCVHJhbnNhY3Rpb24uY29tbWl0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKaW5kZXggYjRkNTU5
NDU0MjQ4MDlhZjI2OGIwYzc0Mzg3NDFhNTYyOTE4ZGMyNC4uMDg2ZWQxMzE0NjI1MDk5MTJhMDUz
YjE3YmYwMjYyZDliYzRlYzA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTc2NywyNiArNzY3LDkgQEAgdm9p
ZCBJREJTZXJ2ZXI6OnVwZ3JhZGVGaWxlc0lmTmVjZXNzYXJ5KCkKICAgICAgICAgRmlsZVN5c3Rl
bTo6bWFrZUFsbERpcmVjdG9yaWVzKG5ld1ZlcnNpb25EaXJlY3RvcnkpOwogfQogCi1ib29sIElE
QlNlcnZlcjo6aGFzRGF0YWJhc2VBY3Rpdml0aWVzT25NYWluVGhyZWFkKCkgY29uc3QKK3ZvaWQg
SURCU2VydmVyOjpzdG9wRGF0YWJhc2VBY3Rpdml0aWVzSWZOZWVkZWQoKQogewotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKG1fbG9jay5pc0hlbGQoKSk7Ci0KLSAgICBp
ZiAobV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6IG1fdW5pcXVlSURCRGF0YWJhc2VNYXAudmFsdWVzKCkp
IHsKLSAgICAgICAgaWYgKCFkYXRhYmFzZS0+aWRlbnRpZmllcigpLmlzVHJhbnNpZW50KCkgJiYg
ZGF0YWJhc2UtPmhhc0FjdGl2ZVRyYW5zYWN0aW9ucygpKQotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBJREJTZXJ2ZXI6
OnN0b3BEYXRhYmFzZUFjdGl2aXRpZXNPbk1haW5UaHJlYWQoKQotewotICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKG1fbG9jay5pc0hlbGQoKSk7CisgICAgQVNTRVJUKCFp
c01haW5UaHJlYWQoKSk7CiAKICAgICAvLyBPbmx5IHN0b3Agbm9uLWVwaGVtZXJhbCBJREJTZXJ2
ZXIgdGhhdCBjYW4gaG9sZCBkYXRhYmFzZSBmaWxlIGxvY2suCiAgICAgaWYgKG1fc2Vzc2lvbklE
LmlzRXBoZW1lcmFsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VydmVyLmgKaW5kZXggZDg4MzY0OWE1YzhkNWI1OWYwMmMyYmRhY2RkZTY3
OGExY2EzYzQyZi4uYmFhODZmNWNhNGIzNDAxODM1MTcxNjE3NjU4MGQ5ZmM4NjRiODM4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2
ZXIuaApAQCAtMTA3LDggKzEwNyw3IEBAIHB1YmxpYzoKICAgICBTdG9yYWdlUXVvdGFNYW5hZ2Vy
OjpEZWNpc2lvbiByZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiwgdWludDY0X3QgdGFz
a1NpemUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB1aW50NjRfdCBkaXNrVXNhZ2UoY29u
c3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBDbGllbnRPcmlnaW4mKTsKIAotICAgIFdF
QkNPUkVfRVhQT1JUIGJvb2wgaGFzRGF0YWJhc2VBY3Rpdml0aWVzT25NYWluVGhyZWFkKCkgY29u
c3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wRGF0YWJhc2VBY3Rpdml0aWVzT25NYWlu
VGhyZWFkKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wRGF0YWJhc2VBY3Rpdml0aWVz
SWZOZWVkZWQoKTsKIAogcHJpdmF0ZToKICAgICBVbmlxdWVJREJEYXRhYmFzZSYgZ2V0T3JDcmVh
dGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZpZXImKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKaW5kZXggZTc2OTRjMmNlYjkxYTU2M2ViODYxNzMzMzVhNjUxYmNmZjI3ZDE2Ny4uOTM1
YTBjMzhhNTcxYzdkYTAzZWZlYTRhOTM1MWJhOTA2MGYxYzZmZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAg
LTIxOTAsNiArMjE5MCw3IEBAIHBsYXRmb3JtL3NxbC9TUUxpdGVBdXRob3JpemVyLmNwcAogcGxh
dGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNl
VHJhY2tlci5jcHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcAorcGxhdGZvcm0v
c3FsL1NRTGl0ZUxvY2tTY29wZS5jcHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3Bw
CiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUuY3BwCiBwbGF0Zm9y
bS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjAxYjk5MjdlM2NjNjIyZTljY2MwMGIx
MWViMmEyY2RkMDNmNzUzNy4uNmFkNDRmNzA3YTBhZWMyMjUzYmQxNjNhYTIxNmY1Nzk5ODc2ODAz
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMjkzNiw2ICsyOTM2LDcgQEAKIAkJOTNGNkI4MUYyNTY3QTA4QzAwQTA4NDg4IC8q
IFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjZCODFDMjU2NzlGNzAwMEEwODQ4OCAvKiBT
cGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGNkI4MjIyNTY3QTY1NjAwQTA4NDg4IC8q
IFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGNkI4MUIyNTY3OUY2RjAwQTA4NDg4IC8qIFNwZWVj
aFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTkzRjZGMUVFMTI3RjcwQjEwMDU1Q0IwNiAvKiBXZWJHTENv
bnRleHRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTNGNkYxRUIxMjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2ZW50LmggKi87IH07
CisJCTkzRjhGMEYzMjY5ODI2MTMwMEE5RjMzMSAvKiBTUUxpdGVMb2NrU2NvcGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhGMEYxMjY5ODI2MTIw
MEE5RjMzMSAvKiBTUUxpdGVMb2NrU2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Y5MjU0MzBGN0VGNUI4MDA3RTM3QzkgLyogUmFkaW9C
dXR0b25Hcm91cHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzRjkyNTQxMEY3RUY1QjgwMDdFMzdDOSAvKiBSYWRpb0J1dHRvbkdyb3Vwcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjlCNkUxMEJB
MEZCNzIwMDg1NDA2NCAvKiBKU0NvbW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjlCNkRGMEJBMEZCNzIwMDg1NDA2NCAvKiBKU0NvbW1lbnQu
aCAqLzsgfTsKIAkJOTNGOUI3QTEwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y5Qjc5RjBC
QTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uaCAqLzsgfTsKQEAgLTExODQ4LDYgKzEx
ODQ5LDggQEAKIAkJOTNGOEIzMDUwQTMwMEZFMTAwRjYxQUI4IC8qIENvZGVHZW5lcmF0b3IucG0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gQ29kZUdlbmVyYXRvci5wbTsgcGF0
aCA9IHNjcmlwdHMvQ29kZUdlbmVyYXRvci5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTNGOEIzMDYwQTMwMEZFQTAwRjYxQUI4IC8qIENvZGVHZW5lcmF0b3JKUy5wbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBDb2RlR2VuZXJhdG9ySlMucG07IHBhdGggPSBz
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsgd3JhcHNM
aW5lcyA9IDA7IH07CiAJCTkzRjhCMzA3MEEzMDBGRUEwMEY2MUFCOCAvKiBnZW5lcmF0ZS1iaW5k
aW5ncy5wbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSAiZ2VuZXJhdGUtYmlu
ZGluZ3MucGwiOyBwYXRoID0gInNjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5M0Y4RjBFRjI2OTgyNjEyMDBBOUYzMzEgLyogU1FMaXRl
TG9ja1Njb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNRTGl0
ZUxvY2tTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRjhGMEYxMjY5
ODI2MTIwMEE5RjMzMSAvKiBTUUxpdGVMb2NrU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1FMaXRlTG9ja1Njb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkzRjkyNTQxMEY3RUY1QjgwMDdFMzdDOSAvKiBSYWRpb0J1dHRvbkdyb3Vwcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYWRpb0J1dHRvbkdyb3Vwcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y5MjU0MjBGN0VGNUI4MDA3RTM3QzkgLyogUmFkaW9C
dXR0b25Hcm91cHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmFk
aW9CdXR0b25Hcm91cHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y5QjZE
RTBCQTBGQjcyMDA4NTQwNjQgLyogSlNDb21tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTQ29tbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xODU1MCw2ICsxODU1Myw4IEBACiAJCQkJN0U0NzRFMUIxMjQ5NERDOTAwMjM1MzY0IC8q
IFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oICovLAogCQkJCUI1QTY4NDIzMEZGQUJFQUEw
MEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmNwcCAqLywKIAkJCQlCNUE2ODQyMTBGRkFCRTk4
MDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5oICovLAorCQkJCTkzRjhGMEVGMjY5ODI2MTIw
MEE5RjMzMSAvKiBTUUxpdGVMb2NrU2NvcGUuY3BwICovLAorCQkJCTkzRjhGMEYxMjY5ODI2MTIw
MEE5RjMzMSAvKiBTUUxpdGVMb2NrU2NvcGUuaCAqLywKIAkJCQkxQTIyNDY0NTBDQzk4RERCMDBD
MDUyNDAgLyogU1FMaXRlU3RhdGVtZW50LmNwcCAqLywKIAkJCQkxQTIyNDY0NjBDQzk4RERCMDBD
MDUyNDAgLyogU1FMaXRlU3RhdGVtZW50LmggKi8sCiAJCQkJRUJFNUIyMjcyNDVBMjlDRjAwM0E1
QTg4IC8qIFNRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlLmNwcCAqLywKQEAgLTM1NDEyLDYg
KzM1NDE3LDcgQEAKIAkJCQk1MTJCREI0QjFDNDU2RkZBMDA2NDk0REYgLyogU1FMaXRlSURCQmFj
a2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTFFQzEzMDFDNTBBQkY1MDAzMkY5ODMg
LyogU1FMaXRlSURCQ3Vyc29yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTFFQzEyQzFDNTBBQkJG
MDAzMkY5ODMgLyogU1FMaXRlSURCVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTkz
RjhGMEYzMjY5ODI2MTMwMEE5RjMzMSAvKiBTUUxpdGVMb2NrU2NvcGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFBMjI0NjRDMENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVTdGF0ZW1lbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUVCRTVCMjI2MjQ1QTI2RUYwMDNBNUE4OCAvKiBTUUxpdGVTdGF0ZW1l
bnRBdXRvUmVzZXRTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyMjQ2NEUwQ0M5OEREQjAw
QzA1MjQwIC8qIFNRTGl0ZVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCmluZGV4IGExMTEwMjU2ODFl
NDY5MzEyM2ZiYzhjYjQ5MGE4MzcwZGIzOWMxODMuLmFlZDQ5ZGRhNTg4YmQ5MjgxZWIwNjMxZmJh
MzM4NzYyNmM0ZjM1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZURhdGFiYXNlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIk1lbW9yeVJlbGVhc2Uu
aCIKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNsdWRlICJTUUxpdGVG
aWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiU1FMaXRlTG9ja1Njb3BlLmgiCiAjaW5jbHVkZSAiU1FM
aXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8c3FsaXRlMy5oPgpA
QCAtMTE0LDcgKzExNSwxMyBAQCBib29sIFNRTGl0ZURhdGFiYXNlOjpvcGVuKGNvbnN0IFN0cmlu
ZyYgZmlsZW5hbWUsIE9wZW5Nb2RlIG9wZW5Nb2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIAotICAgICAgICBtX29wZW5FcnJvciA9IHNxbGl0ZTNfb3Blbl92MihGaWxlU3lzdGVt
OjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZW5hbWUpLmRhdGEoKSwgJm1fZGIsIGZsYWdz
LCBudWxscHRyKTsKKyAgICAgICAgeworICAgICAgICAgICAgU1FMaXRlTG9ja1Njb3BlIGxvY2tT
Y29wZTsKKyAgICAgICAgICAgIG1fb3BlbkVycm9yID0gc3FsaXRlM19vcGVuX3YyKEZpbGVTeXN0
ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlbmFtZSkuZGF0YSgpLCAmbV9kYiwgZmxh
Z3MsIG51bGxwdHIpOworICAgICAgICAgICAgaWYgKG1fb3BlbkVycm9yID09IFNRTElURV9PSykK
KyAgICAgICAgICAgICAgICBsb2NrU2NvcGUuYWRkRGF0YWJhc2UoKnRoaXMpOworICAgICAgICB9
CisKICAgICAgICAgaWYgKG1fb3BlbkVycm9yICE9IFNRTElURV9PSykgewogICAgICAgICAgICAg
bV9vcGVuRXJyb3JNZXNzYWdlID0gbV9kYiA/IHNxbGl0ZTNfZXJybXNnKG1fZGIpIDogInNxbGl0
ZV9vcGVuIHJldHVybmVkIG51bGwiOwogICAgICAgICAgICAgTE9HX0VSUk9SKCJTUUxpdGUgZGF0
YWJhc2UgZmFpbGVkIHRvIGxvYWQgZnJvbSAlc1xuQ2F1c2UgLSAlcyIsIGZpbGVuYW1lLmFzY2lp
KCkuZGF0YSgpLApAQCAtMTY3LDYgKzE3NCw3IEBAIHN0YXRpYyBpbnQgd2FsQXV0b21hdGljVHJ1
bmNhdGlvbkhvb2sodm9pZCogY29udGV4dCwgc3FsaXRlMyogZGIsIGNvbnN0IGNoYXIqIGRiCiAK
ICAgICBpZiAod2FsUGFnZUNvdW50ID49IGNoZWNrcG9pbnRUaHJlc2hvbGQpIHsKICAgICAgICAg
aW50IG5ld1dhbFBhZ2VDb3VudCA9IDA7CisgICAgICAgIEFTU0VSVChTUUxpdGVMb2NrU2NvcGU6
OmlzSW5zaWRlU2NvcGUoKSk7CiAgICAgICAgIGludCByZXN1bHQgPSBzcWxpdGUzX3dhbF9jaGVj
a3BvaW50X3YyKGRiLCBkYk5hbWUsIFNRTElURV9DSEVDS1BPSU5UX1RSVU5DQVRFLCAmbmV3V2Fs
UGFnZUNvdW50LCBudWxscHRyKTsKIAogI2lmIExPR19ESVNBQkxFRApAQCAtMTk0LDcgKzIwMiw2
IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmVuYWJsZUF1dG9tYXRpY1dBTFRydW5jYXRpb24oKQog
CiB2b2lkIFNRTGl0ZURhdGFiYXNlOjp1c2VXQUxKb3VybmFsTW9kZSgpCiB7Ci0gICAgbV91c2VX
QUwgPSB0cnVlOwogICAgIHsKICAgICAgICAgYXV0byB3YWxTdGF0ZW1lbnQgPSBwcmVwYXJlU3Rh
dGVtZW50KCJQUkFHTUEgam91cm5hbF9tb2RlPVdBTDsiX3MpOwogICAgICAgICBpZiAod2FsU3Rh
dGVtZW50ICYmIHdhbFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKQEAgLTIzMiwx
MiArMjM5LDEyIEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmNsb3NlKFNob3VsZFNldEVycm9yU3Rh
dGUgc2hvdWxkU2V0RXJyb3JTdGF0ZSkKICAgICAgICAgfQogCiAgICAgICAgIGludCBjbG9zZVJl
c3VsdDsKLSAgICAgICAgaWYgKG1fdXNlV0FMKSB7Ci0gICAgICAgICAgICAvLyBDbG9zZSBpbiB0
aGUgc2NvcGUgb2YgY291bnRlciBhcyBpdCBtYXkgYWNxdWlyZSBsb2NrIG9mIGRhdGFiYXNlLgor
ICAgICAgICB7CiAgICAgICAgICAgICBTUUxpdGVUcmFuc2FjdGlvbkluUHJvZ3Jlc3NBdXRvQ291
bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7CisgICAgICAgICAgICBTUUxpdGVMb2NrU2NvcGUgbG9j
a1Njb3BlOwogICAgICAgICAgICAgY2xvc2VSZXN1bHQgPSBzcWxpdGUzX2Nsb3NlKGRiKTsKLSAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICBjbG9zZVJlc3VsdCA9IHNxbGl0ZTNfY2xvc2UoZGIp
OworICAgICAgICAgICAgbG9ja1Njb3BlLnJlbW92ZURhdGFiYXNlKCp0aGlzKTsKKyAgICAgICAg
fQogCiAgICAgICAgIGlmIChjbG9zZVJlc3VsdCAhPSBTUUxJVEVfT0spCiAgICAgICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihTUUxEYXRhYmFzZSwgIlNRTGl0ZURhdGFiYXNlOjpjbG9zZTogRmFp
bGVkIHRvIGNsb3NlIGRhdGFiYXNlICglZCkgLSAle3B1YmxpY31zIiwgY2xvc2VSZXN1bHQsIGxh
c3RFcnJvck1zZygpKTsKQEAgLTQ1OCw4ICs0NjUsMTQgQEAgaW50IFNRTGl0ZURhdGFiYXNlOjpy
dW5JbmNyZW1lbnRhbFZhY3V1bUNvbW1hbmQoKQogdm9pZCBTUUxpdGVEYXRhYmFzZTo6aW50ZXJy
dXB0KCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhYmFzZUNsb3NpbmdNdXRleCB9Owot
ICAgIGlmIChtX2RiKQotICAgICAgICBzcWxpdGUzX2ludGVycnVwdChtX2RiKTsKKyAgICAKKyAg
ICBpZiAoIW1fZGIpCisgICAgICAgIHJldHVybjsKKworICAgIHNxbGl0ZTNfaW50ZXJydXB0KG1f
ZGIpOworCisgICAgaWYgKGF1dG8gcXVlcnkgPSBwcmVwYXJlU3RhdGVtZW50KCJST0xMQkFDSyJf
cykpCisgICAgICAgIHF1ZXJ5LT5zdGVwV2l0aG91dExvY2tTY29wZSgpOwogfQogCiBpbnQ2NF90
IFNRTGl0ZURhdGFiYXNlOjpsYXN0SW5zZXJ0Um93SUQoKQpAQCAtNzMzLDQgKzc0NiwxNCBAQCBF
eHBlY3RlZDxVbmlxdWVSZWY8U1FMaXRlU3RhdGVtZW50PiwgaW50PiBTUUxpdGVEYXRhYmFzZTo6
cHJlcGFyZUhlYXBTdGF0ZW1lbnQoQQogICAgIHJldHVybiBVbmlxdWVSZWY8U1FMaXRlU3RhdGVt
ZW50PigqbmV3IFNRTGl0ZVN0YXRlbWVudCgqdGhpcywgc3FsU3RhdGVtZW50LnZhbHVlKCkpKTsK
IH0KIAordm9pZCBTUUxpdGVEYXRhYmFzZTo6c2V0SXNSdW5uaW5nVHJhbnNhY3Rpb24oYm9vbCBp
c1J1bm5pbmdUcmFuc2FjdGlvbikKK3sKKyAgICBtX2lzUnVubmluZ1RyYW5zYWN0aW9uID0gaXNS
dW5uaW5nVHJhbnNhY3Rpb247Cit9CisKK2Jvb2wgU1FMaXRlRGF0YWJhc2U6OmlzUnVubmluZ1Ry
YW5zYWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc1J1bm5pbmdUcmFuc2FjdGlvbjsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9z
cWwvU1FMaXRlRGF0YWJhc2UuaAppbmRleCA0YjIyYzhmZTY4ZTM1ZmJkZDA5NzI1ODY4YzRjOWEw
ZTVjYWIyY2YwLi40YjBkZGJmM2NkNThlNWMwY2Q1NGIyYTk2ODdkM2QwN2YwY2M1NGRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaApAQCAtMTMwLDcg
KzEzMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEF1dGhvcml6ZXIoRGF0YWJhc2VBdXRob3Jp
emVyJik7CiAKICAgICBMb2NrJiBkYXRhYmFzZU11dGV4KCkgeyByZXR1cm4gbV9sb2NraW5nTXV0
ZXg7IH0KLSAgICBib29sIGlzQXV0b0NvbW1pdE9uKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBpc0F1dG9Db21taXRPbigpIGNvbnN0OwogCiAgICAgLy8gVGhlIFNRTGl0ZSBBVVRP
X1ZBQ1VVTSBwcmFnbWEgY2FuIGJlIGVpdGhlciBOT05FLCBGVUxMLCBvciBJTkNSRU1FTlRBTC4K
ICAgICAvLyBOT05FIC0gU1FMaXRlIGRvZXMgbm90IGRvIGFueSB2YWN1dW1pbmcKQEAgLTE2Miw2
ICsxNjIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbmNyZW1lbnRTdGF0ZW1lbnRDb3VudCgpOwog
ICAgIHZvaWQgZGVjcmVtZW50U3RhdGVtZW50Q291bnQoKTsKIAorICAgIHZvaWQgc2V0SXNSdW5u
aW5nVHJhbnNhY3Rpb24oYm9vbCk7CisgICAgYm9vbCBpc1J1bm5pbmdUcmFuc2FjdGlvbigpIGNv
bnN0OworCiBwcml2YXRlOgogICAgIHN0YXRpYyBpbnQgYXV0aG9yaXplckZ1bmN0aW9uKHZvaWQq
LCBpbnQsIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIq
KTsKIApAQCAtMTgxLDggKzE4NCw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjphdG9taWM8dW5zaWdu
ZWQ+IG1fc3RhdGVtZW50Q291bnQgeyAwIH07CiAjZW5kaWYKIAotICAgIGJvb2wgbV91c2VXQUwg
eyBmYWxzZSB9OwotCiAgICAgTG9jayBtX2F1dGhvcml6ZXJMb2NrOwogICAgIFJlZlB0cjxEYXRh
YmFzZUF1dGhvcml6ZXI+IG1fYXV0aG9yaXplciBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fYXV0aG9y
aXplckxvY2spOwogCkBAIC0xOTMsNiArMTk0LDggQEAgcHJpdmF0ZToKIAogICAgIGludCBtX29w
ZW5FcnJvciB7IFNRTElURV9FUlJPUiB9OwogICAgIENTdHJpbmcgbV9vcGVuRXJyb3JNZXNzYWdl
OworCisgICAgYm9vbCBtX2lzUnVubmluZ1RyYW5zYWN0aW9uIHsgZmFsc2UgfTsKIH07CiAKIGlu
bGluZSB2b2lkIFNRTGl0ZURhdGFiYXNlOjppbmNyZW1lbnRTdGF0ZW1lbnRDb3VudCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHAKaW5kZXgg
NzZlNDVhZjM0ZWQwOTNmZDlmMjc2ZGQ1ZDRiOTIyYTQxNjM0ZDlhZS4uOGI5YjMyMWRjNjQ4MTAw
ZmNiZjRjNWMyMmY1MGYxNGIxNWEzMTg4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUg
IlNRTGl0ZUZpbGVTeXN0ZW0uaCIKIAogI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlLmgiCisjaW5j
bHVkZSAiU1FMaXRlTG9ja1Njb3BlLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAj
aW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNsdWRlIDxzcWxpdGUzLmg+
CkBAIC05NCw2ICs5NSw3IEBAIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6ZGVsZXRlRGF0YWJhc2VG
aWxlKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIGJv
b2wgU1FMaXRlRmlsZVN5c3RlbTo6dHJ1bmNhdGVEYXRhYmFzZUZpbGUoc3FsaXRlMyogZGF0YWJh
c2UpCiB7CisgICAgU1FMaXRlTG9ja1Njb3BlIGxvY2tTY29wZTsKICAgICByZXR1cm4gc3FsaXRl
M19maWxlX2NvbnRyb2woZGF0YWJhc2UsIDAsIFNRTElURV9UUlVOQ0FURV9EQVRBQkFTRSwgMCkg
PT0gU1FMSVRFX09LOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3Fs
L1NRTGl0ZUZpbGVTeXN0ZW0uaAppbmRleCBjNjhkOWM3ZTdhZjk4OTc2YTFlZDNkY2I2ZjJhY2Zl
NGI2Y2Y1YzJmLi5kMzI2OGJkODVjY2U0MjJhNmUzN2E4OWIyMzAyZGY0ZjZmOGVkN2QzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmgKQEAgLTg2
LDcgKzg2LDcgQEAgcHVibGljOgogICAgIC8vIFRydW5jYXRlcyBhIGRhdGFiYXNlIGZpbGUuIFVz
ZWQgd2hlbiBNb2JpbGVTYWZhcmlTZXR0aW5ncyBkZWxldGVzIGEgZGF0YWJhc2UgZmlsZSwKICAg
ICAvLyBzaW5jZSBkZWxldGluZyB0aGUgZmlsZSBudWtlcyB0aGUgUE9TSVggZmlsZSBsb2NrcyB3
aGljaCB3b3VsZCBwb3RlbnRpYWxseSBjYXVzZSBTYWZhcmkKICAgICAvLyB0byBjb3JydXB0IHRo
ZSBuZXcgZGIgaWYgaXQncyBydW5uaW5nIGluIHRoZSBiYWNrZ3JvdW5kLgotICAgIHN0YXRpYyBi
b29sIHRydW5jYXRlRGF0YWJhc2VGaWxlKHNxbGl0ZTMqIGRhdGFiYXNlKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBzdGF0aWMgYm9vbCB0cnVuY2F0ZURhdGFiYXNlRmlsZShzcWxpdGUzKiBkYXRhYmFz
ZSk7CiAjZW5kaWYKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdWludDY0X3QgZGF0
YWJhc2VGaWxlU2l6ZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAKaW5kZXggYjA4NDllNmY4MDhjYTM4
MGIwOGM2Mjc0YjA0ZDE0OWNjMDMzYzA4Ny4uYjJmY2NkNGNkNzQxNTc4NjQ3YjAwZTQ1ZTI3NDQ3
NDU1MDhlZWM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0
ZVN0YXRlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0
YXRlbWVudC5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJTUUxWYWx1ZS5oIgorI2luY2x1ZGUgIlNRTGl0ZUxvY2tTY29wZS5oIgogI2luY2x1
ZGUgPHNxbGl0ZTMuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0
Zi9WYXJpYW50Lmg+CkBAIC02MiwxMCArNjMsNDggQEAgU1FMaXRlU3RhdGVtZW50Ojp+U1FMaXRl
U3RhdGVtZW50KCkKICAgICBtX2RhdGFiYXNlLmRlY3JlbWVudFN0YXRlbWVudENvdW50KCk7CiB9
CiAKK2Jvb2wgU1FMaXRlU3RhdGVtZW50OjpzaG91bGRFeGVjdXRlKCkKK3sKKyAgICBhdXRvIHF1
ZXJ5ID0gc3FsaXRlM19zcWwobV9zdGF0ZW1lbnQpOworICAgIGlmICghc3RyY21wKHF1ZXJ5LCAi
QkVHSU4iKSB8fCAhc3RyY21wKHF1ZXJ5LCAiQkVHSU4gSU1NRURJQVRFIikpCisgICAgICAgIG1f
ZGF0YWJhc2Uuc2V0SXNSdW5uaW5nVHJhbnNhY3Rpb24odHJ1ZSk7CisgICAgZWxzZSBpZiAoIXN0
cmNtcChxdWVyeSwgIkNPTU1JVCIpIHx8ICFzdHJjbXAocXVlcnksICJST0xMQkFDSyIpKQorICAg
ICAgICBtX2RhdGFiYXNlLnNldElzUnVubmluZ1RyYW5zYWN0aW9uKGZhbHNlKTsKKyAgICBlbHNl
IGlmIChtX2RhdGFiYXNlLmlzUnVubmluZ1RyYW5zYWN0aW9uKCkgJiYgbV9kYXRhYmFzZS5pc0F1
dG9Db21taXRPbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKwogaW50IFNRTGl0ZVN0YXRlbWVudDo6c3RlcCgpCiB7CiAgICAgTG9ja2VyIGRhdGFiYXNl
TG9jayB7IG1fZGF0YWJhc2UuZGF0YWJhc2VNdXRleCgpIH07CiAKKyAgICBpbnQgZXJyb3I7Cisg
ICAgLy8gQXV0byBjb21taXQgc2hvdWxkIGJlIG9mZiB3aGVuIHRyYW5zYWN0aW9uIGlzIHN0YXJ0
ZWQgc3VjY2Vzc2Z1bGx5LgorICAgIGlmIChpc1JlYWRPbmx5KCkgJiYgbV9kYXRhYmFzZS5pc0F1
dG9Db21taXRPbigpKQorICAgICAgICBlcnJvciA9IHNxbGl0ZTNfc3RlcChtX3N0YXRlbWVudCk7
CisgICAgZWxzZSB7CisgICAgICAgIFNRTGl0ZUxvY2tTY29wZSBsb2NrU2NvcGU7CisKKyAgICAg
ICAgaWYgKCFzaG91bGRFeGVjdXRlKCkpIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KFNRTERhdGFiYXNlLCAiU1FMaXRlU3RhdGVtZW50OjpzdGVwOiBDYW5ub3Qgc3RlcCAle3B1Ymxp
Y31zIGJlY2F1c2UgdHJhbnNhY3Rpb24gaXMgcm9sbGVkIGJhY2siLCBzcWxpdGUzX3NxbChtX3N0
YXRlbWVudCkpOworICAgICAgICAgICAgcmV0dXJuIFNRTElURV9BQk9SVDsKKyAgICAgICAgfQor
CisgICAgICAgIGVycm9yID0gc3FsaXRlM19zdGVwKG1fc3RhdGVtZW50KTsKKyAgICB9CisKKyAg
ICBpZiAoZXJyb3IgIT0gU1FMSVRFX0RPTkUgJiYgZXJyb3IgIT0gU1FMSVRFX1JPVykKKyAgICAg
ICAgTE9HKFNRTERhdGFiYXNlLCAic3FsaXRlM19zdGVwIGZhaWxlZCAoJWkpXG5FcnJvciAtICVz
IiwgZXJyb3IsIHNxbGl0ZTNfZXJybXNnKG1fZGF0YWJhc2Uuc3FsaXRlM0hhbmRsZSgpKSk7CisK
KyAgICByZXR1cm4gZXJyb3I7Cit9CisKK2ludCBTUUxpdGVTdGF0ZW1lbnQ6OnN0ZXBXaXRob3V0
TG9ja1Njb3BlKCkKK3sKKyAgICBMb2NrZXIgZGF0YWJhc2VMb2NrIHsgbV9kYXRhYmFzZS5kYXRh
YmFzZU11dGV4KCkgfTsKKwogICAgIGludCBlcnJvciA9IHNxbGl0ZTNfc3RlcChtX3N0YXRlbWVu
dCk7CiAgICAgaWYgKGVycm9yICE9IFNRTElURV9ET05FICYmIGVycm9yICE9IFNRTElURV9ST1cp
CiAgICAgICAgIExPRyhTUUxEYXRhYmFzZSwgInNxbGl0ZTNfc3RlcCBmYWlsZWQgKCVpKVxuRXJy
b3IgLSAlcyIsIGVycm9yLCBzcWxpdGUzX2Vycm1zZyhtX2RhdGFiYXNlLnNxbGl0ZTNIYW5kbGUo
KSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRl
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oCmlu
ZGV4IGNmMmYxMjBmMmU3NTNhZDhkMTMxNzBmZDBkODcwMDE2OWRlYmMxNTUuLjNjYzAxOWZlNTM5
M2I4M2QwYzBjY2Q5MTY5MTdiOTI4YWFmNDg5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmgKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAg
IFdFQkNPUkVfRVhQT1JUIHVuc2lnbmVkIGJpbmRQYXJhbWV0ZXJDb3VudCgpIGNvbnN0OwogCiAg
ICAgV0VCQ09SRV9FWFBPUlQgaW50IHN0ZXAoKTsKKyAgICBpbnQgc3RlcFdpdGhvdXRMb2NrU2Nv
cGUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgcmVzZXQoKTsKICAgICAKICAgICAvLyBzdGVw
cyBhbmQgZmluYWxpemVzIHRoZSBxdWVyeS4KQEAgLTg0LDYgKzg1LDcgQEAgcHJpdmF0ZToKIAog
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJlcGFyZWQgc3RhdGVtZW50IGhhcyBiZWVuIHN0
ZXBwZWQgYXQgbGVhc3Qgb25jZSB1c2luZyBzdGVwKCkgYnV0IGhhcyBuZWl0aGVyIHJ1biB0byBj
b21wbGV0aW9uIChyZXR1cm5lZCBTUUxJVEVfRE9ORSBmcm9tIHN0ZXAoKSkgbm9yIGJlZW4gcmVz
ZXQoKS4KICAgICBib29sIGhhc1N0YXJ0ZWRTdGVwcGluZygpOworICAgIGJvb2wgc2hvdWxkRXhl
Y3V0ZSgpOwogCiAgICAgU1FMaXRlRGF0YWJhc2UmIG1fZGF0YWJhc2U7CiAgICAgc3FsaXRlM19z
dG10KiBtX3N0YXRlbWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FM
aXRlVHJhbnNhY3Rpb24uY3BwCmluZGV4IDA4ZTllYjczZGIyNGEwOTBhN2EwODBjMWE4MTU2OTMx
OGU1YTI4NTkuLmQ1ODJmYWNjMmUxY2RjMDc1OTU4MDE1MzRhZDQ5Zjg5NGZkOGZjZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcApA
QCAtNjYsMTAgKzY2LDE0IEBAIHZvaWQgU1FMaXRlVHJhbnNhY3Rpb246OmJlZ2luKCkKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgbV9pblByb2dyZXNzID0gbV9kYi5leGVjdXRlQ29tbWFuZCgi
QkVHSU4gSU1NRURJQVRFIl9zKTsKICAgICAgICAgbV9kYi5tX3RyYW5zYWN0aW9uSW5Qcm9ncmVz
cyA9IG1faW5Qcm9ncmVzczsKKworICAgICAgICBpZiAoIW1faW5Qcm9ncmVzcykgeworICAgICAg
ICAgICAgLy8gTWFrZSBzdXJlIHRoZXJlIGlzIGFuIGV4cGxpY2l0IHJvbGxiYWNrIGFmdGVyIGJl
Z2luIHRvIHVwZGF0ZSBkYXRhYmFzZSBzdGF0ZS4KKyAgICAgICAgICAgIG1fZGIuZXhlY3V0ZUNv
bW1hbmQoIlJPTExCQUNLIl9zKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICBp
ZiAoIW1faW5Qcm9ncmVzcykKICAgICAgICAgICAgIFNRTGl0ZURhdGFiYXNlVHJhY2tlcjo6ZGVj
cmVtZW50VHJhbnNhY3Rpb25JblByb2dyZXNzQ291bnQoKTsKICNlbmRpZgorICAgICAgICB9CiAg
ICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4
ZWREQi9XZWJJREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRl
eGVkREIvV2ViSURCU2VydmVyLmNwcAppbmRleCBmMDY4YjI2N2ExNTE2NjhjNjYwMWMwYWM0ZTRl
N2U3YmI2ZGRmZGQxLi42YjI1MGJhN2IzNDZiZDE5YTZhZjg3NGY0OWI3YmMwMzgwZTc4ZDg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJT
ZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dl
YklEQlNlcnZlci5jcHAKQEAgLTUzLDcgKzUzLDYgQEAgV2ViSURCU2VydmVyOjpXZWJJREJTZXJ2
ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBTdHJpbmcmIGRpcmVjdG9yeSwgV2UK
IFdlYklEQlNlcnZlcjo6fldlYklEQlNlcnZlcigpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKLSAgICBBU1NFUlQoIW1faXNTdXNwZW5kZWQpOwogfQogCiB2b2lkIFdlYklEQlNl
cnZlcjo6Z2V0T3JpZ2lucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhPiYmKT4mJiBjYWxsYmFjaykKQEAgLTExNSw0NyArMTE0LDM5IEBA
IHZvaWQgV2ViSURCU2VydmVyOjpyZW5hbWVPcmlnaW4oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiBvbGRPcmlnaW4sIGNvCiAgICAgfSk7CiB9CiAKLWJvb2wgV2ViSURCU2VydmVy
OjpzdXNwZW5kKFN1c3BlbnNpb25Db25kaXRpb24gc3VzcGVuc2lvbkNvbmRpdGlvbikgV1RGX0lH
Tk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUwordm9pZCBXZWJJREJTZXJ2ZXI6OnN1c3BlbmQo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAgICBpZiAobV9pc1N1c3BlbmRlZCkKLSAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgTG9ja2VyIHN1c3BlbnNpb25Mb2NrZXIgeyBtX3N1c3BlbnNp
b25Mb2NrIH07CisgICAgbV9zaG91bGRTdXNwZW5kID0gdHJ1ZTsKIAotICAgIFJFTEVBU0VfTE9H
KFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJJREJTZXJ2ZXI6OnN1c3BlbmQoKSwgc3VzcGVu
c2lvbkNvbmRpdGlvbj0lcyIsIHRoaXMsIHN1c3BlbnNpb25Db25kaXRpb24gPT0gU3VzcGVuc2lv
bkNvbmRpdGlvbjo6QWx3YXlzID8gIkFsd2F5cyIgOiAiSWZJZGxlIik7Ci0KLSAgICBtX2lzU3Vz
cGVuZGVkID0gdHJ1ZTsKLSAgICBtX3NlcnZlckxvY2subG9jaygpOwotCi0gICAgaWYgKCFtX3Nl
cnZlcikKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgbV9xdWV1ZS0+ZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc3VzcGVuc2lvbklkZW50aWZpZXIgPSAr
K21fc3VzcGVuc2lvbklkZW50aWZpZXIsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAgICBMb2NrZXIgc3VzcGVuc2lvbkxv
Y2tlciB7IG1fc3VzcGVuc2lvbkxvY2sgfTsKKyAgICAgICAgaWYgKCFtX3Nob3VsZFN1c3BlbmQg
fHwgc3VzcGVuc2lvbklkZW50aWZpZXIgIT0gbV9zdXNwZW5zaW9uSWRlbnRpZmllcikgeworICAg
ICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAgaWYgKHN1c3BlbnNp
b25Db25kaXRpb24gPT0gU3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlzKSB7Ci0gICAgICAgIG1f
c2VydmVyLT5zdG9wRGF0YWJhc2VBY3Rpdml0aWVzT25NYWluVGhyZWFkKCk7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KKyAgICAgICAgeworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fc2VydmVyTG9jayB9OworICAgICAgICAgICAgbV9zZXJ2ZXItPnN0b3BEYXRhYmFzZUFjdGl2
aXRpZXNJZk5lZWRlZCgpOworICAgICAgICB9CiAKLSAgICAvLyBTdXNwZW5kIHRvIGF2b2lkIHN0
YXJ0aW5nIG5ldyB0cmFuc2FjdGlvbnMgaWYgdGhlcmUgaXMgbm8gb25nb2luZyB0cmFuc2FjdGlv
bi4KLSAgICBpZiAoIW1fc2VydmVyLT5oYXNEYXRhYmFzZUFjdGl2aXRpZXNPbk1haW5UaHJlYWQo
KSkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRj
aChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKLSAgICAvLyBSZXN1bWUgdG8gYWxsb3cg
b25nb2luZyB0cmFuc2FjdGlvbnMgdG8gYmUgZmluaXNoZWQuCi0gICAgbV9zZXJ2ZXJMb2NrLnVu
bG9jaygpOwotICAgIG1faXNTdXNwZW5kZWQgPSBmYWxzZTsKLSAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIHdoaWxlIChtX3Nob3VsZFN1c3BlbmQpCisgICAgICAgICAgICBtX3N1c3BlbnNpb25D
b25kaXRpb24ud2FpdChtX3N1c3BlbnNpb25Mb2NrKTsKKyAgICB9KTsKIH0KIAotdm9pZCBXZWJJ
REJTZXJ2ZXI6OnJlc3VtZSgpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKK3Zv
aWQgV2ViSURCU2VydmVyOjpyZXN1bWUoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAKLSAgICBpZiAoIW1faXNTdXNwZW5kZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJF
TEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJJREJTZXJ2ZXI6OnJlc3VtZSgp
IiwgdGhpcyk7Ci0KLSAgICBtX2lzU3VzcGVuZGVkID0gZmFsc2U7Ci0gICAgbV9zZXJ2ZXJMb2Nr
LnVubG9jaygpOworICAgIExvY2tlciBzdXNwZW5zaW9uTG9ja2VyIHsgbV9zdXNwZW5zaW9uTG9j
ayB9OworICAgIG1fc2hvdWxkU3VzcGVuZCA9IGZhbHNlOworICAgIG1fc3VzcGVuc2lvbkNvbmRp
dGlvbi5ub3RpZnlPbmUoKTsKIH0KIAogdm9pZCBXZWJJREJTZXJ2ZXI6Om9wZW5EYXRhYmFzZShj
b25zdCBXZWJDb3JlOjpJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5oCmluZGV4
IDYyZjBjYWMzNmRjNjhlNWFlZTFjMWJiY2FkMzY4MzlkNzMxODA3MTguLjhlZDdmNGI2Njc1MTE5
NTY3NDNmNDFiOTdkMDE2YWFiNmY0ZjcxMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5oCkBAIC01Myw3ICs1Myw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlbmFtZU9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogCiAgICAgZW51bSBjbGFzcyBTdXNwZW5zaW9uQ29uZGl0aW9u
IDogYm9vbCB7IEFsd2F5cywgSWZJZGxlIH07Ci0gICAgYm9vbCBzdXNwZW5kKFN1c3BlbnNpb25D
b25kaXRpb24gPSBTdXNwZW5zaW9uQ29uZGl0aW9uOjpBbHdheXMpOworICAgIHZvaWQgc3VzcGVu
ZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVzdW1lKCk7CiAKICAg
ICAvLyBNZXNzYWdlIGhhbmRsZXJzLgpAQCAtOTgsMTAgKzk4LDEzIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBwb3N0VGFza1JlcGx5KEZ1bmN0aW9uPHZvaWQoKT4mJik7CiAKICAgICBSZWY8V29ya1F1
ZXVlPiBtX3F1ZXVlOwotCiAgICAgTG9jayBtX3NlcnZlckxvY2s7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OklEQlNlcnZlcjo6SURCU2VydmVyPiBtX3NlcnZlciBXVEZfR1VBUkRFRF9C
WV9MT0NLKG1fc2VydmVyTG9jayk7Ci0gICAgYm9vbCBtX2lzU3VzcGVuZGVkIHsgZmFsc2UgfTsK
KworICAgIExvY2sgbV9zdXNwZW5zaW9uTG9jazsKKyAgICBDb25kaXRpb24gbV9zdXNwZW5zaW9u
Q29uZGl0aW9uOworICAgIGJvb2wgbV9zaG91bGRTdXNwZW5kIFdURl9HVUFSREVEX0JZX0xPQ0so
bV9zdXNwZW5zaW9uTG9jaykgeyBmYWxzZSB9OworICAgIHVpbnQ2NF90IG1fc3VzcGVuc2lvbklk
ZW50aWZpZXIgV1RGX0dVQVJERURfQllfTE9DSyhtX3N1c3BlbnNpb25Mb2NrKSB7IDAgfTsKIAog
ICAgIEhhc2hNYXA8SVBDOjpDb25uZWN0aW9uOjpVbmlxdWVJRCwgc3RkOjp1bmlxdWVfcHRyPFdl
YklEQkNvbm5lY3Rpb25Ub0NsaWVudD4+IG1fY29ubmVjdGlvbk1hcDsKICAgICBXZWFrSGFzaFNl
dDxJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbnM7IC8vIE9ubHkgdXNlZCBvbiB0aGUgbWFp
biB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCmluZGV4IDQzNjA1MDJkMTA2MTc5ZjY3Mjg5NTljY2UzMmNmNjA3NmQxMTkwNzMuLmI0
Nzg0YTM2OGQwMjc2YzMxOGQ0OTE3NzVjZGE3MDdhOThlZTU0NGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiQXV4aWxpYXJ5
UHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUg
IkRhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkRvd25sb2FkLmgiCiAjaW5j
bHVkZSAiRG93bmxvYWRQcm94eU1lc3NhZ2VzLmgiCiAjaWYgRU5BQkxFKExFR0FDWV9DVVNUT01f
UFJPVE9DT0xfTUFOQUdFUikKQEAgLTE1OCw5ICsxNTksOSBAQCBOZXR3b3JrUHJvY2Vzczo6TmV0
d29ya1Byb2Nlc3MoQXV4aWxpYXJ5UHJvY2Vzc0luaXRpYWxpemF0aW9uUGFyYW1ldGVycyYmIHBh
cmFtZQogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCiAgICAgLCBtX25ldHdvcmtDb250
ZW50UnVsZUxpc3RNYW5hZ2VyKCp0aGlzKQogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSAgICAsIG1fd2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyKFt0aGlzXShib29sIGlzSG9sZGlu
Z0xvY2tlZEZpbGVzKSB7IHNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGlzSG9sZGluZ0xvY2tlZEZp
bGVzKTsgfSkKLSNlbmRpZgorICAgICwgbV9kYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIoIk5ldHdv
cmsgUHJvY2VzcyBpcyBob2xkaW5nIGxvY2tlZCBmaWxlcyIsIFt3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKV0oKSB7CisgICAgICAgIHJldHVybiB3ZWFrVGhpcyA/IHdlYWtUaGlzLT5tX3No
b3VsZFN1c3BlbmQgOiBmYWxzZTsKKyAgICB9KQogICAgICwgbV9tZXNzYWdlUG9ydENoYW5uZWxS
ZWdpc3RyeShjcmVhdGVNZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeSgqdGhpcykpCiB7CiAgICAg
TmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXM6OmluaXRpYWxpemUoKTsKQEAgLTIyMTEs
MzEgKzIyMTIsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzV2lsbFN1c3BlbmRJbW1p
bmVudGx5Rm9yVGVzdGluZ1N5bmMoQ29tcGxldGlvbkhhbmRsZQogICAgIHByZXBhcmVUb1N1c3Bl
bmQodHJ1ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzOjpzdXNwZW5kSURCU2VydmVycyhib29sIGlzU3VzcGVuc2lvbkltbWluZW50KQotewot
ICAgIG1fc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMgPSB0cnVlOwotICAgICsrbV9zdXNwZW5zaW9u
SWRlbnRpZmllcjsKLQotICAgIGJvb2wgYWxsU3VzcGVuZGVkID0gdHJ1ZTsKLSAgICBhdXRvIGNv
bmRpdGlvbiA9IGlzU3VzcGVuc2lvbkltbWluZW50ID8gV2ViSURCU2VydmVyOjpTdXNwZW5zaW9u
Q29uZGl0aW9uOjpBbHdheXMgOiBXZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25Db25kaXRpb246Oklm
SWRsZTsKLSAgICBmb3IgKGF1dG8mIHNlcnZlciA6IG1fd2ViSURCU2VydmVycy52YWx1ZXMoKSkK
LSAgICAgICAgYWxsU3VzcGVuZGVkICY9IHNlcnZlci0+c3VzcGVuZChjb25kaXRpb24pOwotCi0g
ICAgaWYgKGFsbFN1c3BlbmRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUnVuTG9vcDo6bWFp
bigpLmRpc3BhdGNoQWZ0ZXIoNV9zLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhp
cyksIHN1c3BlbnNpb25JZGVudGlmaWVyID0gbV9zdXNwZW5zaW9uSWRlbnRpZmllcl0gewotICAg
ICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICgh
bV9zaG91bGRTdXNwZW5kSURCU2VydmVycyB8fCBzdXNwZW5zaW9uSWRlbnRpZmllciAhPSBtX3N1
c3BlbnNpb25JZGVudGlmaWVyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGZvciAo
YXV0byYgc2VydmVyIDogbV93ZWJJREJTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICAgICAgc2Vy
dmVyLT5zdXNwZW5kKFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlzKTsK
LSAgICB9KTsKLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZChib29s
IGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAt
IE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCksIGlzU3VzcGVuc2lvbkltbWluZW50
PSVkIiwgdGhpcywgaXNTdXNwZW5zaW9uSW1taW5lbnQpOwpAQCAtMjI0NiwxNSArMjIyMiwyMiBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKGJvb2wgaXNTdXNwZW5zaW9u
SW1taW5lbnQsIENvbXBsZXRpb25IYW5kbAogCiAgICAgbG93TWVtb3J5SGFuZGxlcihDcml0aWNh
bDo6WWVzKTsKIAotICAgIFJlZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNrQWdncmVn
YXRvciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFt0aGlzLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBSRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVU
b1N1c3BlbmQoKSBQcm9jZXNzIGlzIHJlYWR5IHRvIHN1c3BlbmQiLCB0aGlzKTsKLSAgICAgICAg
VU5VU0VEX1ZBUklBQkxFKHRoaXMpOworICAgIG1fc2hvdWxkU3VzcGVuZCA9IHRydWU7CisgICAg
KyttX3N1c3BlbnNpb25JZGVudGlmaWVyOworCisgICAgUmVmUHRyPENhbGxiYWNrQWdncmVnYXRv
cj4gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9yOjpjcmVhdGUoW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBzdXNwZW5zaW9uSWRlbnRpZmllciA9IG1f
c3VzcGVuc2lvbklkZW50aWZpZXIsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgfSk7CisKKyAgICAgICAgaWYg
KCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIW1fc2hvdWxk
U3VzcGVuZCB8fCBzdXNwZW5zaW9uSWRlbnRpZmllciAhPSBtX3N1c3BlbnNpb25JZGVudGlmaWVy
KQorICAgICAgICAgICAgcmV0dXJuOwogICAgIAotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCi0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdXNwZW5kKFtj
YWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7Ci0jZW5kaWYKKyAgICAgICAgUkVMRUFTRV9MT0coUHJv
Y2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCkg
UHJvY2VzcyBpcyByZWFkeSB0byBzdXNwZW5kIiwgdGhpcyk7CisgICAgICAgIG1fZGF0YWJhc2VB
c3NlcnRpb25NYW5hZ2VyLnN1c3BlbmQoKTsKKyAgICB9KTsKIAogICAgIGZvckVhY2hOZXR3b3Jr
U2Vzc2lvbihbJl0gKGF1dG8mIG5ldHdvcmtTZXNzaW9uKSB7CiAgICAgICAgIHBsYXRmb3JtRmx1
c2hDb29raWVzKG5ldHdvcmtTZXNzaW9uLnNlc3Npb25JRCgpLCBbY2FsbGJhY2tBZ2dyZWdhdG9y
XSB7IH0pOwpAQCAtMjI3MCw3ICsyMjUzLDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnByZXBh
cmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRsCiAg
ICAgfQogI2VuZGlmCiAKLSAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5zdXNwZW5kKFtjYWxsYmFj
a0FnZ3JlZ2F0b3JdIHsgfSk7CisgICAgaWYgKGlzU3VzcGVuc2lvbkltbWluZW50KQorICAgICAg
ICBtX2RhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlci5zdXNwZW5kKCk7CisgICAgZWxzZSB7CisgICAg
ICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPnN1c3BlbmQoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9
KTsKKyAgICAgICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX3dlYklEQlNlcnZlcnMudmFsdWVzKCkp
CisgICAgICAgICAgICBzZXJ2ZXItPnN1c3BlbmQoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsK
KyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgICAgICBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1c3BlbmQoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsK
KyNlbmRpZgorICAgIH0KIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6YXBwbGljYXRpb25EaWRF
bnRlckJhY2tncm91bmQoKQpAQCAtMjI5MywyMiArMjI4NSwyMCBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzOjpyZXN1bWUoKQogewogICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1fd2ViUHJvY2Vz
c0Nvbm5lY3Rpb25zLnZhbHVlcygpKQogICAgICAgICBjb25uZWN0aW9uLT5lbmRTdXNwZW5zaW9u
KCk7Ci0KLSNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzdW1lKCk7Ci0jZW5kaWYKICAgICAKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiAgICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX3N3U2VydmVycy52
YWx1ZXMoKSkKICAgICAgICAgc2VydmVyLT5lbmRTdXNwZW5zaW9uKCk7CiAjZW5kaWYKLSNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQorCisgICAgbV9zaG91bGRTdXNwZW5kID0gZmFsc2U7CisgICAg
bV9kYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIucmVzdW1lKCk7CisgICAgbV9zdG9yYWdlTWFuYWdl
clNldC0+cmVzdW1lKCk7CiAgICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX3dlYklEQlNlcnZlcnMu
dmFsdWVzKCkpCiAgICAgICAgIHNlcnZlci0+cmVzdW1lKCk7Ci0gICAgbV9zaG91bGRTdXNwZW5k
SURCU2VydmVycyA9IGZhbHNlOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1Mp
CisgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXN1bWUoKTsKICNlbmRpZgot
Ci0gICAgbV9zdG9yYWdlTWFuYWdlclNldC0+cmVzdW1lKCk7CiB9CiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OnByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCkBAIC0yMzcwLDggKzIz
NjAsOCBAQCBSZWY8V2ViSURCU2VydmVyPiBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRlV2ViSURCU2Vy
dmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICB9OwogCiAgICAgYXV0byByZXN1bHQg
PSBXZWJJREJTZXJ2ZXI6OmNyZWF0ZShzZXNzaW9uSUQsIHBhdGgsIFdURk1vdmUoc3BhY2VSZXF1
ZXN0ZXIpKTsKLSAgICBpZiAobV9zaG91bGRTdXNwZW5kSURCU2VydmVycykKLSAgICAgICAgcmVz
dWx0LT5zdXNwZW5kKFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlzKTsK
KyAgICBpZiAobV9zaG91bGRTdXNwZW5kKQorICAgICAgICByZXN1bHQtPnN1c3BlbmQoW10geyB9
KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggZjA2ZGFkNDcyOWJkZmJlYTc1M2ZmOGM5M2FhM2U3
NWE5YWQ4OGIwMy4uYTE5ZmI5Yzc1ODY5ZjYwZDdhMGU0NzBjYTQ4NmMwNGIwM2RlZTkwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjks
NiArMjksNyBAQAogI2luY2x1ZGUgIkF1eGlsaWFyeVByb2Nlc3MuaCIKICNpbmNsdWRlICJDYWNo
ZU1vZGVsLmgiCiAjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQXNz
ZXJ0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNsdWRlICJEb3du
bG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuaCIK
QEAgLTYxLDEwICs2Miw2IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9XZWFrUHRyLmg+CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotI2luY2x1ZGUgIldl
YlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIgotI2VuZGlmCi0KICNpZiBQTEFURk9STShDT0NPQSkK
ICNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KIHR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRU
UENvb2tpZVN0b3JhZ2UqICBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwpAQCAtNDg2LDcgKzQ4Myw2
IEBAIHByaXZhdGU6CiAgICAgUmVmPFdlYklEQlNlcnZlcj4gY3JlYXRlV2ViSURCU2VydmVyKFBB
TDo6U2Vzc2lvbklEKTsKICAgICB2b2lkIHNldFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VySURC
Um9vdFBhdGgoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgaWRiUm9vdFBhdGgpOwogICAg
IHZvaWQgcmVtb3ZlV2ViSURCU2VydmVySWZQb3NzaWJsZShQQUw6OlNlc3Npb25JRCk7Ci0gICAg
dm9pZCBzdXNwZW5kSURCU2VydmVycyhib29sIGlzU3VzcGVuc2lvbkltbWluZW50KTsKIAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGRpZENyZWF0ZVdvcmtlckNvbnRleHRQ
cm9jZXNzQ29ubmVjdGlvbihjb25zdCBJUEM6OkF0dGFjaG1lbnQmKTsKQEAgLTUwMCwxMCArNDk2
LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKFBBTDo6U2Vz
c2lvbklELCBib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3RyaW5nJiYgc2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6
SGFuZGxlJik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgdm9pZCBz
ZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sKTsKLSNlbmRpZgotCiAgICAgdm9pZCBmaXJlUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRUaW1lckltbWVkaWF0ZWx5KFBBTDo6U2Vzc2lvbklEKTsKIAog
ICAgIGNsYXNzIFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyIHsKQEAgLTU3NywxNSArNTY5LDEy
IEBAIHByaXZhdGU6CiAgICAgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIgbV9uZXR3b3Jr
Q29udGVudFJ1bGVMaXN0TWFuYWdlcjsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKLSAgICBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIgbV93ZWJTUUxpdGVEYXRhYmFzZVRyYWNr
ZXI7Ci0gICAgUmVmUHRyPFByb2Nlc3NBc3NlcnRpb24+IG1faG9sZGluZ0xvY2tlZEZpbGVBc3Nl
cnRpb247Ci0jZW5kaWYKKyAgICBEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIgbV9kYXRhYmFzZUFz
c2VydGlvbk1hbmFnZXI7CisgICAgYm9vbCBtX3Nob3VsZFN1c3BlbmQgeyBmYWxzZSB9OworICAg
IHVpbnQ2NF90IG1fc3VzcGVuc2lvbklkZW50aWZpZXIgeyAwIH07CiAKICAgICBIYXNoTWFwPFBB
TDo6U2Vzc2lvbklELCBTdHJpbmc+IG1faWRiRGF0YWJhc2VQYXRoczsKICAgICBIYXNoTWFwPFBB
TDo6U2Vzc2lvbklELCBSZWZQdHI8V2ViSURCU2VydmVyPj4gbV93ZWJJREJTZXJ2ZXJzOwotICAg
IGJvb2wgbV9zaG91bGRTdXNwZW5kSURCU2VydmVycyB7IGZhbHNlIH07Ci0gICAgdWludDY0X3Qg
bV9zdXNwZW5zaW9uSWRlbnRpZmllciB7IDAgfTsKICAgICAKICNpZiBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCiAgICAgc3RydWN0IFNlcnZpY2VXb3JrZXJJbmZvIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0KaW5kZXggYTFl
MDkxNDJiOGIzYTM0YTI3MGYzYmY1MGY5NjBhMTZkZTcxNTc5Yy4uNWQwMDEwZTAyYjI0MDFlODRm
NDU1NDc4OTJhMTY5MzA0NDkzNTMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0KQEAgLTEwMCwzMiArMTAwLDYgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1lbnRPdmVycmlk
ZShDb21wbGV0aW9uSGFuZGxlcjx2b2kKIAogI2VuZGlmIC8vICFQTEFURk9STShNQUNDQVRBTFlT
VCkKIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCBp
c0hvbGRpbmdMb2NrZWRGaWxlcykKLXsKLSAgICBpZiAoIWlzSG9sZGluZ0xvY2tlZEZpbGVzKSB7
Ci0gICAgICAgIG1faG9sZGluZ0xvY2tlZEZpbGVBc3NlcnRpb24gPSBudWxscHRyOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG1faG9sZGluZ0xvY2tlZEZpbGVBc3NlcnRpb24g
JiYgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbi0+aXNWYWxpZCgpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICAvLyBXZSBzeW5jaHJvbm91c2x5IHRha2UgYSBwcm9jZXNzIGFzc2VydGlvbiB3
aGVuIGJlZ2lubmluZyBhIFNRTGl0ZSB0cmFuc2FjdGlvbiBzbyB0aGF0IHdlIGRvbid0IGdldCBz
dXNwZW5kZWQKLSAgICAvLyB3aGlsZSBob2xkaW5nIGEgbG9ja2VkIGZpbGUuIFdlIHdvdWxkIGdl
dCBraWxsZWQgaWYgc3VzcGVuZGVkIHdoaWxlIGhvbGRpbmcgbG9ja2VkIGZpbGVzLgotICAgIG1f
aG9sZGluZ0xvY2tlZEZpbGVBc3NlcnRpb24gPSBQcm9jZXNzQXNzZXJ0aW9uOjpjcmVhdGUoZ2V0
Q3VycmVudFByb2Nlc3NJRCgpLCAiTmV0d29yayBQcm9jZXNzIGlzIGhvbGRpbmcgbG9ja2VkIGZp
bGVzIl9zLCBQcm9jZXNzQXNzZXJ0aW9uVHlwZTo6RmluaXNoVGFza0ludGVycnVwdGFibGUsIFBy
b2Nlc3NBc3NlcnRpb246Ok1vZGU6OlN5bmMpOwotICAgIG1faG9sZGluZ0xvY2tlZEZpbGVBc3Nl
cnRpb24tPnNldFByZXBhcmVGb3JJbnZhbGlkYXRpb25IYW5kbGVyKFt0aGlzLCB3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJUKGlzTWFpblJ1
bkxvb3AoKSk7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgaWYgKCFtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJzKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIGZvciAoYXV0byYgc2VydmVyIDogbV93ZWJJREJTZXJ2ZXJzLnZhbHVl
cygpKQotICAgICAgICAgICAgc2VydmVyLT5zdXNwZW5kKCk7Ci0gICAgfSk7Ci19Ci0KIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZv
cm1hdFJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFk
ZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCmluZGV4IGViZjcyMTI0MjNlOWNkNWUxN2E0Mjc1YjU5
YWFiOGQxOThjNjk1YjguLjAzZTE5OWUxMWJmMmEwODFkOTA0YzI2YWY5ZTg2Yzg4OTZiZTc0YzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9N
ZWRpYUZvcm1hdFJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlh
Rm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvVmlkZW9UcmFja1ByaXZhdGUuaD4KICNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9uL01lZGlh
VGltZUFWRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5o
PgogI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVl
Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCAyOWY3ZmUwN2RiNjZiZGUzMGE3MTViNTlm
NzFlNGYxM2JhNTUzMzgzLi5iMTk4NTBiYTBjOTE5MzkxOTBkNzdiODhjZjc0MzQyMTJkMzExODc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0xNDMsNiArMTQzLDcgQEAgU2hhcmVkL0FwcGxl
UGF5L21hYy9XZWJQYXltZW50Q29vcmRpbmF0b3JQcm94eU1hYy5tbQogCiBTaGFyZWQvQVBJV2Vi
QXJjaGl2ZS5tbQogU2hhcmVkL0FQSVdlYkFyY2hpdmVSZXNvdXJjZS5tbQorU2hhcmVkL0RhdGFi
YXNlQXNzZXJ0aW9uTWFuYWdlci5jcHAKIFNoYXJlZC9Eb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1t
CiBTaGFyZWQvRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5jcHAKIFNoYXJlZC9WaXNpYmxlQ29u
dGVudFJlY3RVcGRhdGVJbmZvLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjI0NjA2Y2M1ZTE1ZDE4MDhmNTU5MzIzNjE1OTkzNGQ5
NzFiMmY5Yi4uN2FlNDQ1ZGM3MTJjNjE3YmQ0ZGRjOTU1MzVhZmQxMTViYzY3ODFlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zLDcg
KzMsNyBAQAogCWFyY2hpdmVWZXJzaW9uID0gMTsKIAljbGFzc2VzID0gewogCX07Ci0Jb2JqZWN0
VmVyc2lvbiA9IDUyOworCW9iamVjdFZlcnNpb24gPSA1NDsKIAlvYmplY3RzID0gewogCiAvKiBC
ZWdpbiBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLwpAQCAtMTUxMyw2ICsxNTEzLDcgQEAK
IAkJOTNENkI3QjkyNTUzNEExNzAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNz
aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzRDZCN0I3MjU1MzRBMTEwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlz
c2lvbkNhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOTNFNkE0RUUxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTZBNEVEMUJD
NUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGNTQ5QjQxRTMxNzRCNzAwMEU3MjM5IC8q
IFdLU25hcHNob3RDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0Y1NDlCMzFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENv
bmZpZ3VyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07
IH07CisJCTkzRjlCNjE0MjZBNjI3NjQwMDQxRjk2RiAvKiBEYXRhYmFzZUFzc2VydGlvbk1hbmFn
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjlC
NjEzMjZBNjI3NEMwMDQxRjk2RiAvKiBEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIuaCAqLzsgfTsK
IAkJOTUwRjI4ODAyNTI0MTRFQTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwRjI4N0UyNTI0
MTRFOTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5oICovOyB9OwogCQk5NTkzNjc1
RjI1MkU1RTMxMDBEM0YwQTAgLyogV0tTdHlsdXNEZXZpY2VPYnNlcnZlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTU5MzY3NUQyNTJFNUUzMDAwRDNG
MEEwIC8qIFdLU3R5bHVzRGV2aWNlT2JzZXJ2ZXIuaCAqLzsgfTsKIAkJOTVDOTQzOTEyNTIzQzBE
MDAwNTRGM0Q1IC8qIEJhc2VCb2FyZFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTVDOTQzOTAyNTIzQzBEMDAwNTRGM0Q1IC8qIEJhc2VCb2FyZFNQ
SS5oICovOyB9OwpAQCAtNDk0Nyw2ICs0OTQ4LDggQEAKIAkJOTNFNkE0RUQxQkM1REQzOTAwRjhB
MEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gX1dLSGl0VGVzdFJlc3VsdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y1
NDlCMzFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNTQ5QjUxRTMxNzREQTAwMEU3MjM5IC8qIFdL
U25hcHNob3RDb25maWd1cmF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTkzRjlCNjEyMjZBNjI3NEMwMDQxRjk2RiAvKiBEYXRhYmFzZUFzc2VydGlvbk1h
bmFnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTNGOUI2MTMyNkE2Mjc0QzAwNDFGOTZG
IC8qIERhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhYmFzZUFz
c2VydGlvbk1hbmFnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTUwRjI4N0Uy
NTI0MTRFOTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBXS01vdXNlRGV2aWNlT2JzZXJ2ZXIuaDsgcGF0aCA9IGlvcy9X
S01vdXNlRGV2aWNlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTUw
RjI4N0YyNTI0MTRFQTAwQjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLTW91c2VEZXZpY2VPYnNlcnZlci5t
bTsgcGF0aCA9IGlvcy9XS01vdXNlRGV2aWNlT2JzZXJ2ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk1OTM2NzVEMjUyRTVFMzAwMEQzRjBBMCAvKiBXS1N0eWx1c0RldmljZU9i
c2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLU3R5bHVzRGV2aWNl
T2JzZXJ2ZXIuaDsgcGF0aCA9IGlvcy9XS1N0eWx1c0RldmljZU9ic2VydmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01OTk4LDcgKzYwMDEsNiBAQAogCQlGNDBCQkI0MDI1N0ZG
NDZFMDA2NzQ2M0EgLyogR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR1BVUHJvY2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjQwRDFCNjgyMjBCREMwRjAwQjQ5QTAxIC8qIFdlYkF1dG9jb3Jy
ZWN0aW9uQ29udGV4dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQu
aDsgcGF0aCA9IGlvcy9XZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRjQxMDU2NjEyMTMwNjk5QTAwOTIyODFEIC8qIEFQSUF0dGFjaG1lbnRD
b2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFQSUF0dGFjaG1lbnRDb2NvYS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRjQxNENFMkEyNjlEREVEMTAwQkQyMTZBIC8qIEdQ
VVByb2Nlc3NDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IEdQVVByb2Nlc3NDb2NvYS5tbTsgcGF0aCA9IGNvY29hL0dQVVByb2Nlc3NDb2NvYS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQxNENFMkMyNjlERTZFQTAwQkQyMTZBIC8qIFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJp
bmdCYWNrZW5kU3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQyRDYzM0Yy
MkEwRUZEMzAwRDJGQjNBIC8qIFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJBdXRvY29ycmVjdGlvbkRhdGEuaDsgcGF0aCA9IGlvcy9X
ZWJBdXRvY29ycmVjdGlvbkRhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQy
RDYzNDAyMkEwRUZEMzAwRDJGQjNBIC8qIFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5t
bTsgcGF0aCA9IGlvcy9XZWJBdXRvY29ycmVjdGlvbkRhdGEubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC02NzgyLDYgKzY3ODQsOCBAQAogCQkJCTUxMDZEN0JGMThCREJFNzMwMDBB
QjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHREYXRhLmNwcCAqLywKIAkJCQk1MTA2RDdDMDE4QkRC
RTczMDAwQUIxNjYgLyogQ29udGV4dE1lbnVDb250ZXh0RGF0YS5oICovLAogCQkJCTk5RjY0MkQy
MUZBQkUzNzgwMDk2MjFFOSAvKiBDb29yZGluYXRlU3lzdGVtLmggKi8sCisJCQkJOTNGOUI2MTIy
NkE2Mjc0QzAwNDFGOTZGIC8qIERhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlci5jcHAgKi8sCisJCQkJ
OTNGOUI2MTMyNkE2Mjc0QzAwNDFGOTZGIC8qIERhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlci5oICov
LAogCQkJCTk5MDM2QUU4MjNBOTcwODcwMDAwQjA2QSAvKiBEZWJ1Z2dhYmxlSW5mb0RhdGEuY3Bw
ICovLAogCQkJCTk5MDM2QUU3MjNBOTcwODcwMDAwQjA2QSAvKiBEZWJ1Z2dhYmxlSW5mb0RhdGEu
aCAqLywKIAkJCQkwRjE4OUNBQjI0NzQ5RjJGMDBFNThEODEgLyogRGlzcGxheUxpbmtPYnNlcnZl
cklELmggKi8sCkBAIC0xMTcxMiwxNCArMTE3MTYsNiBAQAogCQkJcGF0aCA9IGNhY2hlOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKLQkJRjQxNENFMjcyNjlEREU4MDAwQkQyMTZB
IC8qIGNvY29hICovID0gewotCQkJaXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJ
CQlGNDE0Q0UyQTI2OURERUQxMDBCRDIxNkEgLyogR1BVUHJvY2Vzc0NvY29hLm1tICovLAotCQkJ
KTsKLQkJCW5hbWUgPSBjb2NvYTsKLQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJ
CUY2Mzg5NTVBMTMzQkY1N0QwMDg5NDFENSAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTIwMjMsNiArMTIwMTksNyBAQAogCQkJCTU3NTk3RUJE
MjE4MTg0OTAwMDM3RjkyNCAvKiBDdGFwQXV0aGVudGljYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTc1OTdFQjkyMTgxMUQ5QTAwMzdGOTI0IC8qIEN0YXBIaWREcml2ZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTU3MERBQUNBMjMwMzg1RkQwMEU4RkMwNCAvKiBDdGFwTmZjRHJpdmVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQk5M0Y5QjYxNDI2QTYyNzY0MDA0MUY5NkYgLyogRGF0YWJhc2VBc3Nl
cnRpb25NYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDNTVGOTE3MTFDNTk2NzZFMDAyOUU5
MkQgLyogRGF0YURldGVjdGlvblJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNzUzODAx
ODNCRTUwRjAwNzJDQjE1IC8qIERhdGFSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5
MDM2QUU5MjNBOTcwODcwMDAwQjA2QSAvKiBEZWJ1Z2dhYmxlSW5mb0RhdGEuaCBpbiBIZWFkZXJz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFj
a2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAK
aW5kZXggZWVhMDAwNDRiYWZiZmJmMzVjZWY4ODY2ODlmNDA5NTRhZDljNGYyNC4uYzg1ODllYTY0
YTZiNGZmYTk4ZTY3NDIwZWFmZTk1ZjIwZmIxNDkwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVk
ZSAiU3RvcmFnZVRyYWNrZXJDbGllbnQuaCIKICNpbmNsdWRlICJXZWJTdG9yYWdlTmFtZXNwYWNl
UHJvdmlkZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
U1FMaXRlU3RhdGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CkBAIC0zODUsMTMgKzM4Niw2
IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OmRlbGV0ZUFsbE9yaWdpbnMoKQogICAgIH0pOwogfQog
Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLXN0YXRpYyB2b2lkIHRydW5jYXRlRGF0YWJhc2VG
aWxlKFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKLXsKLSAgICBzcWxpdGUzX2ZpbGVfY29udHJv
bChkYXRhYmFzZS5zcWxpdGUzSGFuZGxlKCksIDAsIFNRTElURV9UUlVOQ0FURV9EQVRBQkFTRSwg
MCk7Ci19Ci0jZW5kaWYKLQogdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdp
bnMoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwpAQCAtNDI5LDcgKzQyMyw3IEBA
IHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVBbGxPcmlnaW5zKCkKIAogICAgIGlmICht
X2RhdGFiYXNlLmlzT3BlbigpKSB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAg
dHJ1bmNhdGVEYXRhYmFzZUZpbGUobV9kYXRhYmFzZSk7CisgICAgICAgIFNRTGl0ZUZpbGVTeXN0
ZW06OnRydW5jYXRlRGF0YWJhc2VGaWxlKG1fZGF0YWJhc2Uuc3FsaXRlM0hhbmRsZSgpKTsKICNl
bmRpZgogICAgICAgICBtX2RhdGFiYXNlLmNsb3NlKCk7CiAgICAgfQpAQCAtNTQzLDcgKzUzNyw3
IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVPcmlnaW4oY29uc3QgU3RyaW5nJiBv
cmlnaW5JZGVudGlmaWVyKQogCiAgICAgaWYgKHNob3VsZERlbGV0ZVRyYWNrZXJGaWxlcykgewog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIHRydW5jYXRlRGF0YWJhc2VGaWxlKG1f
ZGF0YWJhc2UpOworICAgICAgICBTUUxpdGVGaWxlU3lzdGVtOjp0cnVuY2F0ZURhdGFiYXNlRmls
ZShtX2RhdGFiYXNlLnNxbGl0ZTNIYW5kbGUoKSk7CiAjZW5kaWYKICAgICAgICAgbV9kYXRhYmFz
ZS5jbG9zZSgpOwogI2lmICFQTEFURk9STShJT1NfRkFNSUxZKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434125</attachid>
            <date>2021-07-23 14:38:01 -0700</date>
            <delta_ts>2021-07-23 15:34:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227887-20210723143800.patch</filename>
            <type>text/plain</type>
            <size>59092</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzY0MDEyZGQxYzQwN2Rl
ODQ5ODM5NjQzMGQ1MGE0N2VhNDc0NjExMy4uYmM2MTYyMTc4ZDdiMTRkNzBmZTYxYjNiNWU3NzE3
OTc0YThhMWQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTA3LTIzICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgYWxsIGZpbGUgbG9j
a3Mgc3luY2hyb25vdXNseSBpbiBuZXR3b3JrIHByb2Nlc3Mgd2hlbiBpdCBpcyBhYm91dCB0byBz
dXNwZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mjc4ODcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgwODAyMjI0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZl
cjo6c3RvcERhdGFiYXNlQWN0aXZpdGllc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6SURCU2VydmVyOjpoYXNEYXRhYmFzZUFjdGl2aXRpZXNPbk1haW5UaHJlYWQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnN0
b3BEYXRhYmFzZUFjdGl2aXRpZXNPbk1haW5UaHJlYWQpOiBEZWxldGVkLgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaDoKKyAgICAgICAgKiBTb3VyY2VzLnR4
dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNR
TGl0ZURhdGFiYXNlOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OndhbEF1dG9tYXRpY1RydW5j
YXRpb25Ib29rKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjp1c2VXQUxKb3Vy
bmFsTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6Y2xvc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmludGVycnVwdCk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZTo6c2V0SXNSdW5uaW5nVHJhbnNhY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmlzUnVubmluZ1RyYW5zYWN0aW9uIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVGaWxl
U3lzdGVtOjp0cnVuY2F0ZURhdGFiYXNlRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NR
TGl0ZUZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlTG9ja1Njb3Bl
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6OnNldEltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlTG9ja1Njb3BlOjppc0luc2lkZVNjb3BlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZTo6U1FMaXRlTG9ja1Njb3BlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZTo6flNRTGl0ZUxvY2tTY29wZSk6CisgICAgICAg
IChXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6OmFkZERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTGl0ZUxvY2tTY29wZTo6cmVtb3ZlRGF0YWJhc2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L3NxbC9TUUxpdGVMb2NrU2NvcGUuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vc3FsL1NR
TGl0ZVN0YXRlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OnNo
b3VsZEV4ZWN1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50OjpzdGVwKToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudDo6c3RlcFdpdGhvdXRMb2NrU2NvcGUp
OgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FM
aXRlVHJhbnNhY3Rpb246OmJlZ2luKToKKwogMjAyMS0wNy0yMiAgVsOtY3RvciBNYW51ZWwgSsOh
cXVleiBMZWFsICA8dmphcXVlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIENvbXBpbGF0aW9uIGVy
cm9yIHdpdGggZ2NjIHZlcnNpb24gOS4zLjAgKEJ1aWxkcm9vdCAyMDIwLjA4LTE0LWdlNWEyYTkw
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBjYzBjMDA1ZjkyM2IwNzY2NDBhM2Y0NjU5MmVmYzRlNjAzMjhlMzYzLi5k
MTc0NjhjMGFmYjE0YzhkYmU0MWFlYzdjYTViN2VlMzdiYjViY2EwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDQzIEBACisyMDIxLTA3LTIzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgor
CisgICAgICAgIERyb3AgYWxsIGZpbGUgbG9ja3Mgc3luY2hyb25vdXNseSBpbiBuZXR3b3JrIHBy
b2Nlc3Mgd2hlbiBpdCBpcyBhYm91dCB0byBzdXNwZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjc4ODcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzgwODAyMjI0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYklEQlNlcnZlcjo6fldlYklEQlNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6
OldlYklEQlNlcnZlcjo6c3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6
cmVzdW1lKToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
SW5kZXhlZERCL1dlYklEQlNlcnZlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQ
cm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3Bl
bmQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmNyZWF0ZVdlYklEQlNlcnZlcik6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzdXNwZW5kSURCU2VydmVycyk6IERlbGV0ZWQuCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyk6IERlbGV0ZWQuCisgICAgICAgICog
U2hhcmVkL0RhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0OjpEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXI6OkRhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlcik6
CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlcjo6fkRhdGFiYXNlQXNz
ZXJ0aW9uTWFuYWdlcik6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uTWFuYWdl
cjo6c2NvcGVCZWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZUFzc2VydGlvbk1hbmFn
ZXI6OnNjb3BlRW5kcyk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uTWFuYWdl
cjo6aXNBbnlEYXRhYmFzZUxvY2tlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNl
QXNzZXJ0aW9uTWFuYWdlcjo6c2NoZWR1bGVBc3NlcnRpb25SZWxlYXNlKToKKyAgICAgICAgKFdl
YktpdDo6RGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyOjpyZWxlYXNlQXNzZXJ0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6RGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyOjphZGREYXRhYmFzZSk6CisgICAg
ICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlcjo6cmVtb3ZlRGF0YWJhc2UpOgor
ICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXI6OnN1c3BlbmQpOgorICAg
ICAgICAoV2ViS2l0OjpEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXI6OnJlc3VtZSk6CisgICAgICAg
ICogU2hhcmVkL0RhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBT
aGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcDoKKyAgICAg
ICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorCiAyMDIxLTA3LTIyICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBh
cHBsZS5jb20+CiAKICAgICAgICAgQXZvaWQgUXVpY2sgTm90ZSBvdmVybGF5IHdoZW4gc2Nyb2xs
aW5nIHRvIHNob3cgYSBoaWdobGlnaHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXggNWE5M2E0ZDdl
ZjA5NWFjYzgxMGU2NjljYmNhNGIyNWY0ZmUwNDJkZi4uZGU4NDBjMzVhMzI3N2U4N2ViOTg3NTNj
MTE3NDllNjAxMTFlNTk4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAyMS0wNy0yMyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKworICAgICAgICBE
cm9wIGFsbCBmaWxlIGxvY2tzIHN5bmNocm9ub3VzbHkgaW4gbmV0d29yayBwcm9jZXNzIHdoZW4g
aXQgaXMgYWJvdXQgdG8gc3VzcGVuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI3ODg3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MDgwMjIyND4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3Jh
Z2UvU3RvcmFnZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6
c3luY0RlbGV0ZUFsbE9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlVHJhY2tlcjo6
c3luY0RlbGV0ZU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OnRydW5jYXRlRGF0YWJhc2VGaWxl
KTogRGVsZXRlZC4KKwogMjAyMS0wNy0xOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNv
bT4KIAogICAgICAgICBJbXBsZW1lbnQgSURCVHJhbnNhY3Rpb24uY29tbWl0KCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAK
aW5kZXggYjRkNTU5NDU0MjQ4MDlhZjI2OGIwYzc0Mzg3NDFhNTYyOTE4ZGMyNC4uMDg2ZWQxMzE0
NjI1MDk5MTJhMDUzYjE3YmYwMjYyZDliYzRlYzA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTc2NywyNiAr
NzY3LDkgQEAgdm9pZCBJREJTZXJ2ZXI6OnVwZ3JhZGVGaWxlc0lmTmVjZXNzYXJ5KCkKICAgICAg
ICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG5ld1ZlcnNpb25EaXJlY3RvcnkpOwog
fQogCi1ib29sIElEQlNlcnZlcjo6aGFzRGF0YWJhc2VBY3Rpdml0aWVzT25NYWluVGhyZWFkKCkg
Y29uc3QKK3ZvaWQgSURCU2VydmVyOjpzdG9wRGF0YWJhc2VBY3Rpdml0aWVzSWZOZWVkZWQoKQog
ewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKG1fbG9jay5pc0hlbGQo
KSk7Ci0KLSAgICBpZiAobV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6IG1fdW5pcXVlSURCRGF0YWJhc2VN
YXAudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKCFkYXRhYmFzZS0+aWRlbnRpZmllcigpLmlzVHJh
bnNpZW50KCkgJiYgZGF0YWJhc2UtPmhhc0FjdGl2ZVRyYW5zYWN0aW9ucygpKQotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9p
ZCBJREJTZXJ2ZXI6OnN0b3BEYXRhYmFzZUFjdGl2aXRpZXNPbk1haW5UaHJlYWQoKQotewotICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKG1fbG9jay5pc0hlbGQoKSk7Cisg
ICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKICAgICAvLyBPbmx5IHN0b3Agbm9uLWVwaGVt
ZXJhbCBJREJTZXJ2ZXIgdGhhdCBjYW4gaG9sZCBkYXRhYmFzZSBmaWxlIGxvY2suCiAgICAgaWYg
KG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKaW5kZXggZDg4MzY0OWE1YzhkNWI1OWYw
MmMyYmRhY2RkZTY3OGExY2EzYzQyZi4uYmFhODZmNWNhNGIzNDAxODM1MTcxNjE3NjU4MGQ5ZmM4
NjRiODM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJTZXJ2ZXIuaApAQCAtMTA3LDggKzEwNyw3IEBAIHB1YmxpYzoKICAgICBTdG9yYWdl
UXVvdGFNYW5hZ2VyOjpEZWNpc2lvbiByZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50T3JpZ2luJiwg
dWludDY0X3QgdGFza1NpemUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB1aW50NjRfdCBk
aXNrVXNhZ2UoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBDbGllbnRPcmlnaW4m
KTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzRGF0YWJhc2VBY3Rpdml0aWVzT25NYWlu
VGhyZWFkKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wRGF0YWJhc2VBY3Rp
dml0aWVzT25NYWluVGhyZWFkKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wRGF0YWJh
c2VBY3Rpdml0aWVzSWZOZWVkZWQoKTsKIAogcHJpdmF0ZToKICAgICBVbmlxdWVJREJEYXRhYmFz
ZSYgZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBJREJEYXRhYmFzZUlkZW50aWZp
ZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKaW5kZXggZTc2OTRjMmNlYjkxYTU2M2ViODYxNzMzMzVhNjUxYmNm
ZjI3ZDE2Ny4uOTM1YTBjMzhhNTcxYzdkYTAzZWZlYTRhOTM1MWJhOTA2MGYxYzZmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKQEAgLTIxOTAsNiArMjE5MCw3IEBAIHBsYXRmb3JtL3NxbC9TUUxpdGVBdXRob3Jp
emVyLmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAogcGxhdGZvcm0vc3FsL1NR
TGl0ZURhdGFiYXNlVHJhY2tlci5jcHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNw
cAorcGxhdGZvcm0vc3FsL1NRTGl0ZUxvY2tTY29wZS5jcHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVT
dGF0ZW1lbnQuY3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50QXV0b1Jlc2V0U2NvcGUu
Y3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjAxYjk5MjdlM2Nj
NjIyZTljY2MwMGIxMWViMmEyY2RkMDNmNzUzNy4uNmFkNDRmNzA3YTBhZWMyMjUzYmQxNjNhYTIx
NmY1Nzk5ODc2ODAzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMjkzNiw2ICsyOTM2LDcgQEAKIAkJOTNGNkI4MUYyNTY3QTA4
QzAwQTA4NDg4IC8qIFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjZCODFDMjU2NzlGNzAw
MEEwODQ4OCAvKiBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGNkI4MjIyNTY3QTY1
NjAwQTA4NDg4IC8qIFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGNkI4MUIyNTY3OUY2RjAwQTA4
NDg4IC8qIFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjZGMUVFMTI3RjcwQjEwMDU1Q0Iw
NiAvKiBXZWJHTENvbnRleHRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNGNkYxRUIxMjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdMQ29udGV4dEV2
ZW50LmggKi87IH07CisJCTkzRjhGMEYzMjY5ODI2MTMwMEE5RjMzMSAvKiBTUUxpdGVMb2NrU2Nv
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhG
MEYxMjY5ODI2MTIwMEE5RjMzMSAvKiBTUUxpdGVMb2NrU2NvcGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Y5MjU0MzBGN0VGNUI4MDA3RTM3
QzkgLyogUmFkaW9CdXR0b25Hcm91cHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzRjkyNTQxMEY3RUY1QjgwMDdFMzdDOSAvKiBSYWRpb0J1dHRvbkdy
b3Vwcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTkzRjlCNkUxMEJBMEZCNzIwMDg1NDA2NCAvKiBKU0NvbW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjlCNkRGMEJBMEZCNzIwMDg1NDA2NCAv
KiBKU0NvbW1lbnQuaCAqLzsgfTsKIAkJOTNGOUI3QTEwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RB
VEFTZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5M0Y5Qjc5RjBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uaCAqLzsgfTsKQEAg
LTExODQ4LDYgKzExODQ5LDggQEAKIAkJOTNGOEIzMDUwQTMwMEZFMTAwRjYxQUI4IC8qIENvZGVH
ZW5lcmF0b3IucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gQ29kZUdlbmVy
YXRvci5wbTsgcGF0aCA9IHNjcmlwdHMvQ29kZUdlbmVyYXRvci5wbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTNGOEIzMDYwQTMwMEZFQTAwRjYxQUI4IC8qIENvZGVHZW5lcmF0b3JK
Uy5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBDb2RlR2VuZXJhdG9ySlMu
cG07IHBhdGggPSBzY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+Ijsgd3JhcHNMaW5lcyA9IDA7IH07CiAJCTkzRjhCMzA3MEEzMDBGRUEwMEY2MUFCOCAvKiBn
ZW5lcmF0ZS1iaW5kaW5ncy5wbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSAi
Z2VuZXJhdGUtYmluZGluZ3MucGwiOyBwYXRoID0gInNjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3Mu
cGwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Y4RjBFRjI2OTgyNjEyMDBBOUYz
MzEgLyogU1FMaXRlTG9ja1Njb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNRTGl0ZUxvY2tTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTkzRjhGMEYxMjY5ODI2MTIwMEE5RjMzMSAvKiBTUUxpdGVMb2NrU2NvcGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMaXRlTG9ja1Njb3BlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzRjkyNTQxMEY3RUY1QjgwMDdFMzdDOSAvKiBSYWRpb0J1dHRvbkdy
b3Vwcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYWRpb0J1dHRvbkdyb3Vw
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y5MjU0MjBGN0VGNUI4MDA3RTM3
QzkgLyogUmFkaW9CdXR0b25Hcm91cHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmFkaW9CdXR0b25Hcm91cHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5M0Y5QjZERTBCQTBGQjcyMDA4NTQwNjQgLyogSlNDb21tZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ29tbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0xODU1MCw2ICsxODU1Myw4IEBACiAJCQkJN0U0NzRFMUIxMjQ5NERD
OTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oICovLAogCQkJCUI1QTY4
NDIzMEZGQUJFQUEwMEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmNwcCAqLywKIAkJCQlCNUE2
ODQyMTBGRkFCRTk4MDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5oICovLAorCQkJCTkzRjhG
MEVGMjY5ODI2MTIwMEE5RjMzMSAvKiBTUUxpdGVMb2NrU2NvcGUuY3BwICovLAorCQkJCTkzRjhG
MEYxMjY5ODI2MTIwMEE5RjMzMSAvKiBTUUxpdGVMb2NrU2NvcGUuaCAqLywKIAkJCQkxQTIyNDY0
NTBDQzk4RERCMDBDMDUyNDAgLyogU1FMaXRlU3RhdGVtZW50LmNwcCAqLywKIAkJCQkxQTIyNDY0
NjBDQzk4RERCMDBDMDUyNDAgLyogU1FMaXRlU3RhdGVtZW50LmggKi8sCiAJCQkJRUJFNUIyMjcy
NDVBMjlDRjAwM0E1QTg4IC8qIFNRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3BlLmNwcCAqLywK
QEAgLTM1NDEyLDYgKzM1NDE3LDcgQEAKIAkJCQk1MTJCREI0QjFDNDU2RkZBMDA2NDk0REYgLyog
U1FMaXRlSURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTFFQzEzMDFDNTBB
QkY1MDAzMkY5ODMgLyogU1FMaXRlSURCQ3Vyc29yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTFF
QzEyQzFDNTBBQkJGMDAzMkY5ODMgLyogU1FMaXRlSURCVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJz
ICovLAorCQkJCTkzRjhGMEYzMjY5ODI2MTMwMEE5RjMzMSAvKiBTUUxpdGVMb2NrU2NvcGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBMjI0NjRDMENDOThEREIwMEMwNTI0MCAvKiBTUUxpdGVTdGF0
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUVCRTVCMjI2MjQ1QTI2RUYwMDNBNUE4OCAvKiBT
UUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyMjQ2
NEUwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZVRyYW5zYWN0aW9uLmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuY3BwCmluZGV4
IGExMTEwMjU2ODFlNDY5MzEyM2ZiYzhjYjQ5MGE4MzcwZGIzOWMxODMuLmFlZDQ5ZGRhNTg4YmQ5
MjgxZWIwNjMxZmJhMzM4NzYyNmM0ZjM1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIk1l
bW9yeVJlbGVhc2UuaCIKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIKICNpbmNs
dWRlICJTUUxpdGVGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiU1FMaXRlTG9ja1Njb3BlLmgiCiAj
aW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8
c3FsaXRlMy5oPgpAQCAtMTE0LDcgKzExNSwxMyBAQCBib29sIFNRTGl0ZURhdGFiYXNlOjpvcGVu
KGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIE9wZW5Nb2RlIG9wZW5Nb2RlKQogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBtX29wZW5FcnJvciA9IHNxbGl0ZTNfb3Blbl92
MihGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZW5hbWUpLmRhdGEoKSwg
Jm1fZGIsIGZsYWdzLCBudWxscHRyKTsKKyAgICAgICAgeworICAgICAgICAgICAgU1FMaXRlTG9j
a1Njb3BlIGxvY2tTY29wZTsKKyAgICAgICAgICAgIG1fb3BlbkVycm9yID0gc3FsaXRlM19vcGVu
X3YyKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlbmFtZSkuZGF0YSgp
LCAmbV9kYiwgZmxhZ3MsIG51bGxwdHIpOworICAgICAgICAgICAgaWYgKG1fb3BlbkVycm9yID09
IFNRTElURV9PSykKKyAgICAgICAgICAgICAgICBsb2NrU2NvcGUuYWRkRGF0YWJhc2UoKnRoaXMp
OworICAgICAgICB9CisKICAgICAgICAgaWYgKG1fb3BlbkVycm9yICE9IFNRTElURV9PSykgewog
ICAgICAgICAgICAgbV9vcGVuRXJyb3JNZXNzYWdlID0gbV9kYiA/IHNxbGl0ZTNfZXJybXNnKG1f
ZGIpIDogInNxbGl0ZV9vcGVuIHJldHVybmVkIG51bGwiOwogICAgICAgICAgICAgTE9HX0VSUk9S
KCJTUUxpdGUgZGF0YWJhc2UgZmFpbGVkIHRvIGxvYWQgZnJvbSAlc1xuQ2F1c2UgLSAlcyIsIGZp
bGVuYW1lLmFzY2lpKCkuZGF0YSgpLApAQCAtMTY3LDYgKzE3NCw3IEBAIHN0YXRpYyBpbnQgd2Fs
QXV0b21hdGljVHJ1bmNhdGlvbkhvb2sodm9pZCogY29udGV4dCwgc3FsaXRlMyogZGIsIGNvbnN0
IGNoYXIqIGRiCiAKICAgICBpZiAod2FsUGFnZUNvdW50ID49IGNoZWNrcG9pbnRUaHJlc2hvbGQp
IHsKICAgICAgICAgaW50IG5ld1dhbFBhZ2VDb3VudCA9IDA7CisgICAgICAgIEFTU0VSVChTUUxp
dGVMb2NrU2NvcGU6OmlzSW5zaWRlU2NvcGUoKSk7CiAgICAgICAgIGludCByZXN1bHQgPSBzcWxp
dGUzX3dhbF9jaGVja3BvaW50X3YyKGRiLCBkYk5hbWUsIFNRTElURV9DSEVDS1BPSU5UX1RSVU5D
QVRFLCAmbmV3V2FsUGFnZUNvdW50LCBudWxscHRyKTsKIAogI2lmIExPR19ESVNBQkxFRApAQCAt
MTk0LDcgKzIwMiw2IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmVuYWJsZUF1dG9tYXRpY1dBTFRy
dW5jYXRpb24oKQogCiB2b2lkIFNRTGl0ZURhdGFiYXNlOjp1c2VXQUxKb3VybmFsTW9kZSgpCiB7
Ci0gICAgbV91c2VXQUwgPSB0cnVlOwogICAgIHsKICAgICAgICAgYXV0byB3YWxTdGF0ZW1lbnQg
PSBwcmVwYXJlU3RhdGVtZW50KCJQUkFHTUEgam91cm5hbF9tb2RlPVdBTDsiX3MpOwogICAgICAg
ICBpZiAod2FsU3RhdGVtZW50ICYmIHdhbFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cp
IHsKQEAgLTIzMiwxMiArMjM5LDEyIEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmNsb3NlKFNob3Vs
ZFNldEVycm9yU3RhdGUgc2hvdWxkU2V0RXJyb3JTdGF0ZSkKICAgICAgICAgfQogCiAgICAgICAg
IGludCBjbG9zZVJlc3VsdDsKLSAgICAgICAgaWYgKG1fdXNlV0FMKSB7Ci0gICAgICAgICAgICAv
LyBDbG9zZSBpbiB0aGUgc2NvcGUgb2YgY291bnRlciBhcyBpdCBtYXkgYWNxdWlyZSBsb2NrIG9m
IGRhdGFiYXNlLgorICAgICAgICB7CiAgICAgICAgICAgICBTUUxpdGVUcmFuc2FjdGlvbkluUHJv
Z3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7CisgICAgICAgICAgICBTUUxpdGVM
b2NrU2NvcGUgbG9ja1Njb3BlOwogICAgICAgICAgICAgY2xvc2VSZXN1bHQgPSBzcWxpdGUzX2Ns
b3NlKGRiKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBjbG9zZVJlc3VsdCA9IHNxbGl0
ZTNfY2xvc2UoZGIpOworICAgICAgICAgICAgbG9ja1Njb3BlLnJlbW92ZURhdGFiYXNlKCp0aGlz
KTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmIChjbG9zZVJlc3VsdCAhPSBTUUxJVEVfT0spCiAg
ICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTUUxEYXRhYmFzZSwgIlNRTGl0ZURhdGFiYXNl
OjpjbG9zZTogRmFpbGVkIHRvIGNsb3NlIGRhdGFiYXNlICglZCkgLSAle3B1YmxpY31zIiwgY2xv
c2VSZXN1bHQsIGxhc3RFcnJvck1zZygpKTsKQEAgLTQ1OCw4ICs0NjUsMTQgQEAgaW50IFNRTGl0
ZURhdGFiYXNlOjpydW5JbmNyZW1lbnRhbFZhY3V1bUNvbW1hbmQoKQogdm9pZCBTUUxpdGVEYXRh
YmFzZTo6aW50ZXJydXB0KCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhYmFzZUNsb3Np
bmdNdXRleCB9OwotICAgIGlmIChtX2RiKQotICAgICAgICBzcWxpdGUzX2ludGVycnVwdChtX2Ri
KTsKKyAgICAKKyAgICBpZiAoIW1fZGIpCisgICAgICAgIHJldHVybjsKKworICAgIHNxbGl0ZTNf
aW50ZXJydXB0KG1fZGIpOworCisgICAgaWYgKGF1dG8gcXVlcnkgPSBwcmVwYXJlU3RhdGVtZW50
KCJST0xMQkFDSyJfcykpCisgICAgICAgIHF1ZXJ5LT5zdGVwV2l0aG91dExvY2tTY29wZSgpOwog
fQogCiBpbnQ2NF90IFNRTGl0ZURhdGFiYXNlOjpsYXN0SW5zZXJ0Um93SUQoKQpAQCAtNzMzLDQg
Kzc0NiwxNCBAQCBFeHBlY3RlZDxVbmlxdWVSZWY8U1FMaXRlU3RhdGVtZW50PiwgaW50PiBTUUxp
dGVEYXRhYmFzZTo6cHJlcGFyZUhlYXBTdGF0ZW1lbnQoQQogICAgIHJldHVybiBVbmlxdWVSZWY8
U1FMaXRlU3RhdGVtZW50PigqbmV3IFNRTGl0ZVN0YXRlbWVudCgqdGhpcywgc3FsU3RhdGVtZW50
LnZhbHVlKCkpKTsKIH0KIAordm9pZCBTUUxpdGVEYXRhYmFzZTo6c2V0SXNSdW5uaW5nVHJhbnNh
Y3Rpb24oYm9vbCBpc1J1bm5pbmdUcmFuc2FjdGlvbikKK3sKKyAgICBtX2lzUnVubmluZ1RyYW5z
YWN0aW9uID0gaXNSdW5uaW5nVHJhbnNhY3Rpb247Cit9CisKK2Jvb2wgU1FMaXRlRGF0YWJhc2U6
OmlzUnVubmluZ1RyYW5zYWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc1J1bm5pbmdU
cmFuc2FjdGlvbjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAppbmRleCA0YjIyYzhmZTY4ZTM1ZmJkZDA5
NzI1ODY4YzRjOWEwZTVjYWIyY2YwLi40YjBkZGJmM2NkNThlNWMwY2Q1NGIyYTk2ODdkM2QwN2Yw
Y2M1NGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0
YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
aApAQCAtMTMwLDcgKzEzMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEF1dGhvcml6ZXIoRGF0
YWJhc2VBdXRob3JpemVyJik7CiAKICAgICBMb2NrJiBkYXRhYmFzZU11dGV4KCkgeyByZXR1cm4g
bV9sb2NraW5nTXV0ZXg7IH0KLSAgICBib29sIGlzQXV0b0NvbW1pdE9uKCkgY29uc3Q7CisgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBpc0F1dG9Db21taXRPbigpIGNvbnN0OwogCiAgICAgLy8gVGhl
IFNRTGl0ZSBBVVRPX1ZBQ1VVTSBwcmFnbWEgY2FuIGJlIGVpdGhlciBOT05FLCBGVUxMLCBvciBJ
TkNSRU1FTlRBTC4KICAgICAvLyBOT05FIC0gU1FMaXRlIGRvZXMgbm90IGRvIGFueSB2YWN1dW1p
bmcKQEAgLTE2Miw2ICsxNjIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbmNyZW1lbnRTdGF0ZW1l
bnRDb3VudCgpOwogICAgIHZvaWQgZGVjcmVtZW50U3RhdGVtZW50Q291bnQoKTsKIAorICAgIHZv
aWQgc2V0SXNSdW5uaW5nVHJhbnNhY3Rpb24oYm9vbCk7CisgICAgYm9vbCBpc1J1bm5pbmdUcmFu
c2FjdGlvbigpIGNvbnN0OworCiBwcml2YXRlOgogICAgIHN0YXRpYyBpbnQgYXV0aG9yaXplckZ1
bmN0aW9uKHZvaWQqLCBpbnQsIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29uc3QgY2hhcios
IGNvbnN0IGNoYXIqKTsKIApAQCAtMTgxLDggKzE4NCw2IEBAIHByaXZhdGU6CiAgICAgc3RkOjph
dG9taWM8dW5zaWduZWQ+IG1fc3RhdGVtZW50Q291bnQgeyAwIH07CiAjZW5kaWYKIAotICAgIGJv
b2wgbV91c2VXQUwgeyBmYWxzZSB9OwotCiAgICAgTG9jayBtX2F1dGhvcml6ZXJMb2NrOwogICAg
IFJlZlB0cjxEYXRhYmFzZUF1dGhvcml6ZXI+IG1fYXV0aG9yaXplciBXVEZfR1VBUkRFRF9CWV9M
T0NLKG1fYXV0aG9yaXplckxvY2spOwogCkBAIC0xOTMsNiArMTk0LDggQEAgcHJpdmF0ZToKIAog
ICAgIGludCBtX29wZW5FcnJvciB7IFNRTElURV9FUlJPUiB9OwogICAgIENTdHJpbmcgbV9vcGVu
RXJyb3JNZXNzYWdlOworCisgICAgYm9vbCBtX2lzUnVubmluZ1RyYW5zYWN0aW9uIHsgZmFsc2Ug
fTsKIH07CiAKIGlubGluZSB2b2lkIFNRTGl0ZURhdGFiYXNlOjppbmNyZW1lbnRTdGF0ZW1lbnRD
b3VudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmls
ZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3Rl
bS5jcHAKaW5kZXggNzZlNDVhZjM0ZWQwOTNmZDlmMjc2ZGQ1ZDRiOTIyYTQxNjM0ZDlhZS4uOGI5
YjMyMWRjNjQ4MTAwZmNiZjRjNWMyMmY1MGYxNGIxNWEzMTg4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcApAQCAtMzIsNiArMzIsNyBA
QAogI2luY2x1ZGUgIlNRTGl0ZUZpbGVTeXN0ZW0uaCIKIAogI2luY2x1ZGUgIlNRTGl0ZURhdGFi
YXNlLmgiCisjaW5jbHVkZSAiU1FMaXRlTG9ja1Njb3BlLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3Rh
dGVtZW50LmgiCiAjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNsdWRl
IDxzcWxpdGUzLmg+CkBAIC05NCw2ICs5NSw3IEBAIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6ZGVs
ZXRlRGF0YWJhc2VGaWxlKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6dHJ1bmNhdGVEYXRhYmFzZUZpbGUoc3Fs
aXRlMyogZGF0YWJhc2UpCiB7CisgICAgU1FMaXRlTG9ja1Njb3BlIGxvY2tTY29wZTsKICAgICBy
ZXR1cm4gc3FsaXRlM19maWxlX2NvbnRyb2woZGF0YWJhc2UsIDAsIFNRTElURV9UUlVOQ0FURV9E
QVRBQkFTRSwgMCkgPT0gU1FMSVRFX09LOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaAppbmRleCBjNjhkOWM3ZTdhZjk4OTc2YTFl
ZDNkY2I2ZjJhY2ZlNGI2Y2Y1YzJmLi5kMzI2OGJkODVjY2U0MjJhNmUzN2E4OWIyMzAyZGY0ZjZm
OGVkN2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmls
ZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lz
dGVtLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIC8vIFRydW5jYXRlcyBhIGRhdGFi
YXNlIGZpbGUuIFVzZWQgd2hlbiBNb2JpbGVTYWZhcmlTZXR0aW5ncyBkZWxldGVzIGEgZGF0YWJh
c2UgZmlsZSwKICAgICAvLyBzaW5jZSBkZWxldGluZyB0aGUgZmlsZSBudWtlcyB0aGUgUE9TSVgg
ZmlsZSBsb2NrcyB3aGljaCB3b3VsZCBwb3RlbnRpYWxseSBjYXVzZSBTYWZhcmkKICAgICAvLyB0
byBjb3JydXB0IHRoZSBuZXcgZGIgaWYgaXQncyBydW5uaW5nIGluIHRoZSBiYWNrZ3JvdW5kLgot
ICAgIHN0YXRpYyBib29sIHRydW5jYXRlRGF0YWJhc2VGaWxlKHNxbGl0ZTMqIGRhdGFiYXNlKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCB0cnVuY2F0ZURhdGFiYXNlRmlsZShzcWxp
dGUzKiBkYXRhYmFzZSk7CiAjZW5kaWYKICAgICAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMg
dWludDY0X3QgZGF0YWJhc2VGaWxlU2l6ZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2NvcGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUxvY2tTY29wZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZGEzY2UzZDcxNzhjNDg1MjVjMzE4N2Q0ODIxZGVlMTU0Mzc0OTdkNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2NvcGUuY3BwCkBA
IC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU1FMaXRlTG9ja1Njb3BlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIExv
Y2sgc2NvcGVMb2NrOworc3RhdGljIFNRTGl0ZUxvY2tTY29wZUltcGwqIHNfaW1wbCB7IG51bGxw
dHIgfTsKK3N0YXRpYyBib29sIGlzTG9ja2VkRXh0ZXJuYWxseSB7IGZhbHNlIH07CisKK3ZvaWQg
U1FMaXRlTG9ja1Njb3BlOjpzZXRJbXBsKFNRTGl0ZUxvY2tTY29wZUltcGwqIGltcGwpCit7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IHNjb3BlTG9jayB9OworICAgIHNfaW1wbCA9IGltcGw7Cit9CisK
K3ZvaWQgU1FMaXRlTG9ja1Njb3BlOjpob2xkTG9jaygpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZF
VFlfQU5BTFlTSVMKK3sKKyAgICBzY29wZUxvY2subG9jaygpOworICAgIGlzTG9ja2VkRXh0ZXJu
YWxseSA9IHRydWU7Cit9CisKK3ZvaWQgU1FMaXRlTG9ja1Njb3BlOjpyZWxlYXNlTG9jaygpIFdU
Rl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKK3sKKyAgICBpc0xvY2tlZEV4dGVybmFs
bHkgPSBmYWxzZTsKKyAgICBzY29wZUxvY2sudW5sb2NrKCk7Cit9CisKK2Jvb2wgU1FMaXRlTG9j
a1Njb3BlOjppc0luc2lkZVNjb3BlKCkKK3sKKyAgICByZXR1cm4gc2NvcGVMb2NrLmlzTG9ja2Vk
KCkgJiYgIWlzTG9ja2VkRXh0ZXJuYWxseTsKK30KKworU1FMaXRlTG9ja1Njb3BlOjpTUUxpdGVM
b2NrU2NvcGUoKQoreworICAgIHNjb3BlTG9jay5sb2NrKCk7CisgICAgaWYgKHNfaW1wbCkKKyAg
ICAgICAgc19pbXBsLT5zY29wZUJlZ2lucygpOworfQorCitTUUxpdGVMb2NrU2NvcGU6On5TUUxp
dGVMb2NrU2NvcGUoKQoreworICAgIGlmIChzX2ltcGwpCisgICAgICAgIHNfaW1wbC0+c2NvcGVF
bmRzKCk7CisgICAgc2NvcGVMb2NrLnVubG9jaygpOworfQorCit2b2lkIFNRTGl0ZUxvY2tTY29w
ZTo6YWRkRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQoreworICAgIGlmIChzX2lt
cGwpCisgICAgICAgIHNfaW1wbC0+YWRkRGF0YWJhc2UoZGF0YWJhc2UpOworfQorCit2b2lkIFNR
TGl0ZUxvY2tTY29wZTo6cmVtb3ZlRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQor
eworICAgIGlmIChzX2ltcGwpCisgICAgICAgIHNfaW1wbC0+cmVtb3ZlRGF0YWJhc2UoZGF0YWJh
c2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlTG9ja1Njb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlTG9ja1Njb3BlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQ3ZTJiZjg3ODg3ZDBjODc2
Y2ZlNjE2ZTQwOWVjY2UyOTU0ODk4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2NvcGUuaApAQCAtMCwwICsxLDU3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1FMaXRl
RGF0YWJhc2U7CitjbGFzcyBTUUxpdGVUcmFuc2FjdGlvbjsKKworY2xhc3MgU1FMaXRlTG9ja1Nj
b3BlSW1wbCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+U1FMaXRlTG9ja1Njb3BlSW1wbCgpID0g
ZGVmYXVsdDsKKworICAgIHZpcnR1YWwgdm9pZCBzY29wZUJlZ2lucygpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2NvcGVFbmRzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhYmFzZShT
UUxpdGVEYXRhYmFzZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGF0YWJhc2UoU1FM
aXRlRGF0YWJhc2UmKSA9IDA7Cit9OworCitjbGFzcyBTUUxpdGVMb2NrU2NvcGUgeworcHVibGlj
OgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldEltcGwoU1FMaXRlTG9ja1Njb3Bl
SW1wbCopOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGhvbGRMb2NrKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVsZWFzZUxvY2soKTsKKyAgICBzdGF0aWMgYm9v
bCBpc0luc2lkZVNjb3BlKCk7CisKKyAgICBTUUxpdGVMb2NrU2NvcGUoKTsKKyAgICB+U1FMaXRl
TG9ja1Njb3BlKCk7CisKKyAgICB2b2lkIGFkZERhdGFiYXNlKFNRTGl0ZURhdGFiYXNlJik7Cisg
ICAgdm9pZCByZW1vdmVEYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYpOworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NR
TGl0ZVN0YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3Rh
dGVtZW50LmNwcAppbmRleCBiMDg0OWU2ZjgwOGNhMzgwYjA4YzYyNzRiMDRkMTQ5Y2MwMzNjMDg3
Li5iMmZjY2Q0Y2Q3NDE1Nzg2NDdiMDBlNDVlMjc0NDc0NTUwOGVlYzUxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcApAQCAtMjgsNiArMjgs
NyBAQAogCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNRTFZhbHVlLmgiCisjaW5j
bHVkZSAiU1FMaXRlTG9ja1Njb3BlLmgiCiAjaW5jbHVkZSA8c3FsaXRlMy5oPgogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KQEAgLTYyLDEwICs2
Myw0OCBAQCBTUUxpdGVTdGF0ZW1lbnQ6On5TUUxpdGVTdGF0ZW1lbnQoKQogICAgIG1fZGF0YWJh
c2UuZGVjcmVtZW50U3RhdGVtZW50Q291bnQoKTsKIH0KIAorYm9vbCBTUUxpdGVTdGF0ZW1lbnQ6
OnNob3VsZEV4ZWN1dGUoKQoreworICAgIGF1dG8gcXVlcnkgPSBzcWxpdGUzX3NxbChtX3N0YXRl
bWVudCk7CisgICAgaWYgKCFzdHJjbXAocXVlcnksICJCRUdJTiIpIHx8ICFzdHJjbXAocXVlcnks
ICJCRUdJTiBJTU1FRElBVEUiKSkKKyAgICAgICAgbV9kYXRhYmFzZS5zZXRJc1J1bm5pbmdUcmFu
c2FjdGlvbih0cnVlKTsKKyAgICBlbHNlIGlmICghc3RyY21wKHF1ZXJ5LCAiQ09NTUlUIikgfHwg
IXN0cmNtcChxdWVyeSwgIlJPTExCQUNLIikpCisgICAgICAgIG1fZGF0YWJhc2Uuc2V0SXNSdW5u
aW5nVHJhbnNhY3Rpb24oZmFsc2UpOworICAgIGVsc2UgaWYgKG1fZGF0YWJhc2UuaXNSdW5uaW5n
VHJhbnNhY3Rpb24oKSAmJiBtX2RhdGFiYXNlLmlzQXV0b0NvbW1pdE9uKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBpbnQgU1FMaXRlU3RhdGVtZW50
OjpzdGVwKCkKIHsKICAgICBMb2NrZXIgZGF0YWJhc2VMb2NrIHsgbV9kYXRhYmFzZS5kYXRhYmFz
ZU11dGV4KCkgfTsKIAorICAgIGludCBlcnJvcjsKKyAgICAvLyBBdXRvIGNvbW1pdCBzaG91bGQg
YmUgb2ZmIHdoZW4gdHJhbnNhY3Rpb24gaXMgc3RhcnRlZCBzdWNjZXNzZnVsbHkuCisgICAgaWYg
KGlzUmVhZE9ubHkoKSAmJiBtX2RhdGFiYXNlLmlzQXV0b0NvbW1pdE9uKCkpCisgICAgICAgIGVy
cm9yID0gc3FsaXRlM19zdGVwKG1fc3RhdGVtZW50KTsKKyAgICBlbHNlIHsKKyAgICAgICAgU1FM
aXRlTG9ja1Njb3BlIGxvY2tTY29wZTsKKworICAgICAgICBpZiAoIXNob3VsZEV4ZWN1dGUoKSkg
eworICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoU1FMRGF0YWJhc2UsICJTUUxpdGVTdGF0
ZW1lbnQ6OnN0ZXA6IENhbm5vdCBzdGVwICV7cHVibGljfXMgYmVjYXVzZSB0cmFuc2FjdGlvbiBp
cyByb2xsZWQgYmFjayIsIHNxbGl0ZTNfc3FsKG1fc3RhdGVtZW50KSk7CisgICAgICAgICAgICBy
ZXR1cm4gU1FMSVRFX0FCT1JUOworICAgICAgICB9CisKKyAgICAgICAgZXJyb3IgPSBzcWxpdGUz
X3N0ZXAobV9zdGF0ZW1lbnQpOworICAgIH0KKworICAgIGlmIChlcnJvciAhPSBTUUxJVEVfRE9O
RSAmJiBlcnJvciAhPSBTUUxJVEVfUk9XKQorICAgICAgICBMT0coU1FMRGF0YWJhc2UsICJzcWxp
dGUzX3N0ZXAgZmFpbGVkICglaSlcbkVycm9yIC0gJXMiLCBlcnJvciwgc3FsaXRlM19lcnJtc2co
bV9kYXRhYmFzZS5zcWxpdGUzSGFuZGxlKCkpKTsKKworICAgIHJldHVybiBlcnJvcjsKK30KKwor
aW50IFNRTGl0ZVN0YXRlbWVudDo6c3RlcFdpdGhvdXRMb2NrU2NvcGUoKQoreworICAgIExvY2tl
ciBkYXRhYmFzZUxvY2sgeyBtX2RhdGFiYXNlLmRhdGFiYXNlTXV0ZXgoKSB9OworCiAgICAgaW50
IGVycm9yID0gc3FsaXRlM19zdGVwKG1fc3RhdGVtZW50KTsKICAgICBpZiAoZXJyb3IgIT0gU1FM
SVRFX0RPTkUgJiYgZXJyb3IgIT0gU1FMSVRFX1JPVykKICAgICAgICAgTE9HKFNRTERhdGFiYXNl
LCAic3FsaXRlM19zdGVwIGZhaWxlZCAoJWkpXG5FcnJvciAtICVzIiwgZXJyb3IsIHNxbGl0ZTNf
ZXJybXNnKG1fZGF0YWJhc2Uuc3FsaXRlM0hhbmRsZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmgKaW5kZXggY2YyZjEyMGYyZTc1M2FkOGQxMzE3
MGZkMGQ4NzAwMTY5ZGViYzE1NS4uM2NjMDE5ZmU1MzkzYjgzZDBjMGNjZDkxNjkxN2I5MjhhYWY0
ODkwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQu
aApAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdW5zaWduZWQg
YmluZFBhcmFtZXRlckNvdW50KCkgY29uc3Q7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBpbnQgc3Rl
cCgpOworICAgIGludCBzdGVwV2l0aG91dExvY2tTY29wZSgpOwogICAgIFdFQkNPUkVfRVhQT1JU
IGludCByZXNldCgpOwogICAgIAogICAgIC8vIHN0ZXBzIGFuZCBmaW5hbGl6ZXMgdGhlIHF1ZXJ5
LgpAQCAtODQsNiArODUsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRo
ZSBwcmVwYXJlZCBzdGF0ZW1lbnQgaGFzIGJlZW4gc3RlcHBlZCBhdCBsZWFzdCBvbmNlIHVzaW5n
IHN0ZXAoKSBidXQgaGFzIG5laXRoZXIgcnVuIHRvIGNvbXBsZXRpb24gKHJldHVybmVkIFNRTElU
RV9ET05FIGZyb20gc3RlcCgpKSBub3IgYmVlbiByZXNldCgpLgogICAgIGJvb2wgaGFzU3RhcnRl
ZFN0ZXBwaW5nKCk7CisgICAgYm9vbCBzaG91bGRFeGVjdXRlKCk7CiAKICAgICBTUUxpdGVEYXRh
YmFzZSYgbV9kYXRhYmFzZTsKICAgICBzcWxpdGUzX3N0bXQqIG1fc3RhdGVtZW50OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVUcmFuc2FjdGlvbi5jcHAKaW5kZXgg
MDhlOWViNzNkYjI0YTA5MGE3YTA4MGMxYTgxNTY5MzE4ZTVhMjg1OS4uZDU4MmZhY2MyZTFjZGMw
NzU5NTgwMTUzNGFkNDlmODk0ZmQ4ZmNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwCkBAIC02NiwxMCArNjYsMTQgQEAgdm9pZCBT
UUxpdGVUcmFuc2FjdGlvbjo6YmVnaW4oKQogICAgICAgICBlbHNlCiAgICAgICAgICAgICBtX2lu
UHJvZ3Jlc3MgPSBtX2RiLmV4ZWN1dGVDb21tYW5kKCJCRUdJTiBJTU1FRElBVEUiX3MpOwogICAg
ICAgICBtX2RiLm1fdHJhbnNhY3Rpb25JblByb2dyZXNzID0gbV9pblByb2dyZXNzOworCisgICAg
ICAgIGlmICghbV9pblByb2dyZXNzKSB7CisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlcmUg
aXMgYW4gZXhwbGljaXQgcm9sbGJhY2sgYWZ0ZXIgYmVnaW4gdG8gdXBkYXRlIGRhdGFiYXNlIHN0
YXRlLgorICAgICAgICAgICAgbV9kYi5leGVjdXRlQ29tbWFuZCgiUk9MTEJBQ0siX3MpOwogI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIGlmICghbV9pblByb2dyZXNzKQogICAgICAg
ICAgICAgU1FMaXRlRGF0YWJhc2VUcmFja2VyOjpkZWNyZW1lbnRUcmFuc2FjdGlvbkluUHJvZ3Jl
c3NDb3VudCgpOwogI2VuZGlmCisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuY3BwCmlu
ZGV4IGYwNjhiMjY3YTE1MTY2OGM2NjAxYzBhYzRlNGU3ZTdiYjZkZGZkZDEuLjZiMjUwYmE3YjM0
NmJkMTlhNmFmODc0ZjQ5YjdiYzAzODBlNzhkODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmNwcApAQCAtNTMsNyAr
NTMsNiBAQCBXZWJJREJTZXJ2ZXI6OldlYklEQlNlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBXZQogV2ViSURCU2VydmVyOjp+V2ViSURCU2Vy
dmVyKCkKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIEFTU0VSVCghbV9p
c1N1c3BlbmRlZCk7CiB9CiAKIHZvaWQgV2ViSURCU2VydmVyOjpnZXRPcmlnaW5zKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoSGFzaFNldDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiYpPiYm
IGNhbGxiYWNrKQpAQCAtMTE1LDQ3ICsxMTQsMzkgQEAgdm9pZCBXZWJJREJTZXJ2ZXI6OnJlbmFt
ZU9yaWdpbihjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIG9sZE9yaWdpbiwgY28K
ICAgICB9KTsKIH0KIAotYm9vbCBXZWJJREJTZXJ2ZXI6OnN1c3BlbmQoU3VzcGVuc2lvbkNvbmRp
dGlvbiBzdXNwZW5zaW9uQ29uZGl0aW9uKSBXVEZfSUdOT1JFU19USFJFQURfU0FGRVRZX0FOQUxZ
U0lTCit2b2lkIFdlYklEQlNlcnZlcjo6c3VzcGVuZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
IAotICAgIGlmIChtX2lzU3VzcGVuZGVkKQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBMb2Nr
ZXIgc3VzcGVuc2lvbkxvY2tlciB7IG1fc3VzcGVuc2lvbkxvY2sgfTsKKyAgICBtX3Nob3VsZFN1
c3BlbmQgPSB0cnVlOwogCi0gICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAt
IFdlYklEQlNlcnZlcjo6c3VzcGVuZCgpLCBzdXNwZW5zaW9uQ29uZGl0aW9uPSVzIiwgdGhpcywg
c3VzcGVuc2lvbkNvbmRpdGlvbiA9PSBTdXNwZW5zaW9uQ29uZGl0aW9uOjpBbHdheXMgPyAiQWx3
YXlzIiA6ICJJZklkbGUiKTsKLQotICAgIG1faXNTdXNwZW5kZWQgPSB0cnVlOwotICAgIG1fc2Vy
dmVyTG9jay5sb2NrKCk7Ci0KLSAgICBpZiAoIW1fc2VydmVyKQotICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBtX3F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBzdXNwZW5zaW9uSWRlbnRpZmllciA9ICsrbV9zdXNwZW5zaW9uSWRlbnRpZmllciwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJs
ZSB7CisgICAgICAgIExvY2tlciBzdXNwZW5zaW9uTG9ja2VyIHsgbV9zdXNwZW5zaW9uTG9jayB9
OworICAgICAgICBpZiAoIW1fc2hvdWxkU3VzcGVuZCB8fCBzdXNwZW5zaW9uSWRlbnRpZmllciAh
PSBtX3N1c3BlbnNpb25JZGVudGlmaWVyKSB7CisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCku
ZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CiAKLSAgICBpZiAoc3VzcGVuc2lvbkNvbmRpdGlvbiA9PSBTdXNwZW5zaW9u
Q29uZGl0aW9uOjpBbHdheXMpIHsKLSAgICAgICAgbV9zZXJ2ZXItPnN0b3BEYXRhYmFzZUFjdGl2
aXRpZXNPbk1haW5UaHJlYWQoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQorICAgICAg
ICB7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zZXJ2ZXJMb2NrIH07CisgICAgICAg
ICAgICBtX3NlcnZlci0+c3RvcERhdGFiYXNlQWN0aXZpdGllc0lmTmVlZGVkKCk7CisgICAgICAg
IH0KIAotICAgIC8vIFN1c3BlbmQgdG8gYXZvaWQgc3RhcnRpbmcgbmV3IHRyYW5zYWN0aW9ucyBp
ZiB0aGVyZSBpcyBubyBvbmdvaW5nIHRyYW5zYWN0aW9uLgotICAgIGlmICghbV9zZXJ2ZXItPmhh
c0RhdGFiYXNlQWN0aXZpdGllc09uTWFpblRocmVhZCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIAotICAgIC8vIFJlc3VtZSB0byBhbGxvdyBvbmdvaW5nIHRyYW5zYWN0aW9ucyB0byBi
ZSBmaW5pc2hlZC4KLSAgICBtX3NlcnZlckxvY2sudW5sb2NrKCk7Ci0gICAgbV9pc1N1c3BlbmRl
ZCA9IGZhbHNlOwotICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgd2hpbGUgKG1fc2hvdWxkU3Vz
cGVuZCkKKyAgICAgICAgICAgIG1fc3VzcGVuc2lvbkNvbmRpdGlvbi53YWl0KG1fc3VzcGVuc2lv
bkxvY2spOworICAgIH0pOwogfQogCi12b2lkIFdlYklEQlNlcnZlcjo6cmVzdW1lKCkgV1RGX0lH
Tk9SRVNfVEhSRUFEX1NBRkVUWV9BTkFMWVNJUwordm9pZCBXZWJJREJTZXJ2ZXI6OnJlc3VtZSgp
CiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAotICAgIGlmICghbV9pc1N1c3Bl
bmRlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNp
b24sICIlcCAtIFdlYklEQlNlcnZlcjo6cmVzdW1lKCkiLCB0aGlzKTsKLQotICAgIG1faXNTdXNw
ZW5kZWQgPSBmYWxzZTsKLSAgICBtX3NlcnZlckxvY2sudW5sb2NrKCk7CisgICAgTG9ja2VyIHN1
c3BlbnNpb25Mb2NrZXIgeyBtX3N1c3BlbnNpb25Mb2NrIH07CisgICAgbV9zaG91bGRTdXNwZW5k
ID0gZmFsc2U7CisgICAgbV9zdXNwZW5zaW9uQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwogfQogCiB2
b2lkIFdlYklEQlNlcnZlcjo6b3BlbkRhdGFiYXNlKGNvbnN0IFdlYkNvcmU6OklEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9JbmRleGVkREIvV2ViSURCU2VydmVyLmgKaW5kZXggNjJmMGNhYzM2ZGM2OGU1YWVlMWMxYmJj
YWQzNjgzOWQ3MzE4MDcxOC4uOGVkN2Y0YjY2NzUxMTk1Njc0M2Y0MWI5N2QwMTZhYWI2ZjRmNzEw
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2Vi
SURCU2VydmVyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIv
V2ViSURCU2VydmVyLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVuYW1l
T3JpZ2luKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAKICAg
ICBlbnVtIGNsYXNzIFN1c3BlbnNpb25Db25kaXRpb24gOiBib29sIHsgQWx3YXlzLCBJZklkbGUg
fTsKLSAgICBib29sIHN1c3BlbmQoU3VzcGVuc2lvbkNvbmRpdGlvbiA9IFN1c3BlbnNpb25Db25k
aXRpb246OkFsd2F5cyk7CisgICAgdm9pZCBzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCByZXN1bWUoKTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCkBA
IC05OCwxMCArOTgsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBvc3RUYXNrUmVwbHkoRnVuY3Rp
b248dm9pZCgpPiYmKTsKIAogICAgIFJlZjxXb3JrUXVldWU+IG1fcXVldWU7Ci0KICAgICBMb2Nr
IG1fc2VydmVyTG9jazsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SURCU2VydmVyOjpJ
REJTZXJ2ZXI+IG1fc2VydmVyIFdURl9HVUFSREVEX0JZX0xPQ0sobV9zZXJ2ZXJMb2NrKTsKLSAg
ICBib29sIG1faXNTdXNwZW5kZWQgeyBmYWxzZSB9OworCisgICAgTG9jayBtX3N1c3BlbnNpb25M
b2NrOworICAgIENvbmRpdGlvbiBtX3N1c3BlbnNpb25Db25kaXRpb247CisgICAgYm9vbCBtX3No
b3VsZFN1c3BlbmQgV1RGX0dVQVJERURfQllfTE9DSyhtX3N1c3BlbnNpb25Mb2NrKSB7IGZhbHNl
IH07CisgICAgdWludDY0X3QgbV9zdXNwZW5zaW9uSWRlbnRpZmllciBXVEZfR1VBUkRFRF9CWV9M
T0NLKG1fc3VzcGVuc2lvbkxvY2spIHsgMCB9OwogCiAgICAgSGFzaE1hcDxJUEM6OkNvbm5lY3Rp
b246OlVuaXF1ZUlELCBzdGQ6OnVuaXF1ZV9wdHI8V2ViSURCQ29ubmVjdGlvblRvQ2xpZW50Pj4g
bV9jb25uZWN0aW9uTWFwOwogICAgIFdlYWtIYXNoU2V0PElQQzo6Q29ubmVjdGlvbj4gbV9jb25u
ZWN0aW9uczsgLy8gT25seSB1c2VkIG9uIHRoZSBtYWluIHRocmVhZC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggNDM2MDUwMmQxMDYx
NzlmNjcyODk1OWNjZTMyY2Y2MDc2ZDExOTA3My4uYjQ3ODRhMzY4ZDAyNzZjMzE4ZDQ5MTc3NWNk
YTcwN2E5OGVlNTQ0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlv
bk1hbmFnZXIuaCIKICNpbmNsdWRlICJBdXhpbGlhcnlQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VBc3NlcnRpb25NYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiRG93bmxvYWQuaCIKICNpbmNsdWRlICJEb3dubG9hZFByb3h5TWVzc2Fn
ZXMuaCIKICNpZiBFTkFCTEUoTEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQpAQCAtMTU4
LDkgKzE1OSw5IEBAIE5ldHdvcmtQcm9jZXNzOjpOZXR3b3JrUHJvY2VzcyhBdXhpbGlhcnlQcm9j
ZXNzSW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1lCiAjaWYgRU5BQkxFKENPTlRFTlRf
RVhURU5TSU9OUykKICAgICAsIG1fbmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIoKnRoaXMp
CiAjZW5kaWYKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICwgbV93ZWJTUUxpdGVEYXRh
YmFzZVRyYWNrZXIoW3RoaXNdKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpIHsgc2V0SXNIb2xk
aW5nTG9ja2VkRmlsZXMoaXNIb2xkaW5nTG9ja2VkRmlsZXMpOyB9KQotI2VuZGlmCisgICAgLCBt
X2RhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlcigiTmV0d29yayBQcm9jZXNzIGlzIGhvbGRpbmcgbG9j
a2VkIGZpbGVzIiwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSgpIHsKKyAgICAgICAg
cmV0dXJuIHdlYWtUaGlzID8gd2Vha1RoaXMtPm1fc2hvdWxkU3VzcGVuZCA6IGZhbHNlOworICAg
IH0pCiAgICAgLCBtX21lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5KGNyZWF0ZU1lc3NhZ2VQb3J0
Q2hhbm5lbFJlZ2lzdHJ5KCp0aGlzKSkKIHsKICAgICBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3Ry
YXRlZ2llczo6aW5pdGlhbGl6ZSgpOwpAQCAtMjIxMSwzMSArMjIxMiw2IEBAIHZvaWQgTmV0d29y
a1Byb2Nlc3M6OnByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHlGb3JUZXN0aW5nU3luYyhDb21w
bGV0aW9uSGFuZGxlCiAgICAgcHJlcGFyZVRvU3VzcGVuZCh0cnVlLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnN1c3BlbmRJREJTZXJ2ZXJz
KGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQpCi17Ci0gICAgbV9zaG91bGRTdXNwZW5kSURCU2Vy
dmVycyA9IHRydWU7Ci0gICAgKyttX3N1c3BlbnNpb25JZGVudGlmaWVyOwotCi0gICAgYm9vbCBh
bGxTdXNwZW5kZWQgPSB0cnVlOwotICAgIGF1dG8gY29uZGl0aW9uID0gaXNTdXNwZW5zaW9uSW1t
aW5lbnQgPyBXZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25Db25kaXRpb246OkFsd2F5cyA6IFdlYklE
QlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6SWZJZGxlOwotICAgIGZvciAoYXV0byYgc2Vy
dmVyIDogbV93ZWJJREJTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBhbGxTdXNwZW5kZWQgJj0g
c2VydmVyLT5zdXNwZW5kKGNvbmRpdGlvbik7Ci0KLSAgICBpZiAoYWxsU3VzcGVuZGVkKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2hBZnRlcig1X3MsIFt0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgc3VzcGVuc2lvbklkZW50aWZpZXIg
PSBtX3N1c3BlbnNpb25JZGVudGlmaWVyXSB7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKCFtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJz
IHx8IHN1c3BlbnNpb25JZGVudGlmaWVyICE9IG1fc3VzcGVuc2lvbklkZW50aWZpZXIpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX3dlYklEQlNl
cnZlcnMudmFsdWVzKCkpCi0gICAgICAgICAgICBzZXJ2ZXItPnN1c3BlbmQoV2ViSURCU2VydmVy
OjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpBbHdheXMpOwotICAgIH0pOwotfQotCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3M6OnByZXBhcmVU
b1N1c3BlbmQoKSwgaXNTdXNwZW5zaW9uSW1taW5lbnQ9JWQiLCB0aGlzLCBpc1N1c3BlbnNpb25J
bW1pbmVudCk7CkBAIC0yMjQ2LDE1ICsyMjIyLDIyIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBy
ZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRs
CiAKICAgICBsb3dNZW1vcnlIYW5kbGVyKENyaXRpY2FsOjpZZXMpOwogCi0gICAgUmVmUHRyPENh
bGxiYWNrQWdncmVnYXRvcj4gY2FsbGJhY2tBZ2dyZWdhdG9yID0gQ2FsbGJhY2tBZ2dyZWdhdG9y
OjpjcmVhdGUoW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9u
LCAiJXAgLSBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCgpIFByb2Nlc3MgaXMgcmVh
ZHkgdG8gc3VzcGVuZCIsIHRoaXMpOwotICAgICAgICBVTlVTRURfVkFSSUFCTEUodGhpcyk7Cisg
ICAgbV9zaG91bGRTdXNwZW5kID0gdHJ1ZTsKKyAgICArK21fc3VzcGVuc2lvbklkZW50aWZpZXI7
CisKKyAgICBSZWZQdHI8Q2FsbGJhY2tBZ2dyZWdhdG9yPiBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBD
YWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyksIHN1c3BlbnNpb25JZGVudGlmaWVyID0gbV9zdXNwZW5zaW9uSWRlbnRpZmllciwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
KyAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKLSAgICB9KTsKKworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGlmICghbV9zaG91bGRTdXNwZW5kIHx8IHN1c3BlbnNpb25JZGVu
dGlmaWVyICE9IG1fc3VzcGVuc2lvbklkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm47CiAg
ICAgCi0jaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1c3BlbmQoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsK
LSNlbmRpZgorICAgICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gTmV0
d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQoKSBQcm9jZXNzIGlzIHJlYWR5IHRvIHN1c3Bl
bmQiLCB0aGlzKTsKKyAgICAgICAgbV9kYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIuc3VzcGVuZCgp
OworICAgIH0pOwogCiAgICAgZm9yRWFjaE5ldHdvcmtTZXNzaW9uKFsmXSAoYXV0byYgbmV0d29y
a1Nlc3Npb24pIHsKICAgICAgICAgcGxhdGZvcm1GbHVzaENvb2tpZXMobmV0d29ya1Nlc3Npb24u
c2Vzc2lvbklEKCksIFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CkBAIC0yMjcwLDcgKzIyNTMs
MTYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZChib29sIGlzU3VzcGVu
c2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGwKICAgICB9CiAjZW5kaWYKIAotICAgIG1fc3Rv
cmFnZU1hbmFnZXJTZXQtPnN1c3BlbmQoW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKKyAgICBp
ZiAoaXNTdXNwZW5zaW9uSW1taW5lbnQpCisgICAgICAgIG1fZGF0YWJhc2VBc3NlcnRpb25NYW5h
Z2VyLnN1c3BlbmQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgbV9zdG9yYWdlTWFuYWdlclNldC0+
c3VzcGVuZChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOworICAgICAgICBmb3IgKGF1dG8mIHNl
cnZlciA6IG1fd2ViSURCU2VydmVycy52YWx1ZXMoKSkKKyAgICAgICAgICAgIHNlcnZlci0+c3Vz
cGVuZChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FE
X1NUQVRJU1RJQ1MpCisgICAgICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3Vz
cGVuZChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOworI2VuZGlmCisgICAgfQogfQogCiB2b2lk
IE5ldHdvcmtQcm9jZXNzOjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgpCkBAIC0yMjkz
LDIyICsyMjg1LDIwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnJlc3VtZSgpCiB7CiAgICAgZm9y
IChhdXRvJiBjb25uZWN0aW9uIDogbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMudmFsdWVzKCkpCiAg
ICAgICAgIGNvbm5lY3Rpb24tPmVuZFN1c3BlbnNpb24oKTsKLQotI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpy
ZXN1bWUoKTsKLSNlbmRpZgogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBm
b3IgKGF1dG8mIHNlcnZlciA6IG1fc3dTZXJ2ZXJzLnZhbHVlcygpKQogICAgICAgICBzZXJ2ZXIt
PmVuZFN1c3BlbnNpb24oKTsKICNlbmRpZgotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKKyAg
ICBtX3Nob3VsZFN1c3BlbmQgPSBmYWxzZTsKKyAgICBtX2RhdGFiYXNlQXNzZXJ0aW9uTWFuYWdl
ci5yZXN1bWUoKTsKKyAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5yZXN1bWUoKTsKICAgICBmb3Ig
KGF1dG8mIHNlcnZlciA6IG1fd2ViSURCU2VydmVycy52YWx1ZXMoKSkKICAgICAgICAgc2VydmVy
LT5yZXN1bWUoKTsKLSAgICBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJzID0gZmFsc2U7CisjaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKKyAgICBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnJlc3VtZSgpOwogI2VuZGlmCi0KLSAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0
LT5yZXN1bWUoKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlZmV0Y2hETlMoY29uc3Qg
U3RyaW5nJiBob3N0bmFtZSkKQEAgLTIzNzAsOCArMjM2MCw4IEBAIFJlZjxXZWJJREJTZXJ2ZXI+
IE5ldHdvcmtQcm9jZXNzOjpjcmVhdGVXZWJJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKQogICAgIH07CiAKICAgICBhdXRvIHJlc3VsdCA9IFdlYklEQlNlcnZlcjo6Y3JlYXRlKHNl
c3Npb25JRCwgcGF0aCwgV1RGTW92ZShzcGFjZVJlcXVlc3RlcikpOwotICAgIGlmIChtX3Nob3Vs
ZFN1c3BlbmRJREJTZXJ2ZXJzKQotICAgICAgICByZXN1bHQtPnN1c3BlbmQoV2ViSURCU2VydmVy
OjpTdXNwZW5zaW9uQ29uZGl0aW9uOjpBbHdheXMpOworICAgIGlmIChtX3Nob3VsZFN1c3BlbmQp
CisgICAgICAgIHJlc3VsdC0+c3VzcGVuZChbXSB7IH0pOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAppbmRl
eCBmMDZkYWQ0NzI5YmRmYmVhNzUzZmY4YzkzYWEzZTc1YTlhZDg4YjAzLi5hMTlmYjljNzU4Njlm
NjBkN2EwZTQ3MGNhNDg2YzA0YjAzZGVlOTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQXV4
aWxpYXJ5UHJvY2Vzcy5oIgogI2luY2x1ZGUgIkNhY2hlTW9kZWwuaCIKICNpbmNsdWRlICJDYWxs
YmFja0lELmgiCisjaW5jbHVkZSAiRGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiRG93bmxvYWRJRC5oIgogI2luY2x1ZGUgIkRvd25sb2FkTWFuYWdlci5oIgogI2luY2x1ZGUg
IkxvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5oIgpAQCAtNjEsMTAgKzYyLDYgQEAKICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0jaW5jbHVkZSAiV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmgi
Ci0jZW5kaWYKLQogI2lmIFBMQVRGT1JNKENPQ09BKQogI2luY2x1ZGUgPHd0Zi9PU09iamVjdFB0
ci5oPgogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQ0ZIVFRQQ29va2llU3RvcmFnZSogIENGSFRUUENv
b2tpZVN0b3JhZ2VSZWY7CkBAIC00ODYsNyArNDgzLDYgQEAgcHJpdmF0ZToKICAgICBSZWY8V2Vi
SURCU2VydmVyPiBjcmVhdGVXZWJJREJTZXJ2ZXIoUEFMOjpTZXNzaW9uSUQpOwogICAgIHZvaWQg
c2V0U2Vzc2lvblN0b3JhZ2VRdW90YU1hbmFnZXJJREJSb290UGF0aChQQUw6OlNlc3Npb25JRCwg
Y29uc3QgU3RyaW5nJiBpZGJSb290UGF0aCk7CiAgICAgdm9pZCByZW1vdmVXZWJJREJTZXJ2ZXJJ
ZlBvc3NpYmxlKFBBTDo6U2Vzc2lvbklEKTsKLSAgICB2b2lkIHN1c3BlbmRJREJTZXJ2ZXJzKGJv
b2wgaXNTdXNwZW5zaW9uSW1taW5lbnQpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQog
ICAgIHZvaWQgZGlkQ3JlYXRlV29ya2VyQ29udGV4dFByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IElQ
Qzo6QXR0YWNobWVudCYpOwpAQCAtNTAwLDEwICs0OTYsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
YWRkU2VydmljZVdvcmtlclNlc3Npb24oUEFMOjpTZXNzaW9uSUQsIGJvb2wgcHJvY2Vzc1Rlcm1p
bmF0aW9uRGVsYXlFbmFibGVkLCBTdHJpbmcmJiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGly
ZWN0b3J5LCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmKTsKICNlbmRpZgogCi0jaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB2b2lkIHNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJv
b2wpOwotI2VuZGlmCi0KICAgICB2b2lkIGZpcmVQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRpbWVy
SW1tZWRpYXRlbHkoUEFMOjpTZXNzaW9uSUQpOwogCiAgICAgY2xhc3MgU2Vzc2lvblN0b3JhZ2VR
dW90YU1hbmFnZXIgewpAQCAtNTc3LDE1ICs1NjksMTIgQEAgcHJpdmF0ZToKICAgICBOZXR3b3Jr
Q29udGVudFJ1bGVMaXN0TWFuYWdlciBtX25ldHdvcmtDb250ZW50UnVsZUxpc3RNYW5hZ2VyOwog
I2VuZGlmCiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFdlYlNRTGl0ZURhdGFiYXNl
VHJhY2tlciBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tlcjsKLSAgICBSZWZQdHI8UHJvY2Vzc0Fz
c2VydGlvbj4gbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbjsKLSNlbmRpZgorICAgIERhdGFi
YXNlQXNzZXJ0aW9uTWFuYWdlciBtX2RhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlcjsKKyAgICBib29s
IG1fc2hvdWxkU3VzcGVuZCB7IGZhbHNlIH07CisgICAgdWludDY0X3QgbV9zdXNwZW5zaW9uSWRl
bnRpZmllciB7IDAgfTsKIAogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFN0cmluZz4gbV9p
ZGJEYXRhYmFzZVBhdGhzOwogICAgIEhhc2hNYXA8UEFMOjpTZXNzaW9uSUQsIFJlZlB0cjxXZWJJ
REJTZXJ2ZXI+PiBtX3dlYklEQlNlcnZlcnM7Ci0gICAgYm9vbCBtX3Nob3VsZFN1c3BlbmRJREJT
ZXJ2ZXJzIHsgZmFsc2UgfTsKLSAgICB1aW50NjRfdCBtX3N1c3BlbnNpb25JZGVudGlmaWVyIHsg
MCB9OwogICAgIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICBzdHJ1Y3QgU2Vydmlj
ZVdvcmtlckluZm8gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9p
b3MvTmV0d29ya1Byb2Nlc3NJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lv
cy9OZXR3b3JrUHJvY2Vzc0lPUy5tbQppbmRleCBhMWUwOTE0MmI4YjNhMzRhMjcwZjNiZjUwZjk2
MGExNmRlNzE1NzljLi41ZDAwMTBlMDJiMjQwMWU4NGY0NTU0Nzg5MmExNjkzMDQ0OTM1MzFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJvY2Vz
c0lPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3JrUHJv
Y2Vzc0lPUy5tbQpAQCAtMTAwLDMyICsxMDAsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVh
clNlcnZpY2VXb3JrZXJFbnRpdGxlbWVudE92ZXJyaWRlKENvbXBsZXRpb25IYW5kbGVyPHZvaQog
CiAjZW5kaWYgLy8gIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQogCi12b2lkIE5ldHdvcmtQcm9jZXNz
OjpzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sIGlzSG9sZGluZ0xvY2tlZEZpbGVzKQotewot
ICAgIGlmICghaXNIb2xkaW5nTG9ja2VkRmlsZXMpIHsKLSAgICAgICAgbV9ob2xkaW5nTG9ja2Vk
RmlsZUFzc2VydGlvbiA9IG51bGxwdHI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAobV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbiAmJiBtX2hvbGRpbmdMb2NrZWRGaWxlQXNz
ZXJ0aW9uLT5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFdlIHN5bmNocm9u
b3VzbHkgdGFrZSBhIHByb2Nlc3MgYXNzZXJ0aW9uIHdoZW4gYmVnaW5uaW5nIGEgU1FMaXRlIHRy
YW5zYWN0aW9uIHNvIHRoYXQgd2UgZG9uJ3QgZ2V0IHN1c3BlbmRlZAotICAgIC8vIHdoaWxlIGhv
bGRpbmcgYSBsb2NrZWQgZmlsZS4gV2Ugd291bGQgZ2V0IGtpbGxlZCBpZiBzdXNwZW5kZWQgd2hp
bGUgaG9sZGluZyBsb2NrZWQgZmlsZXMuCi0gICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlv
biA9IFByb2Nlc3NBc3NlcnRpb246OmNyZWF0ZShnZXRDdXJyZW50UHJvY2Vzc0lEKCksICJOZXR3
b3JrIFByb2Nlc3MgaXMgaG9sZGluZyBsb2NrZWQgZmlsZXMiX3MsIFByb2Nlc3NBc3NlcnRpb25U
eXBlOjpGaW5pc2hUYXNrSW50ZXJydXB0YWJsZSwgUHJvY2Vzc0Fzc2VydGlvbjo6TW9kZTo6U3lu
Yyk7Ci0gICAgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbi0+c2V0UHJlcGFyZUZvckludmFs
aWRhdGlvbkhhbmRsZXIoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSgpIG11
dGFibGUgewotICAgICAgICBBU1NFUlQoaXNNYWluUnVuTG9vcCgpKTsKLSAgICAgICAgaWYgKCF3
ZWFrVGhpcykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoIW1fc2hvdWxkU3Vz
cGVuZElEQlNlcnZlcnMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZm9yIChhdXRv
JiBzZXJ2ZXIgOiBtX3dlYklEQlNlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgICAgICBzZXJ2ZXIt
PnN1c3BlbmQoKTsKLSAgICB9KTsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRp
ZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvRGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0Rh
dGFiYXNlQXNzZXJ0aW9uTWFuYWdlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTU3YTA4ODY4MTNhYWI2YWVl
MmE5YTRjMjljYmNkZjYyZmE3ODVjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0RhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlci5jcHAKQEAgLTAsMCArMSwxNTYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRGF0YWJhc2VBc3NlcnRp
b25NYW5hZ2VyLmgiCisKKyNpbmNsdWRlICJQcm9jZXNzQXNzZXJ0aW9uLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9TUUxpdGVEYXRhYmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXI6OkRhdGFiYXNl
QXNzZXJ0aW9uTWFuYWdlcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIEZ1bmN0aW9uPGJvb2wo
KT4mJiBzaG91bGRTdXNwZW5kQ2hlY2tlcikKKyAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVy
KQorICAgICwgbV9zaG91bGRTdXNwZW5kQ2hlY2tlcihXVEZNb3ZlKHNob3VsZFN1c3BlbmRDaGVj
a2VyKSkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIFdlYkNvcmU6OlNR
TGl0ZUxvY2tTY29wZTo6c2V0SW1wbCh0aGlzKTsKK30KKworRGF0YWJhc2VBc3NlcnRpb25NYW5h
Z2VyOjp+RGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyKCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOworICAgIFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZTo6c2V0SW1wbChudWxscHRy
KTsKK30KKwordm9pZCBEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXI6OnNjb3BlQmVnaW5zKCkKK3sK
KyAgICBpZiAobV9hc3NlcnRpb24gJiYgbV9hc3NlcnRpb24tPmlzVmFsaWQoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgbV9hc3NlcnRpb24gPSBQcm9jZXNzQXNzZXJ0aW9uOjpjcmVhdGUoZ2V0
Q3VycmVudFByb2Nlc3NJRCgpLCBtX2lkZW50aWZpZXIsIFByb2Nlc3NBc3NlcnRpb25UeXBlOjpG
aW5pc2hUYXNrSW50ZXJydXB0YWJsZSwgUHJvY2Vzc0Fzc2VydGlvbjo6TW9kZTo6U3luYyk7Cisg
ICAgbV9hc3NlcnRpb24tPnNldFByZXBhcmVGb3JJbnZhbGlkYXRpb25IYW5kbGVyKFt0aGlzLCB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGlmIChtX3Nob3VsZFN1c3BlbmRDaGVja2VyKCkpCisgICAg
ICAgICAgICBzdXNwZW5kKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgRGF0YWJhc2VBc3NlcnRpb25N
YW5hZ2VyOjpzY29wZUVuZHMoKQoreworICAgIGlmIChpc0FueURhdGFiYXNlTG9ja2VkKCkpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAobV9hc3NlcnRpb25SZWxlYXNlU2NoZWR1bGVk
KSB7CisgICAgICAgIG1fc2hvdWxkRGVsYXlBc3NlcnRpb25SZWxlYXNlID0gdHJ1ZTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIHNjaGVkdWxlQXNzZXJ0aW9uUmVsZWFzZSgpOworfQor
Citib29sIERhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlcjo6aXNBbnlEYXRhYmFzZUxvY2tlZCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIFdURjo6YW55T2YobV9kYXRhYmFzZXMsIFsmXShhdXRvJiBkYXRh
YmFzZSkgeworICAgICAgICByZXR1cm4gIWRhdGFiYXNlLmlzQXV0b0NvbW1pdE9uKCk7CisgICAg
fSk7Cit9CisKK3ZvaWQgRGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyOjpzY2hlZHVsZUFzc2VydGlv
blJlbGVhc2UoKQoreworICAgIG1fYXNzZXJ0aW9uUmVsZWFzZVNjaGVkdWxlZCA9IHRydWU7Cisg
ICAgbV9zaG91bGREZWxheUFzc2VydGlvblJlbGVhc2UgPSBmYWxzZTsKKyAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2hBZnRlcigxX3MsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0
aGlzKV0geworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHJlbGVhc2VBc3NlcnRpb24oKTsKKyAgICB9KTsKK30KKwordm9pZCBEYXRhYmFzZUFz
c2VydGlvbk1hbmFnZXI6OnJlbGVhc2VBc3NlcnRpb24oKQoreworICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CisKKyAgICBpZiAobV9zdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZTo6aG9sZExvY2soKTsKKworICAgIG1fYXNzZXJ0
aW9uUmVsZWFzZVNjaGVkdWxlZCA9IGZhbHNlOworICAgIGlmIChpc0FueURhdGFiYXNlTG9ja2Vk
KCkpIHsKKyAgICAgICAgV2ViQ29yZTo6U1FMaXRlTG9ja1Njb3BlOjpyZWxlYXNlTG9jaygpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1fc2hvdWxkRGVsYXlBc3NlcnRpb25S
ZWxlYXNlKQorICAgICAgICBzY2hlZHVsZUFzc2VydGlvblJlbGVhc2UoKTsKKyAgICBlbHNlCisg
ICAgICAgIG1fYXNzZXJ0aW9uID0gbnVsbHB0cjsKKworICAgIFdlYkNvcmU6OlNRTGl0ZUxvY2tT
Y29wZTo6cmVsZWFzZUxvY2soKTsKK30KKwordm9pZCBEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXI6
OmFkZERhdGFiYXNlKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkKK3sKKyAgICBt
X2RhdGFiYXNlcy5hZGQoJmRhdGFiYXNlKTsKK30KKwordm9pZCBEYXRhYmFzZUFzc2VydGlvbk1h
bmFnZXI6OnJlbW92ZURhdGFiYXNlKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSkK
K3sKKyAgICBtX2RhdGFiYXNlcy5yZW1vdmUoZGF0YWJhc2UpOworfQorCit2b2lkIERhdGFiYXNl
QXNzZXJ0aW9uTWFuYWdlcjo6c3VzcGVuZCgpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKKworICAgIGlmIChtX3N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fc3Vz
cGVuZGVkID0gdHJ1ZTsKKworICAgIFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZTo6aG9sZExvY2so
KTsKKyAgICBmb3IgKGF1dG8mIGRhdGFiYXNlIDogbV9kYXRhYmFzZXMpCisgICAgICAgIGRhdGFi
YXNlLmludGVycnVwdCgpOworCisgICAgbV9hc3NlcnRpb24gPSBudWxscHRyOworfQorCit2b2lk
IERhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlcjo6cmVzdW1lKCkKK3sKKyAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOworCisgICAgaWYgKCFtX3N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgV2ViQ29yZTo6U1FMaXRlTG9ja1Njb3BlOjpyZWxlYXNlTG9jaygpOworfQorCit9IC8v
IG5hbWVwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvRGF0YWJh
c2VBc3NlcnRpb25NYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhYmFzZUFzc2Vy
dGlvbk1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNGExY2E3MThlNzU1MzBlYTRhYjEyZTkxOTYwNGJh
OWRiN2Q5ZmE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRGF0YWJh
c2VBc3NlcnRpb25NYW5hZ2VyLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiV2ViQ29yZS9TUUxpdGVMb2NrU2NvcGUuaCIKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK2NsYXNzIFByb2Nlc3NBc3NlcnRpb247CisKK2NsYXNzIERhdGFiYXNl
QXNzZXJ0aW9uTWFuYWdlciBmaW5hbCA6IHB1YmxpYyBXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGVJ
bXBsLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8RGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyLCBXZWFr
UHRyRmFjdG9yeUluaXRpYWxpemF0aW9uOjpFYWdlcj4geworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKERhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlcikKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBEYXRh
YmFzZUFzc2VydGlvbk1hbmFnZXIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBGdW5jdGlvbjxi
b29sKCk+JiYgc2hvdWxkU3VzcGVuZENoZWNrZXIpOworICAgIH5EYXRhYmFzZUFzc2VydGlvbk1h
bmFnZXIoKTsKKworICAgIHZvaWQgc2NvcGVCZWdpbnMoKSBmaW5hbDsKKyAgICB2b2lkIHNjb3Bl
RW5kcygpIGZpbmFsOworICAgIHZvaWQgYWRkRGF0YWJhc2UoV2ViQ29yZTo6U1FMaXRlRGF0YWJh
c2UmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZURhdGFiYXNlKFdlYkNvcmU6OlNRTGl0ZURhdGFi
YXNlJikgZmluYWw7CisKKyAgICB2b2lkIHN1c3BlbmQoKTsKKyAgICB2b2lkIHJlc3VtZSgpOwor
Citwcml2YXRlOgorICAgIGJvb2wgaXNBbnlEYXRhYmFzZUxvY2tlZCgpIGNvbnN0OworICAgIHZv
aWQgc2NoZWR1bGVBc3NlcnRpb25SZWxlYXNlKCk7CisgICAgdm9pZCByZWxlYXNlQXNzZXJ0aW9u
KCk7CisKKyAgICBTdHJpbmcgbV9pZGVudGlmaWVyOworICAgIGJvb2wgbV9hc3NlcnRpb25SZWxl
YXNlU2NoZWR1bGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fc2hvdWxkRGVsYXlBc3NlcnRpb25S
ZWxlYXNlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fc3VzcGVuZGVkIHsgZmFsc2UgfTsKKyAgICBS
ZWZQdHI8UHJvY2Vzc0Fzc2VydGlvbj4gbV9hc3NlcnRpb247CisgICAgV2Vha0hhc2hTZXQ8V2Vi
Q29yZTo6U1FMaXRlRGF0YWJhc2U+IG1fZGF0YWJhc2VzOworICAgIEZ1bmN0aW9uPGJvb2woKT4g
bV9zaG91bGRTdXNwZW5kQ2hlY2tlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlh
Rm9ybWF0UmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJl
YWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKaW5kZXggZWJmNzIxMjQyM2U5Y2Q1ZTE3YTQyNzVi
NTlhYWI4ZDE5OGM2OTViOC4uMDNlMTk5ZTExYmYyYTA4MWQ5MDRjMjZhZjllODZjODg5NmJlNzRj
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVy
L01lZGlhRm9ybWF0UmVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVk
aWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9WaWRlb1RyYWNrUHJpdmF0ZS5oPgogI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVk
aWFUaW1lQVZGb3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5r
Lmg+CiAjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVl
dWUuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDI5ZjdmZTA3ZGI2NmJkZTMwYTcxNWI1
OWY3MWU0ZjEzYmE1NTMzODMuLmIxOTg1MGJhMGM5MTkzOTE5MGQ3N2I4OGNmNzQzNDIxMmQzMTE4
NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTE0Myw2ICsxNDMsNyBAQCBTaGFyZWQvQXBw
bGVQYXkvbWFjL1dlYlBheW1lbnRDb29yZGluYXRvclByb3h5TWFjLm1tCiAKIFNoYXJlZC9BUElX
ZWJBcmNoaXZlLm1tCiBTaGFyZWQvQVBJV2ViQXJjaGl2ZVJlc291cmNlLm1tCitTaGFyZWQvRGF0
YWJhc2VBc3NlcnRpb25NYW5hZ2VyLmNwcAogU2hhcmVkL0RvY3VtZW50RWRpdGluZ0NvbnRleHQu
bW0KIFNoYXJlZC9Gb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmNwcAogU2hhcmVkL1Zpc2libGVD
b250ZW50UmVjdFVwZGF0ZUluZm8uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyMjQ2MDZjYzVlMTVkMTgwOGY1NTkzMjM2MTU5OTM0
ZDk3MWIyZjliLi43YWU0NDVkYzcxMmM2MTdiZDRkZGM5NTUzNWFmZDExNWJjNjc4MWU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMs
NyArMyw3IEBACiAJYXJjaGl2ZVZlcnNpb24gPSAxOwogCWNsYXNzZXMgPSB7CiAJfTsKLQlvYmpl
Y3RWZXJzaW9uID0gNTI7CisJb2JqZWN0VmVyc2lvbiA9IDU0OwogCW9iamVjdHMgPSB7CiAKIC8q
IEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCkBAIC0xNTEzLDYgKzE1MTMsNyBA
QAogCQk5M0Q2QjdCOTI1NTM0QTE3MDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1p
c3Npb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTNENkI3QjcyNTUzNEExMTAwNThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJt
aXNzaW9uQ2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5M0U2QTRFRTFCQzVERDM5MDBGOEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNFNkE0RUQx
QkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Y1NDlCNDFFMzE3NEI3MDAwRTcyMzkg
LyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjU0OUIzMUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90
Q29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsg
fTsgfTsKKwkJOTNGOUI2MTQyNkE2Mjc2NDAwNDFGOTZGIC8qIERhdGFiYXNlQXNzZXJ0aW9uTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNG
OUI2MTMyNkE2Mjc0QzAwNDFGOTZGIC8qIERhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlci5oICovOyB9
OwogCQk5NTBGMjg4MDI1MjQxNEVBMDBCNzRGMUMgLyogV0tNb3VzZURldmljZU9ic2VydmVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTBGMjg3RTI1
MjQxNEU5MDBCNzRGMUMgLyogV0tNb3VzZURldmljZU9ic2VydmVyLmggKi87IH07CiAJCTk1OTM2
NzVGMjUyRTVFMzEwMEQzRjBBMCAvKiBXS1N0eWx1c0RldmljZU9ic2VydmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTkzNjc1RDI1MkU1RTMwMDBE
M0YwQTAgLyogV0tTdHlsdXNEZXZpY2VPYnNlcnZlci5oICovOyB9OwogCQk5NUM5NDM5MTI1MjND
MEQwMDA1NEYzRDUgLyogQmFzZUJvYXJkU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NUM5NDM5MDI1MjNDMEQwMDA1NEYzRDUgLyogQmFzZUJvYXJk
U1BJLmggKi87IH07CkBAIC00OTQ3LDYgKzQ5NDgsOCBAQAogCQk5M0U2QTRFRDFCQzVERDM5MDBG
OEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBfV0tIaXRUZXN0UmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
RjU0OUIzMUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y1NDlCNTFFMzE3NERBMDAwRTcyMzkgLyog
V0tTbmFwc2hvdENvbmZpZ3VyYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXS1NuYXBzaG90Q29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTNGOUI2MTIyNkE2Mjc0QzAwNDFGOTZGIC8qIERhdGFiYXNlQXNzZXJ0aW9u
TWFuYWdlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Y5QjYxMzI2QTYyNzRDMDA0MUY5
NkYgLyogRGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFiYXNl
QXNzZXJ0aW9uTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NTBGMjg3
RTI1MjQxNEU5MDBCNzRGMUMgLyogV0tNb3VzZURldmljZU9ic2VydmVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLTW91c2VEZXZpY2VPYnNlcnZlci5oOyBwYXRoID0gaW9z
L1dLTW91c2VEZXZpY2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
NTBGMjg3RjI1MjQxNEVBMDBCNzRGMUMgLyogV0tNb3VzZURldmljZU9ic2VydmVyLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tNb3VzZURldmljZU9ic2VydmVy
Lm1tOyBwYXRoID0gaW9zL1dLTW91c2VEZXZpY2VPYnNlcnZlci5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTU5MzY3NUQyNTJFNUUzMDAwRDNGMEEwIC8qIFdLU3R5bHVzRGV2aWNl
T2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tTdHlsdXNEZXZp
Y2VPYnNlcnZlci5oOyBwYXRoID0gaW9zL1dLU3R5bHVzRGV2aWNlT2JzZXJ2ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU5OTgsNyArNjAwMSw2IEBACiAJCUY0MEJCQjQwMjU3
RkY0NkUwMDY3NDYzQSAvKiBHUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHUFVQcm9jZXNzV2FrZXVwTWVzc2FnZUFyZ3VtZW50cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGNDBEMUI2ODIyMEJEQzBGMDBCNDlBMDEgLyogV2ViQXV0b2Nv
cnJlY3Rpb25Db250ZXh0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4
dC5oOyBwYXRoID0gaW9zL1dlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNDEwNTY2MTIxMzA2OTlBMDA5MjI4MUQgLyogQVBJQXR0YWNobWVu
dENvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVBJQXR0YWNobWVudENvY29hLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGNDE0Q0UyQTI2OURERUQxMDBCRDIxNkEgLyog
R1BVUHJvY2Vzc0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gR1BVUHJvY2Vzc0NvY29hLm1tOyBwYXRoID0gY29jb2EvR1BVUHJvY2Vzc0NvY29hLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDE0Q0UyQzI2OURFNkVBMDBCRDIxNkEgLyog
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZVJlbmRl
cmluZ0JhY2tlbmRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDJENjMz
RjIyQTBFRkQzMDBEMkZCM0EgLyogV2ViQXV0b2NvcnJlY3Rpb25EYXRhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5oOyBwYXRoID0gaW9z
L1dlYkF1dG9jb3JyZWN0aW9uRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NDJENjM0MDIyQTBFRkQzMDBEMkZCM0EgLyogV2ViQXV0b2NvcnJlY3Rpb25EYXRhLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV2ViQXV0b2NvcnJlY3Rpb25EYXRh
Lm1tOyBwYXRoID0gaW9zL1dlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTY3ODIsNiArNjc4NCw4IEBACiAJCQkJNTEwNkQ3QkYxOEJEQkU3MzAw
MEFCMTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuY3BwICovLAogCQkJCTUxMDZEN0MwMThC
REJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNvbnRleHREYXRhLmggKi8sCiAJCQkJOTlGNjQy
RDIxRkFCRTM3ODAwOTYyMUU5IC8qIENvb3JkaW5hdGVTeXN0ZW0uaCAqLywKKwkJCQk5M0Y5QjYx
MjI2QTYyNzRDMDA0MUY5NkYgLyogRGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyLmNwcCAqLywKKwkJ
CQk5M0Y5QjYxMzI2QTYyNzRDMDA0MUY5NkYgLyogRGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyLmgg
Ki8sCiAJCQkJOTkwMzZBRTgyM0E5NzA4NzAwMDBCMDZBIC8qIERlYnVnZ2FibGVJbmZvRGF0YS5j
cHAgKi8sCiAJCQkJOTkwMzZBRTcyM0E5NzA4NzAwMDBCMDZBIC8qIERlYnVnZ2FibGVJbmZvRGF0
YS5oICovLAogCQkJCTBGMTg5Q0FCMjQ3NDlGMkYwMEU1OEQ4MSAvKiBEaXNwbGF5TGlua09ic2Vy
dmVySUQuaCAqLywKQEAgLTExNzEyLDE0ICsxMTcxNiw2IEBACiAJCQlwYXRoID0gY2FjaGU7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OwotCQlGNDE0Q0UyNzI2OURERTgwMDBCRDIx
NkEgLyogY29jb2EgKi8gPSB7Ci0JCQlpc2EgPSBQQlhHcm91cDsKLQkJCWNoaWxkcmVuID0gKAot
CQkJCUY0MTRDRTJBMjY5RERFRDEwMEJEMjE2QSAvKiBHUFVQcm9jZXNzQ29jb2EubW0gKi8sCi0J
CQkpOwotCQkJbmFtZSA9IGNvY29hOwotCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKLQkJfTsK
IAkJRjYzODk1NUExMzNCRjU3RDAwODk0MUQ1IC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xMjAyMyw2ICsxMjAxOSw3IEBACiAJCQkJNTc1OTdF
QkQyMTgxODQ5MDAwMzdGOTI0IC8qIEN0YXBBdXRoZW50aWNhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1NzU5N0VCOTIxODExRDlBMDAzN0Y5MjQgLyogQ3RhcEhpZERyaXZlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTcwREFBQ0EyMzAzODVGRDAwRThGQzA0IC8qIEN0YXBOZmNEcml2ZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTkzRjlCNjE0MjZBNjI3NjQwMDQxRjk2RiAvKiBEYXRhYmFzZUFz
c2VydGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1NUY5MTcxMUM1OTY3NkUwMDI5
RTkyRCAvKiBEYXRhRGV0ZWN0aW9uUmVzdWx0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUM3NTM4
MDE4M0JFNTBGMDA3MkNCMTUgLyogRGF0YVJlZmVyZW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTkwMzZBRTkyM0E5NzA4NzAwMDBCMDZBIC8qIERlYnVnZ2FibGVJbmZvRGF0YS5oIGluIEhlYWRl
cnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRy
YWNrZXIuY3BwIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNw
cAppbmRleCBlZWEwMDA0NGJhZmJmYmYzNWNlZjg4NjY4OWY0MDk1NGFkOWM0ZjI0Li5jODU4OWVh
NjRhNmI0ZmZhOThlNjc0MjBlYWZlOTVmMjBmYjE0OTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNs
dWRlICJTdG9yYWdlVHJhY2tlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYlN0b3JhZ2VOYW1lc3Bh
Y2VQcm92aWRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2VUcmFja2VyLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVGaWxlU3lzdGVtLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9TUUxpdGVTdGF0ZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KQEAgLTM4NSwxMyArMzg2
LDYgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6ZGVsZXRlQWxsT3JpZ2lucygpCiAgICAgfSk7CiB9
CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotc3RhdGljIHZvaWQgdHJ1bmNhdGVEYXRhYmFz
ZUZpbGUoU1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQotewotICAgIHNxbGl0ZTNfZmlsZV9jb250
cm9sKGRhdGFiYXNlLnNxbGl0ZTNIYW5kbGUoKSwgMCwgU1FMSVRFX1RSVU5DQVRFX0RBVEFCQVNF
LCAwKTsKLX0KLSNlbmRpZgotCiB2b2lkIFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlQWxsT3Jp
Z2lucygpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CkBAIC00MjksNyArNDIzLDcg
QEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdpbnMoKQogCiAgICAgaWYg
KG1fZGF0YWJhc2UuaXNPcGVuKCkpIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAg
ICB0cnVuY2F0ZURhdGFiYXNlRmlsZShtX2RhdGFiYXNlKTsKKyAgICAgICAgU1FMaXRlRmlsZVN5
c3RlbTo6dHJ1bmNhdGVEYXRhYmFzZUZpbGUobV9kYXRhYmFzZS5zcWxpdGUzSGFuZGxlKCkpOwog
I2VuZGlmCiAgICAgICAgIG1fZGF0YWJhc2UuY2xvc2UoKTsKICAgICB9CkBAIC01NDMsNyArNTM3
LDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZU9yaWdpbihjb25zdCBTdHJpbmcm
IG9yaWdpbklkZW50aWZpZXIpCiAKICAgICBpZiAoc2hvdWxkRGVsZXRlVHJhY2tlckZpbGVzKSB7
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgdHJ1bmNhdGVEYXRhYmFzZUZpbGUo
bV9kYXRhYmFzZSk7CisgICAgICAgIFNRTGl0ZUZpbGVTeXN0ZW06OnRydW5jYXRlRGF0YWJhc2VG
aWxlKG1fZGF0YWJhc2Uuc3FsaXRlM0hhbmRsZSgpKTsKICNlbmRpZgogICAgICAgICBtX2RhdGFi
YXNlLmNsb3NlKCk7CiAjaWYgIVBMQVRGT1JNKElPU19GQU1JTFkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434131</attachid>
            <date>2021-07-23 15:34:51 -0700</date>
            <delta_ts>2021-07-23 16:04:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227887-20210723153450.patch</filename>
            <type>text/plain</type>
            <size>59139</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzIxMDliYmJjNGM0OWNm
YmYxZGYyZWM2OWMyYWI5ZmQxNjU5NWY0Ny4uZTEyZWY1MTg3YWFiNmEyNTFmYTJhOTAxYzUyZGM3
OTIzNWNkZmYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTA3LTIzICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgYWxsIGZpbGUgbG9j
a3Mgc3luY2hyb25vdXNseSBpbiBuZXR3b3JrIHByb2Nlc3Mgd2hlbiBpdCBpcyBhYm91dCB0byBz
dXNwZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mjc4ODcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgwODAyMjI0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZl
cjo6c3RvcERhdGFiYXNlQWN0aXZpdGllc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6SURCU2VydmVyOjpoYXNEYXRhYmFzZUFjdGl2aXRpZXNPbk1haW5UaHJlYWQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnN0
b3BEYXRhYmFzZUFjdGl2aXRpZXNPbk1haW5UaHJlYWQpOiBEZWxldGVkLgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaDoKKyAgICAgICAgKiBTb3VyY2VzLnR4
dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNR
TGl0ZURhdGFiYXNlOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OndhbEF1dG9tYXRpY1RydW5j
YXRpb25Ib29rKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjp1c2VXQUxKb3Vy
bmFsTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6Y2xvc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmludGVycnVwdCk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZTo6c2V0SXNSdW5uaW5nVHJhbnNhY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmlzUnVubmluZ1RyYW5zYWN0aW9uIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVGaWxl
U3lzdGVtOjp0cnVuY2F0ZURhdGFiYXNlRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NR
TGl0ZUZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlTG9ja1Njb3Bl
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6OnNldEltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlTG9ja1Njb3BlOjppc0luc2lkZVNjb3BlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZTo6U1FMaXRlTG9ja1Njb3BlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZTo6flNRTGl0ZUxvY2tTY29wZSk6CisgICAgICAg
IChXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6OmFkZERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTGl0ZUxvY2tTY29wZTo6cmVtb3ZlRGF0YWJhc2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L3NxbC9TUUxpdGVMb2NrU2NvcGUuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vc3FsL1NR
TGl0ZVN0YXRlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OnNo
b3VsZEV4ZWN1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50OjpzdGVwKToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudDo6c3RlcFdpdGhvdXRMb2NrU2NvcGUp
OgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FM
aXRlVHJhbnNhY3Rpb246OmJlZ2luKToKKwogMjAyMS0wNy0yMyAgQWxleGV5IFNodmF5a2EgIDxz
aHZhaWthbGVzaEBnbWFpbC5jb20+CiAKICAgICAgICAgW0pTQ10gQ2FsbCBjdXN0b20gYWNjZXNz
b3JzIC8gdmFsdWVzIHdpdGggdGhlaXIgaG9sZGVyJ3MgZ2xvYmFsIG9iamVjdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA5YzZlNGU1NzljZmViZTQ1ZjI4Mjc2YmFlMTZkMmQzMzA3NTcyMzNlLi44ZDYxMGZhZTI2ZWRh
NGNjMjBmMDRjNzNmYjFhNzE1MjQ3MzhkZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisy
MDIxLTA3LTIzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIERy
b3AgYWxsIGZpbGUgbG9ja3Mgc3luY2hyb25vdXNseSBpbiBuZXR3b3JrIHByb2Nlc3Mgd2hlbiBp
dCBpcyBhYm91dCB0byBzdXNwZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjc4ODcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgwODAyMjI0Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQlNlcnZlcjo6fldlYklEQlNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZl
cjo6c3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6cmVzdW1lKToKKyAg
ICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dl
YklEQlNlcnZlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmNyZWF0ZVdlYklEQlNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpzdXNwZW5kSURCU2VydmVycyk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9pb3Mv
TmV0d29ya1Byb2Nlc3NJT1MubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpz
ZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL0RhdGFi
YXNlQXNzZXJ0aW9uTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFz
ZUFzc2VydGlvbk1hbmFnZXI6OkRhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlcik6CisgICAgICAgIChX
ZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlcjo6fkRhdGFiYXNlQXNzZXJ0aW9uTWFuYWdl
cik6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlcjo6c2NvcGVCZWdp
bnMpOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXI6OnNjb3BlRW5k
cyk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlcjo6aXNBbnlEYXRh
YmFzZUxvY2tlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uTWFu
YWdlcjo6c2NoZWR1bGVBc3NlcnRpb25SZWxlYXNlKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJh
c2VBc3NlcnRpb25NYW5hZ2VyOjpyZWxlYXNlQXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
RGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyOjphZGREYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6
OkRhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlcjo6cmVtb3ZlRGF0YWJhc2UpOgorICAgICAgICAoV2Vi
S2l0OjpEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXI6OnN1c3BlbmQpOgorICAgICAgICAoV2ViS2l0
OjpEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXI6OnJlc3VtZSk6CisgICAgICAgICogU2hhcmVkL0Rh
dGFiYXNlQXNzZXJ0aW9uTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvbWFjL01l
ZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcDoKKyAgICAgICAgKiBTb3VyY2Vz
Q29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
CiAyMDIxLTA3LTIzICBSb2JlcnQgSmVubmVyICA8SmVubmVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4MDIwNS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXgg
NWE5M2E0ZDdlZjA5NWFjYzgxMGU2NjljYmNhNGIyNWY0ZmUwNDJkZi4uZGU4NDBjMzVhMzI3N2U4
N2ViOTg3NTNjMTE3NDllNjAxMTFlNTk4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAyMS0wNy0yMyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKwor
ICAgICAgICBEcm9wIGFsbCBmaWxlIGxvY2tzIHN5bmNocm9ub3VzbHkgaW4gbmV0d29yayBwcm9j
ZXNzIHdoZW4gaXQgaXMgYWJvdXQgdG8gc3VzcGVuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3ODg3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
MDgwMjIyND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFN0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
VHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
VHJhY2tlcjo6c3luY0RlbGV0ZU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OnRydW5jYXRlRGF0
YWJhc2VGaWxlKTogRGVsZXRlZC4KKwogMjAyMS0wNy0xOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1
QGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgSURCVHJhbnNhY3Rpb24uY29tbWl0KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cnZlci5jcHAKaW5kZXggYjRkNTU5NDU0MjQ4MDlhZjI2OGIwYzc0Mzg3NDFhNTYyOTE4ZGMyNC4u
MDg2ZWQxMzE0NjI1MDk5MTJhMDUzYjE3YmYwMjYyZDliYzRlYzA1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAg
LTc2NywyNiArNzY3LDkgQEAgdm9pZCBJREJTZXJ2ZXI6OnVwZ3JhZGVGaWxlc0lmTmVjZXNzYXJ5
KCkKICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG5ld1ZlcnNpb25EaXJl
Y3RvcnkpOwogfQogCi1ib29sIElEQlNlcnZlcjo6aGFzRGF0YWJhc2VBY3Rpdml0aWVzT25NYWlu
VGhyZWFkKCkgY29uc3QKK3ZvaWQgSURCU2VydmVyOjpzdG9wRGF0YWJhc2VBY3Rpdml0aWVzSWZO
ZWVkZWQoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKG1fbG9j
ay5pc0hlbGQoKSk7Ci0KLSAgICBpZiAobV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6IG1fdW5pcXVlSURC
RGF0YWJhc2VNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKCFkYXRhYmFzZS0+aWRlbnRpZmll
cigpLmlzVHJhbnNpZW50KCkgJiYgZGF0YWJhc2UtPmhhc0FjdGl2ZVRyYW5zYWN0aW9ucygpKQot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotdm9pZCBJREJTZXJ2ZXI6OnN0b3BEYXRhYmFzZUFjdGl2aXRpZXNPbk1haW5UaHJlYWQo
KQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKG1fbG9jay5pc0hl
bGQoKSk7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKICAgICAvLyBPbmx5IHN0b3Ag
bm9uLWVwaGVtZXJhbCBJREJTZXJ2ZXIgdGhhdCBjYW4gaG9sZCBkYXRhYmFzZSBmaWxlIGxvY2su
CiAgICAgaWYgKG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKaW5kZXggZDg4MzY0OWE1
YzhkNWI1OWYwMmMyYmRhY2RkZTY3OGExY2EzYzQyZi4uYmFhODZmNWNhNGIzNDAxODM1MTcxNjE3
NjU4MGQ5ZmM4NjRiODM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaApAQCAtMTA3LDggKzEwNyw3IEBAIHB1YmxpYzoKICAg
ICBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbiByZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50
T3JpZ2luJiwgdWludDY0X3QgdGFza1NpemUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB1
aW50NjRfdCBkaXNrVXNhZ2UoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBDbGll
bnRPcmlnaW4mKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzRGF0YWJhc2VBY3Rpdml0
aWVzT25NYWluVGhyZWFkKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wRGF0
YWJhc2VBY3Rpdml0aWVzT25NYWluVGhyZWFkKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
dG9wRGF0YWJhc2VBY3Rpdml0aWVzSWZOZWVkZWQoKTsKIAogcHJpdmF0ZToKICAgICBVbmlxdWVJ
REJEYXRhYmFzZSYgZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBJREJEYXRhYmFz
ZUlkZW50aWZpZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZTc2OTRjMmNlYjkxYTU2M2ViODYxNzMz
MzVhNjUxYmNmZjI3ZDE2Ny4uOTM1YTBjMzhhNTcxYzdkYTAzZWZlYTRhOTM1MWJhOTA2MGYxYzZm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTIxOTAsNiArMjE5MCw3IEBAIHBsYXRmb3JtL3NxbC9TUUxp
dGVBdXRob3JpemVyLmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAogcGxhdGZv
cm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVGaWxl
U3lzdGVtLmNwcAorcGxhdGZvcm0vc3FsL1NRTGl0ZUxvY2tTY29wZS5jcHAKIHBsYXRmb3JtL3Nx
bC9TUUxpdGVTdGF0ZW1lbnQuY3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50QXV0b1Jl
c2V0U2NvcGUuY3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzYx
MDQxOGJiZmE4ODZmOTc0OGQ1NTlkYTRhYmE4Y2E1OGUxYmY0Yi4uZDFmZWU1YzZkNTJmNjliNzBh
OWQ3MzMwZDEzOWUzNzZiOWMwOGEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjkzNiw2ICsyOTM2LDcgQEAKIAkJOTNGNkI4
MUYyNTY3QTA4QzAwQTA4NDg4IC8qIFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjZCODFD
MjU2NzlGNzAwMEEwODQ4OCAvKiBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGNkI4
MjIyNTY3QTY1NjAwQTA4NDg4IC8qIFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGNkI4MUIyNTY3
OUY2RjAwQTA4NDg4IC8qIFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjZGMUVFMTI3Rjcw
QjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGNkYxRUIxMjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdM
Q29udGV4dEV2ZW50LmggKi87IH07CisJCTkzRjhGMEYzMjY5ODI2MTMwMEE5RjMzMSAvKiBTUUxp
dGVMb2NrU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzRjhGMEYxMjY5ODI2MTIwMEE5RjMzMSAvKiBTUUxpdGVMb2NrU2NvcGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Y5MjU0MzBGN0VG
NUI4MDA3RTM3QzkgLyogUmFkaW9CdXR0b25Hcm91cHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjkyNTQxMEY3RUY1QjgwMDdFMzdDOSAvKiBSYWRp
b0J1dHRvbkdyb3Vwcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTkzRjlCNkUxMEJBMEZCNzIwMDg1NDA2NCAvKiBKU0NvbW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjlCNkRGMEJBMEZCNzIw
MDg1NDA2NCAvKiBKU0NvbW1lbnQuaCAqLzsgfTsKIAkJOTNGOUI3QTEwQkE2MDMyNjAwODU0MDY0
IC8qIEpTQ0RBVEFTZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0Y5Qjc5RjBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uaCAq
LzsgfTsKQEAgLTExODQ4LDYgKzExODQ5LDggQEAKIAkJOTNGOEIzMDUwQTMwMEZFMTAwRjYxQUI4
IC8qIENvZGVHZW5lcmF0b3IucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0g
Q29kZUdlbmVyYXRvci5wbTsgcGF0aCA9IHNjcmlwdHMvQ29kZUdlbmVyYXRvci5wbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGOEIzMDYwQTMwMEZFQTAwRjYxQUI4IC8qIENvZGVH
ZW5lcmF0b3JKUy5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBDb2RlR2Vu
ZXJhdG9ySlMucG07IHBhdGggPSBzY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+Ijsgd3JhcHNMaW5lcyA9IDA7IH07CiAJCTkzRjhCMzA3MEEzMDBGRUEwMEY2
MUFCOCAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7
IG5hbWUgPSAiZ2VuZXJhdGUtYmluZGluZ3MucGwiOyBwYXRoID0gInNjcmlwdHMvZ2VuZXJhdGUt
YmluZGluZ3MucGwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Y4RjBFRjI2OTgy
NjEyMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNRTGl0ZUxvY2tTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTkzRjhGMEYxMjY5ODI2MTIwMEE5RjMzMSAvKiBTUUxpdGVMb2NrU2NvcGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMaXRlTG9ja1Njb3BlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjkyNTQxMEY3RUY1QjgwMDdFMzdDOSAvKiBSYWRp
b0J1dHRvbkdyb3Vwcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYWRpb0J1
dHRvbkdyb3Vwcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y5MjU0MjBGN0VG
NUI4MDA3RTM3QzkgLyogUmFkaW9CdXR0b25Hcm91cHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmFkaW9CdXR0b25Hcm91cHMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5M0Y5QjZERTBCQTBGQjcyMDA4NTQwNjQgLyogSlNDb21tZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ29tbWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODU1MCw2ICsxODU1Myw4IEBACiAJCQkJN0U0NzRF
MUIxMjQ5NERDOTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oICovLAog
CQkJCUI1QTY4NDIzMEZGQUJFQUEwMEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmNwcCAqLywK
IAkJCQlCNUE2ODQyMTBGRkFCRTk4MDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5oICovLAor
CQkJCTkzRjhGMEVGMjY5ODI2MTIwMEE5RjMzMSAvKiBTUUxpdGVMb2NrU2NvcGUuY3BwICovLAor
CQkJCTkzRjhGMEYxMjY5ODI2MTIwMEE5RjMzMSAvKiBTUUxpdGVMb2NrU2NvcGUuaCAqLywKIAkJ
CQkxQTIyNDY0NTBDQzk4RERCMDBDMDUyNDAgLyogU1FMaXRlU3RhdGVtZW50LmNwcCAqLywKIAkJ
CQkxQTIyNDY0NjBDQzk4RERCMDBDMDUyNDAgLyogU1FMaXRlU3RhdGVtZW50LmggKi8sCiAJCQkJ
RUJFNUIyMjcyNDVBMjlDRjAwM0E1QTg4IC8qIFNRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3Bl
LmNwcCAqLywKQEAgLTM1NDEyLDYgKzM1NDE3LDcgQEAKIAkJCQk1MTJCREI0QjFDNDU2RkZBMDA2
NDk0REYgLyogU1FMaXRlSURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTFF
QzEzMDFDNTBBQkY1MDAzMkY5ODMgLyogU1FMaXRlSURCQ3Vyc29yLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTFFQzEyQzFDNTBBQkJGMDAzMkY5ODMgLyogU1FMaXRlSURCVHJhbnNhY3Rpb24uaCBp
biBIZWFkZXJzICovLAorCQkJCTkzRjhGMEYzMjY5ODI2MTMwMEE5RjMzMSAvKiBTUUxpdGVMb2Nr
U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjI0NjRDMENDOThEREIwMEMwNTI0MCAvKiBT
UUxpdGVTdGF0ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUVCRTVCMjI2MjQ1QTI2RUYwMDNB
NUE4OCAvKiBTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUEyMjQ2NEUwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZVRyYW5zYWN0aW9uLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVE
YXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
Y3BwCmluZGV4IGExMTEwMjU2ODFlNDY5MzEyM2ZiYzhjYjQ5MGE4MzcwZGIzOWMxODMuLmFlZDQ5
ZGRhNTg4YmQ5MjgxZWIwNjMxZmJhMzM4NzYyNmM0ZjM1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIk1lbW9yeVJlbGVhc2UuaCIKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVRyYWNrZXIu
aCIKICNpbmNsdWRlICJTUUxpdGVGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiU1FMaXRlTG9ja1Nj
b3BlLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSA8bXV0ZXg+CiAj
aW5jbHVkZSA8c3FsaXRlMy5oPgpAQCAtMTE0LDcgKzExNSwxMyBAQCBib29sIFNRTGl0ZURhdGFi
YXNlOjpvcGVuKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIE9wZW5Nb2RlIG9wZW5Nb2RlKQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBtX29wZW5FcnJvciA9IHNxbGl0
ZTNfb3Blbl92MihGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZW5hbWUp
LmRhdGEoKSwgJm1fZGIsIGZsYWdzLCBudWxscHRyKTsKKyAgICAgICAgeworICAgICAgICAgICAg
U1FMaXRlTG9ja1Njb3BlIGxvY2tTY29wZTsKKyAgICAgICAgICAgIG1fb3BlbkVycm9yID0gc3Fs
aXRlM19vcGVuX3YyKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlbmFt
ZSkuZGF0YSgpLCAmbV9kYiwgZmxhZ3MsIG51bGxwdHIpOworICAgICAgICAgICAgaWYgKG1fb3Bl
bkVycm9yID09IFNRTElURV9PSykKKyAgICAgICAgICAgICAgICBsb2NrU2NvcGUuYWRkRGF0YWJh
c2UoKnRoaXMpOworICAgICAgICB9CisKICAgICAgICAgaWYgKG1fb3BlbkVycm9yICE9IFNRTElU
RV9PSykgewogICAgICAgICAgICAgbV9vcGVuRXJyb3JNZXNzYWdlID0gbV9kYiA/IHNxbGl0ZTNf
ZXJybXNnKG1fZGIpIDogInNxbGl0ZV9vcGVuIHJldHVybmVkIG51bGwiOwogICAgICAgICAgICAg
TE9HX0VSUk9SKCJTUUxpdGUgZGF0YWJhc2UgZmFpbGVkIHRvIGxvYWQgZnJvbSAlc1xuQ2F1c2Ug
LSAlcyIsIGZpbGVuYW1lLmFzY2lpKCkuZGF0YSgpLApAQCAtMTY3LDYgKzE3NCw3IEBAIHN0YXRp
YyBpbnQgd2FsQXV0b21hdGljVHJ1bmNhdGlvbkhvb2sodm9pZCogY29udGV4dCwgc3FsaXRlMyog
ZGIsIGNvbnN0IGNoYXIqIGRiCiAKICAgICBpZiAod2FsUGFnZUNvdW50ID49IGNoZWNrcG9pbnRU
aHJlc2hvbGQpIHsKICAgICAgICAgaW50IG5ld1dhbFBhZ2VDb3VudCA9IDA7CisgICAgICAgIEFT
U0VSVChTUUxpdGVMb2NrU2NvcGU6OmlzSW5zaWRlU2NvcGUoKSk7CiAgICAgICAgIGludCByZXN1
bHQgPSBzcWxpdGUzX3dhbF9jaGVja3BvaW50X3YyKGRiLCBkYk5hbWUsIFNRTElURV9DSEVDS1BP
SU5UX1RSVU5DQVRFLCAmbmV3V2FsUGFnZUNvdW50LCBudWxscHRyKTsKIAogI2lmIExPR19ESVNB
QkxFRApAQCAtMTk0LDcgKzIwMiw2IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmVuYWJsZUF1dG9t
YXRpY1dBTFRydW5jYXRpb24oKQogCiB2b2lkIFNRTGl0ZURhdGFiYXNlOjp1c2VXQUxKb3VybmFs
TW9kZSgpCiB7Ci0gICAgbV91c2VXQUwgPSB0cnVlOwogICAgIHsKICAgICAgICAgYXV0byB3YWxT
dGF0ZW1lbnQgPSBwcmVwYXJlU3RhdGVtZW50KCJQUkFHTUEgam91cm5hbF9tb2RlPVdBTDsiX3Mp
OwogICAgICAgICBpZiAod2FsU3RhdGVtZW50ICYmIHdhbFN0YXRlbWVudC0+c3RlcCgpID09IFNR
TElURV9ST1cpIHsKQEAgLTIzMiwxMiArMjM5LDEyIEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmNs
b3NlKFNob3VsZFNldEVycm9yU3RhdGUgc2hvdWxkU2V0RXJyb3JTdGF0ZSkKICAgICAgICAgfQog
CiAgICAgICAgIGludCBjbG9zZVJlc3VsdDsKLSAgICAgICAgaWYgKG1fdXNlV0FMKSB7Ci0gICAg
ICAgICAgICAvLyBDbG9zZSBpbiB0aGUgc2NvcGUgb2YgY291bnRlciBhcyBpdCBtYXkgYWNxdWly
ZSBsb2NrIG9mIGRhdGFiYXNlLgorICAgICAgICB7CiAgICAgICAgICAgICBTUUxpdGVUcmFuc2Fj
dGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7CisgICAgICAgICAg
ICBTUUxpdGVMb2NrU2NvcGUgbG9ja1Njb3BlOwogICAgICAgICAgICAgY2xvc2VSZXN1bHQgPSBz
cWxpdGUzX2Nsb3NlKGRiKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBjbG9zZVJlc3Vs
dCA9IHNxbGl0ZTNfY2xvc2UoZGIpOworICAgICAgICAgICAgbG9ja1Njb3BlLnJlbW92ZURhdGFi
YXNlKCp0aGlzKTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmIChjbG9zZVJlc3VsdCAhPSBTUUxJ
VEVfT0spCiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTUUxEYXRhYmFzZSwgIlNRTGl0
ZURhdGFiYXNlOjpjbG9zZTogRmFpbGVkIHRvIGNsb3NlIGRhdGFiYXNlICglZCkgLSAle3B1Ymxp
Y31zIiwgY2xvc2VSZXN1bHQsIGxhc3RFcnJvck1zZygpKTsKQEAgLTQ1OCw4ICs0NjUsMTQgQEAg
aW50IFNRTGl0ZURhdGFiYXNlOjpydW5JbmNyZW1lbnRhbFZhY3V1bUNvbW1hbmQoKQogdm9pZCBT
UUxpdGVEYXRhYmFzZTo6aW50ZXJydXB0KCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRh
YmFzZUNsb3NpbmdNdXRleCB9OwotICAgIGlmIChtX2RiKQotICAgICAgICBzcWxpdGUzX2ludGVy
cnVwdChtX2RiKTsKKyAgICAKKyAgICBpZiAoIW1fZGIpCisgICAgICAgIHJldHVybjsKKworICAg
IHNxbGl0ZTNfaW50ZXJydXB0KG1fZGIpOworCisgICAgaWYgKGF1dG8gcXVlcnkgPSBwcmVwYXJl
U3RhdGVtZW50KCJST0xMQkFDSyJfcykpCisgICAgICAgIHF1ZXJ5LT5zdGVwV2l0aG91dExvY2tT
Y29wZSgpOwogfQogCiBpbnQ2NF90IFNRTGl0ZURhdGFiYXNlOjpsYXN0SW5zZXJ0Um93SUQoKQpA
QCAtNzMzLDQgKzc0NiwxNCBAQCBFeHBlY3RlZDxVbmlxdWVSZWY8U1FMaXRlU3RhdGVtZW50Piwg
aW50PiBTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZUhlYXBTdGF0ZW1lbnQoQQogICAgIHJldHVybiBV
bmlxdWVSZWY8U1FMaXRlU3RhdGVtZW50PigqbmV3IFNRTGl0ZVN0YXRlbWVudCgqdGhpcywgc3Fs
U3RhdGVtZW50LnZhbHVlKCkpKTsKIH0KIAordm9pZCBTUUxpdGVEYXRhYmFzZTo6c2V0SXNSdW5u
aW5nVHJhbnNhY3Rpb24oYm9vbCBpc1J1bm5pbmdUcmFuc2FjdGlvbikKK3sKKyAgICBtX2lzUnVu
bmluZ1RyYW5zYWN0aW9uID0gaXNSdW5uaW5nVHJhbnNhY3Rpb247Cit9CisKK2Jvb2wgU1FMaXRl
RGF0YWJhc2U6OmlzUnVubmluZ1RyYW5zYWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9p
c1J1bm5pbmdUcmFuc2FjdGlvbjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAppbmRleCA0YjIyYzhmZTY4
ZTM1ZmJkZDA5NzI1ODY4YzRjOWEwZTVjYWIyY2YwLi40YjBkZGJmM2NkNThlNWMwY2Q1NGIyYTk2
ODdkM2QwN2YwY2M1NGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
RGF0YWJhc2UuaApAQCAtMTMwLDcgKzEzMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEF1dGhv
cml6ZXIoRGF0YWJhc2VBdXRob3JpemVyJik7CiAKICAgICBMb2NrJiBkYXRhYmFzZU11dGV4KCkg
eyByZXR1cm4gbV9sb2NraW5nTXV0ZXg7IH0KLSAgICBib29sIGlzQXV0b0NvbW1pdE9uKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0F1dG9Db21taXRPbigpIGNvbnN0OwogCiAg
ICAgLy8gVGhlIFNRTGl0ZSBBVVRPX1ZBQ1VVTSBwcmFnbWEgY2FuIGJlIGVpdGhlciBOT05FLCBG
VUxMLCBvciBJTkNSRU1FTlRBTC4KICAgICAvLyBOT05FIC0gU1FMaXRlIGRvZXMgbm90IGRvIGFu
eSB2YWN1dW1pbmcKQEAgLTE2Miw2ICsxNjIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbmNyZW1l
bnRTdGF0ZW1lbnRDb3VudCgpOwogICAgIHZvaWQgZGVjcmVtZW50U3RhdGVtZW50Q291bnQoKTsK
IAorICAgIHZvaWQgc2V0SXNSdW5uaW5nVHJhbnNhY3Rpb24oYm9vbCk7CisgICAgYm9vbCBpc1J1
bm5pbmdUcmFuc2FjdGlvbigpIGNvbnN0OworCiBwcml2YXRlOgogICAgIHN0YXRpYyBpbnQgYXV0
aG9yaXplckZ1bmN0aW9uKHZvaWQqLCBpbnQsIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29u
c3QgY2hhciosIGNvbnN0IGNoYXIqKTsKIApAQCAtMTgxLDggKzE4NCw2IEBAIHByaXZhdGU6CiAg
ICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IG1fc3RhdGVtZW50Q291bnQgeyAwIH07CiAjZW5kaWYK
IAotICAgIGJvb2wgbV91c2VXQUwgeyBmYWxzZSB9OwotCiAgICAgTG9jayBtX2F1dGhvcml6ZXJM
b2NrOwogICAgIFJlZlB0cjxEYXRhYmFzZUF1dGhvcml6ZXI+IG1fYXV0aG9yaXplciBXVEZfR1VB
UkRFRF9CWV9MT0NLKG1fYXV0aG9yaXplckxvY2spOwogCkBAIC0xOTMsNiArMTk0LDggQEAgcHJp
dmF0ZToKIAogICAgIGludCBtX29wZW5FcnJvciB7IFNRTElURV9FUlJPUiB9OwogICAgIENTdHJp
bmcgbV9vcGVuRXJyb3JNZXNzYWdlOworCisgICAgYm9vbCBtX2lzUnVubmluZ1RyYW5zYWN0aW9u
IHsgZmFsc2UgfTsKIH07CiAKIGlubGluZSB2b2lkIFNRTGl0ZURhdGFiYXNlOjppbmNyZW1lbnRT
dGF0ZW1lbnRDb3VudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
RmlsZVN5c3RlbS5jcHAKaW5kZXggNzZlNDVhZjM0ZWQwOTNmZDlmMjc2ZGQ1ZDRiOTIyYTQxNjM0
ZDlhZS4uOGI5YjMyMWRjNjQ4MTAwZmNiZjRjNWMyMmY1MGYxNGIxNWEzMTg4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcApAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIlNRTGl0ZUZpbGVTeXN0ZW0uaCIKIAogI2luY2x1ZGUgIlNR
TGl0ZURhdGFiYXNlLmgiCisjaW5jbHVkZSAiU1FMaXRlTG9ja1Njb3BlLmgiCiAjaW5jbHVkZSAi
U1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4K
ICNpbmNsdWRlIDxzcWxpdGUzLmg+CkBAIC05NCw2ICs5NSw3IEBAIGJvb2wgU1FMaXRlRmlsZVN5
c3RlbTo6ZGVsZXRlRGF0YWJhc2VGaWxlKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6dHJ1bmNhdGVEYXRhYmFz
ZUZpbGUoc3FsaXRlMyogZGF0YWJhc2UpCiB7CisgICAgU1FMaXRlTG9ja1Njb3BlIGxvY2tTY29w
ZTsKICAgICByZXR1cm4gc3FsaXRlM19maWxlX2NvbnRyb2woZGF0YWJhc2UsIDAsIFNRTElURV9U
UlVOQ0FURV9EQVRBQkFTRSwgMCkgPT0gU1FMSVRFX09LOwogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaAppbmRleCBjNjhkOWM3ZTdh
Zjk4OTc2YTFlZDNkY2I2ZjJhY2ZlNGI2Y2Y1YzJmLi5kMzI2OGJkODVjY2U0MjJhNmUzN2E4OWIy
MzAyZGY0ZjZmOGVkN2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVGaWxlU3lzdGVtLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIC8vIFRydW5jYXRl
cyBhIGRhdGFiYXNlIGZpbGUuIFVzZWQgd2hlbiBNb2JpbGVTYWZhcmlTZXR0aW5ncyBkZWxldGVz
IGEgZGF0YWJhc2UgZmlsZSwKICAgICAvLyBzaW5jZSBkZWxldGluZyB0aGUgZmlsZSBudWtlcyB0
aGUgUE9TSVggZmlsZSBsb2NrcyB3aGljaCB3b3VsZCBwb3RlbnRpYWxseSBjYXVzZSBTYWZhcmkK
ICAgICAvLyB0byBjb3JydXB0IHRoZSBuZXcgZGIgaWYgaXQncyBydW5uaW5nIGluIHRoZSBiYWNr
Z3JvdW5kLgotICAgIHN0YXRpYyBib29sIHRydW5jYXRlRGF0YWJhc2VGaWxlKHNxbGl0ZTMqIGRh
dGFiYXNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCB0cnVuY2F0ZURhdGFiYXNl
RmlsZShzcWxpdGUzKiBkYXRhYmFzZSk7CiAjZW5kaWYKICAgICAKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgdWludDY0X3QgZGF0YWJhc2VGaWxlU2l6ZShjb25zdCBTdHJpbmcmIGZpbGVOYW1l
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2Nv
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUxvY2tTY29wZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGEzY2UzZDcxNzhjNDg1MjVjMzE4N2Q0ODIxZGVlMTU0Mzc0OTdkNQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2Nv
cGUuY3BwCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiU1FMaXRlTG9ja1Njb3BlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RhdGljIExvY2sgc2NvcGVMb2NrOworc3RhdGljIFNRTGl0ZUxvY2tTY29wZUltcGwqIHNfaW1w
bCB7IG51bGxwdHIgfTsKK3N0YXRpYyBib29sIGlzTG9ja2VkRXh0ZXJuYWxseSB7IGZhbHNlIH07
CisKK3ZvaWQgU1FMaXRlTG9ja1Njb3BlOjpzZXRJbXBsKFNRTGl0ZUxvY2tTY29wZUltcGwqIGlt
cGwpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjb3BlTG9jayB9OworICAgIHNfaW1wbCA9IGlt
cGw7Cit9CisKK3ZvaWQgU1FMaXRlTG9ja1Njb3BlOjpob2xkTG9jaygpIFdURl9JR05PUkVTX1RI
UkVBRF9TQUZFVFlfQU5BTFlTSVMKK3sKKyAgICBzY29wZUxvY2subG9jaygpOworICAgIGlzTG9j
a2VkRXh0ZXJuYWxseSA9IHRydWU7Cit9CisKK3ZvaWQgU1FMaXRlTG9ja1Njb3BlOjpyZWxlYXNl
TG9jaygpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKK3sKKyAgICBpc0xvY2tl
ZEV4dGVybmFsbHkgPSBmYWxzZTsKKyAgICBzY29wZUxvY2sudW5sb2NrKCk7Cit9CisKK2Jvb2wg
U1FMaXRlTG9ja1Njb3BlOjppc0luc2lkZVNjb3BlKCkKK3sKKyAgICByZXR1cm4gc2NvcGVMb2Nr
LmlzTG9ja2VkKCkgJiYgIWlzTG9ja2VkRXh0ZXJuYWxseTsKK30KKworU1FMaXRlTG9ja1Njb3Bl
OjpTUUxpdGVMb2NrU2NvcGUoKQoreworICAgIHNjb3BlTG9jay5sb2NrKCk7CisgICAgaWYgKHNf
aW1wbCkKKyAgICAgICAgc19pbXBsLT5zY29wZUJlZ2lucygpOworfQorCitTUUxpdGVMb2NrU2Nv
cGU6On5TUUxpdGVMb2NrU2NvcGUoKQoreworICAgIGlmIChzX2ltcGwpCisgICAgICAgIHNfaW1w
bC0+c2NvcGVFbmRzKCk7CisgICAgc2NvcGVMb2NrLnVubG9jaygpOworfQorCit2b2lkIFNRTGl0
ZUxvY2tTY29wZTo6YWRkRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQoreworICAg
IGlmIChzX2ltcGwpCisgICAgICAgIHNfaW1wbC0+YWRkRGF0YWJhc2UoZGF0YWJhc2UpOworfQor
Cit2b2lkIFNRTGl0ZUxvY2tTY29wZTo6cmVtb3ZlRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmIGRh
dGFiYXNlKQoreworICAgIGlmIChzX2ltcGwpCisgICAgICAgIHNfaW1wbC0+cmVtb3ZlRGF0YWJh
c2UoZGF0YWJhc2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlTG9ja1Njb3BlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlTG9ja1Njb3BlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQ3ZTJiZjg3
ODg3ZDBjODc2Y2ZlNjE2ZTQwOWVjY2UyOTU0ODk4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2NvcGUuaApAQCAtMCwwICsxLDU3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgU1FMaXRlRGF0YWJhc2U7CitjbGFzcyBTUUxpdGVUcmFuc2FjdGlvbjsKKworY2xhc3MgU1FM
aXRlTG9ja1Njb3BlSW1wbCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+U1FMaXRlTG9ja1Njb3Bl
SW1wbCgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgdm9pZCBzY29wZUJlZ2lucygpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2NvcGVFbmRzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRE
YXRhYmFzZShTUUxpdGVEYXRhYmFzZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGF0
YWJhc2UoU1FMaXRlRGF0YWJhc2UmKSA9IDA7Cit9OworCitjbGFzcyBTUUxpdGVMb2NrU2NvcGUg
eworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldEltcGwoU1FMaXRl
TG9ja1Njb3BlSW1wbCopOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGhvbGRMb2Nr
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVsZWFzZUxvY2soKTsKKyAgICBz
dGF0aWMgYm9vbCBpc0luc2lkZVNjb3BlKCk7CisKKyAgICBTUUxpdGVMb2NrU2NvcGUoKTsKKyAg
ICB+U1FMaXRlTG9ja1Njb3BlKCk7CisKKyAgICB2b2lkIGFkZERhdGFiYXNlKFNRTGl0ZURhdGFi
YXNlJik7CisgICAgdm9pZCByZW1vdmVEYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYpOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlU3RhdGVtZW50LmNwcAppbmRleCAwMWZmM2VhNDExNmFmNTRhYjhjOTZmMGU0ZjEyZjVk
ODJjNTcyYjAyLi44MDA5MTk5MTc1YTMyY2Q4MTYzNDAxZjc2Zjc5ZDExZTE2ODI4NmExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTUUxWYWx1ZS5o
IgogI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIgorI2luY2x1ZGUgIlNRTGl0ZUxv
Y2tTY29wZS5oIgogI2luY2x1ZGUgPHNxbGl0ZTMuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CkBAIC02MywxMCArNjQsNDggQEAgU1FMaXRl
U3RhdGVtZW50Ojp+U1FMaXRlU3RhdGVtZW50KCkKICAgICBtX2RhdGFiYXNlLmRlY3JlbWVudFN0
YXRlbWVudENvdW50KCk7CiB9CiAKK2Jvb2wgU1FMaXRlU3RhdGVtZW50OjpzaG91bGRFeGVjdXRl
KCkKK3sKKyAgICBhdXRvIHF1ZXJ5ID0gc3FsaXRlM19zcWwobV9zdGF0ZW1lbnQpOworICAgIGlm
ICghc3RyY21wKHF1ZXJ5LCAiQkVHSU4iKSB8fCAhc3RyY21wKHF1ZXJ5LCAiQkVHSU4gSU1NRURJ
QVRFIikpCisgICAgICAgIG1fZGF0YWJhc2Uuc2V0SXNSdW5uaW5nVHJhbnNhY3Rpb24odHJ1ZSk7
CisgICAgZWxzZSBpZiAoIXN0cmNtcChxdWVyeSwgIkNPTU1JVCIpIHx8ICFzdHJjbXAocXVlcnks
ICJST0xMQkFDSyIpKQorICAgICAgICBtX2RhdGFiYXNlLnNldElzUnVubmluZ1RyYW5zYWN0aW9u
KGZhbHNlKTsKKyAgICBlbHNlIGlmIChtX2RhdGFiYXNlLmlzUnVubmluZ1RyYW5zYWN0aW9uKCkg
JiYgbV9kYXRhYmFzZS5pc0F1dG9Db21taXRPbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogaW50IFNRTGl0ZVN0YXRlbWVudDo6c3RlcCgpCiB7CiAg
ICAgTG9ja2VyIGRhdGFiYXNlTG9jayB7IG1fZGF0YWJhc2UuZGF0YWJhc2VNdXRleCgpIH07CiAK
KyAgICBpbnQgZXJyb3I7CisgICAgLy8gQXV0byBjb21taXQgc2hvdWxkIGJlIG9mZiB3aGVuIHRy
YW5zYWN0aW9uIGlzIHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5LgorICAgIGlmIChpc1JlYWRPbmx5KCkg
JiYgbV9kYXRhYmFzZS5pc0F1dG9Db21taXRPbigpKQorICAgICAgICBlcnJvciA9IHNxbGl0ZTNf
c3RlcChtX3N0YXRlbWVudCk7CisgICAgZWxzZSB7CisgICAgICAgIFNRTGl0ZUxvY2tTY29wZSBs
b2NrU2NvcGU7CisKKyAgICAgICAgaWYgKCFzaG91bGRFeGVjdXRlKCkpIHsKKyAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKFNRTERhdGFiYXNlLCAiU1FMaXRlU3RhdGVtZW50OjpzdGVwOiBD
YW5ub3Qgc3RlcCAle3B1YmxpY31zIGJlY2F1c2UgdHJhbnNhY3Rpb24gaXMgcm9sbGVkIGJhY2si
LCBzcWxpdGUzX3NxbChtX3N0YXRlbWVudCkpOworICAgICAgICAgICAgcmV0dXJuIFNRTElURV9B
Qk9SVDsKKyAgICAgICAgfQorCisgICAgICAgIGVycm9yID0gc3FsaXRlM19zdGVwKG1fc3RhdGVt
ZW50KTsKKyAgICB9CisKKyAgICBpZiAoZXJyb3IgIT0gU1FMSVRFX0RPTkUgJiYgZXJyb3IgIT0g
U1FMSVRFX1JPVykKKyAgICAgICAgTE9HKFNRTERhdGFiYXNlLCAic3FsaXRlM19zdGVwIGZhaWxl
ZCAoJWkpXG5FcnJvciAtICVzIiwgZXJyb3IsIHNxbGl0ZTNfZXJybXNnKG1fZGF0YWJhc2Uuc3Fs
aXRlM0hhbmRsZSgpKSk7CisKKyAgICByZXR1cm4gZXJyb3I7Cit9CisKK2ludCBTUUxpdGVTdGF0
ZW1lbnQ6OnN0ZXBXaXRob3V0TG9ja1Njb3BlKCkKK3sKKyAgICBMb2NrZXIgZGF0YWJhc2VMb2Nr
IHsgbV9kYXRhYmFzZS5kYXRhYmFzZU11dGV4KCkgfTsKKwogICAgIC8vIElmIHdlJ3JlIG5vdCB3
aXRoaW4gYSB0cmFuc2FjdGlvbiBhbmQgd2UgY2FsbCBzcWxpdGUzX3N0ZXAoKSwgU1FMaXRlIHdp
bGwgaW1wbGljaXRseSBjcmVhdGUgYSB0cmFuc2FjdGlvbiBmb3IgdXMuCiAgICAgLy8gSW4gc3Vj
aCBjYXNlLCB3ZSBzaG91bGQgYnVtcCBvdXIgdHJhbnNhY3Rpb24gY291bnQgdG8gcmVmbGVjdCB0
aGF0LgogICAgIHN0ZDo6b3B0aW9uYWw8U1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0Nv
dW50ZXI+IHRyYW5zYWN0aW9uQ291bnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVTdGF0ZW1lbnQuaAppbmRleCBjZjJmMTIwZjJlNzUzYWQ4ZDEzMTcwZmQwZDg3MDAx
NjlkZWJjMTU1Li4zY2MwMTlmZTUzOTNiODNkMGMwY2NkOTE2OTE3YjkyOGFhZjQ4OTAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oCkBAIC01MCw2
ICs1MCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBiaW5kUGFyYW1l
dGVyQ291bnQoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGludCBzdGVwKCk7CisgICAg
aW50IHN0ZXBXaXRob3V0TG9ja1Njb3BlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IHJlc2V0
KCk7CiAgICAgCiAgICAgLy8gc3RlcHMgYW5kIGZpbmFsaXplcyB0aGUgcXVlcnkuCkBAIC04NCw2
ICs4NSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHByZXBhcmVk
IHN0YXRlbWVudCBoYXMgYmVlbiBzdGVwcGVkIGF0IGxlYXN0IG9uY2UgdXNpbmcgc3RlcCgpIGJ1
dCBoYXMgbmVpdGhlciBydW4gdG8gY29tcGxldGlvbiAocmV0dXJuZWQgU1FMSVRFX0RPTkUgZnJv
bSBzdGVwKCkpIG5vciBiZWVuIHJlc2V0KCkuCiAgICAgYm9vbCBoYXNTdGFydGVkU3RlcHBpbmco
KTsKKyAgICBib29sIHNob3VsZEV4ZWN1dGUoKTsKIAogICAgIFNRTGl0ZURhdGFiYXNlJiBtX2Rh
dGFiYXNlOwogICAgIHNxbGl0ZTNfc3RtdCogbV9zdGF0ZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcAppbmRleCAwOGU5ZWI3M2Ri
MjRhMDkwYTdhMDgwYzFhODE1NjkzMThlNWEyODU5Li5kNTgyZmFjYzJlMWNkYzA3NTk1ODAxNTM0
YWQ0OWY4OTRmZDhmY2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVUcmFuc2FjdGlvbi5jcHAKQEAgLTY2LDEwICs2NiwxNCBAQCB2b2lkIFNRTGl0ZVRyYW5z
YWN0aW9uOjpiZWdpbigpCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1faW5Qcm9ncmVzcyA9
IG1fZGIuZXhlY3V0ZUNvbW1hbmQoIkJFR0lOIElNTUVESUFURSJfcyk7CiAgICAgICAgIG1fZGIu
bV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSBtX2luUHJvZ3Jlc3M7CisKKyAgICAgICAgaWYgKCFt
X2luUHJvZ3Jlc3MpIHsKKyAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSBpcyBhbiBleHBs
aWNpdCByb2xsYmFjayBhZnRlciBiZWdpbiB0byB1cGRhdGUgZGF0YWJhc2Ugc3RhdGUuCisgICAg
ICAgICAgICBtX2RiLmV4ZWN1dGVDb21tYW5kKCJST0xMQkFDSyJfcyk7CiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICAgICAgaWYgKCFtX2luUHJvZ3Jlc3MpCiAgICAgICAgICAgICBTUUxp
dGVEYXRhYmFzZVRyYWNrZXI6OmRlY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KCk7
CiAjZW5kaWYKKyAgICAgICAgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHAKaW5kZXggZjA2OGIy
NjdhMTUxNjY4YzY2MDFjMGFjNGU0ZTdlN2JiNmRkZmRkMS4uNmIyNTBiYTdiMzQ2YmQxOWE2YWY4
NzRmNDliN2JjMDM4MGU3OGQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuY3BwCkBAIC01Myw3ICs1Myw2IEBAIFdl
YklEQlNlcnZlcjo6V2ViSURCU2VydmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiBkaXJlY3RvcnksIFdlCiBXZWJJREJTZXJ2ZXI6On5XZWJJREJTZXJ2ZXIoKQogewog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgQVNTRVJUKCFtX2lzU3VzcGVuZGVk
KTsKIH0KIAogdm9pZCBXZWJJREJTZXJ2ZXI6OmdldE9yaWdpbnMoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYgY2FsbGJhY2sp
CkBAIC0xMTUsNDcgKzExNCwzOSBAQCB2b2lkIFdlYklEQlNlcnZlcjo6cmVuYW1lT3JpZ2luKGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgb2xkT3JpZ2luLCBjbwogICAgIH0pOwog
fQogCi1ib29sIFdlYklEQlNlcnZlcjo6c3VzcGVuZChTdXNwZW5zaW9uQ29uZGl0aW9uIHN1c3Bl
bnNpb25Db25kaXRpb24pIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKK3ZvaWQg
V2ViSURCU2VydmVyOjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgaWYg
KG1faXNTdXNwZW5kZWQpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgIExvY2tlciBzdXNwZW5z
aW9uTG9ja2VyIHsgbV9zdXNwZW5zaW9uTG9jayB9OworICAgIG1fc2hvdWxkU3VzcGVuZCA9IHRy
dWU7CiAKLSAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViSURCU2Vy
dmVyOjpzdXNwZW5kKCksIHN1c3BlbnNpb25Db25kaXRpb249JXMiLCB0aGlzLCBzdXNwZW5zaW9u
Q29uZGl0aW9uID09IFN1c3BlbnNpb25Db25kaXRpb246OkFsd2F5cyA/ICJBbHdheXMiIDogIklm
SWRsZSIpOwotCi0gICAgbV9pc1N1c3BlbmRlZCA9IHRydWU7Ci0gICAgbV9zZXJ2ZXJMb2NrLmxv
Y2soKTsKLQotICAgIGlmICghbV9zZXJ2ZXIpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgIG1f
cXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN1
c3BlbnNpb25JZGVudGlmaWVyID0gKyttX3N1c3BlbnNpb25JZGVudGlmaWVyLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAg
ICAgTG9ja2VyIHN1c3BlbnNpb25Mb2NrZXIgeyBtX3N1c3BlbnNpb25Mb2NrIH07CisgICAgICAg
IGlmICghbV9zaG91bGRTdXNwZW5kIHx8IHN1c3BlbnNpb25JZGVudGlmaWVyICE9IG1fc3VzcGVu
c2lvbklkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KIAotICAgIGlmIChzdXNwZW5zaW9uQ29uZGl0aW9uID09IFN1c3BlbnNpb25Db25kaXRpb246
OkFsd2F5cykgewotICAgICAgICBtX3NlcnZlci0+c3RvcERhdGFiYXNlQWN0aXZpdGllc09uTWFp
blRocmVhZCgpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9CisgICAgICAgIHsKKyAgICAg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKKyAgICAgICAgICAgIG1fc2Vy
dmVyLT5zdG9wRGF0YWJhc2VBY3Rpdml0aWVzSWZOZWVkZWQoKTsKKyAgICAgICAgfQogCi0gICAg
Ly8gU3VzcGVuZCB0byBhdm9pZCBzdGFydGluZyBuZXcgdHJhbnNhY3Rpb25zIGlmIHRoZXJlIGlz
IG5vIG9uZ29pbmcgdHJhbnNhY3Rpb24uCi0gICAgaWYgKCFtX3NlcnZlci0+aGFzRGF0YWJhc2VB
Y3Rpdml0aWVzT25NYWluVGhyZWFkKCkpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCi0g
ICAgLy8gUmVzdW1lIHRvIGFsbG93IG9uZ29pbmcgdHJhbnNhY3Rpb25zIHRvIGJlIGZpbmlzaGVk
LgotICAgIG1fc2VydmVyTG9jay51bmxvY2soKTsKLSAgICBtX2lzU3VzcGVuZGVkID0gZmFsc2U7
Ci0gICAgcmV0dXJuIGZhbHNlOworICAgICAgICB3aGlsZSAobV9zaG91bGRTdXNwZW5kKQorICAg
ICAgICAgICAgbV9zdXNwZW5zaW9uQ29uZGl0aW9uLndhaXQobV9zdXNwZW5zaW9uTG9jayk7Cisg
ICAgfSk7CiB9CiAKLXZvaWQgV2ViSURCU2VydmVyOjpyZXN1bWUoKSBXVEZfSUdOT1JFU19USFJF
QURfU0FGRVRZX0FOQUxZU0lTCit2b2lkIFdlYklEQlNlcnZlcjo6cmVzdW1lKCkKIHsKICAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgaWYgKCFtX2lzU3VzcGVuZGVkKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0g
V2ViSURCU2VydmVyOjpyZXN1bWUoKSIsIHRoaXMpOwotCi0gICAgbV9pc1N1c3BlbmRlZCA9IGZh
bHNlOwotICAgIG1fc2VydmVyTG9jay51bmxvY2soKTsKKyAgICBMb2NrZXIgc3VzcGVuc2lvbkxv
Y2tlciB7IG1fc3VzcGVuc2lvbkxvY2sgfTsKKyAgICBtX3Nob3VsZFN1c3BlbmQgPSBmYWxzZTsK
KyAgICBtX3N1c3BlbnNpb25Db25kaXRpb24ubm90aWZ5T25lKCk7CiB9CiAKIHZvaWQgV2ViSURC
U2VydmVyOjpvcGVuRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVk
REIvV2ViSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWRE
Qi9XZWJJREJTZXJ2ZXIuaAppbmRleCA2MmYwY2FjMzZkYzY4ZTVhZWUxYzFiYmNhZDM2ODM5ZDcz
MTgwNzE4Li44ZWQ3ZjRiNjY3NTExOTU2NzQzZjQxYjk3ZDAxNmFhYjZmNGY3MTBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2
ZXIuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW5hbWVPcmlnaW4oY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIGVudW0gY2xh
c3MgU3VzcGVuc2lvbkNvbmRpdGlvbiA6IGJvb2wgeyBBbHdheXMsIElmSWRsZSB9OwotICAgIGJv
b2wgc3VzcGVuZChTdXNwZW5zaW9uQ29uZGl0aW9uID0gU3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3
YXlzKTsKKyAgICB2b2lkIHN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHJlc3VtZSgpOwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KQEAgLTk4LDEwICs5
OCwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgcG9zdFRhc2tSZXBseShGdW5jdGlvbjx2b2lkKCk+
JiYpOwogCiAgICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKLQogICAgIExvY2sgbV9zZXJ2ZXJM
b2NrOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcj4g
bV9zZXJ2ZXIgV1RGX0dVQVJERURfQllfTE9DSyhtX3NlcnZlckxvY2spOwotICAgIGJvb2wgbV9p
c1N1c3BlbmRlZCB7IGZhbHNlIH07CisKKyAgICBMb2NrIG1fc3VzcGVuc2lvbkxvY2s7CisgICAg
Q29uZGl0aW9uIG1fc3VzcGVuc2lvbkNvbmRpdGlvbjsKKyAgICBib29sIG1fc2hvdWxkU3VzcGVu
ZCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fc3VzcGVuc2lvbkxvY2spIHsgZmFsc2UgfTsKKyAgICB1
aW50NjRfdCBtX3N1c3BlbnNpb25JZGVudGlmaWVyIFdURl9HVUFSREVEX0JZX0xPQ0sobV9zdXNw
ZW5zaW9uTG9jaykgeyAwIH07CiAKICAgICBIYXNoTWFwPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVl
SUQsIHN0ZDo6dW5pcXVlX3B0cjxXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ+PiBtX2Nvbm5lY3Rp
b25NYXA7CiAgICAgV2Vha0hhc2hTZXQ8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25zOyAv
LyBPbmx5IHVzZWQgb24gdGhlIG1haW4gdGhyZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA0MzYwNTAyZDEwNjE3OWY2NzI4OTU5
Y2NlMzJjZjYwNzZkMTE5MDczLi5iNDc4NGEzNjhkMDI3NmMzMThkNDkxNzc1Y2RhNzA3YTk4ZWU1
NDRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5o
IgogI2luY2x1ZGUgIkF1eGlsaWFyeVByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIuaCIKICNpbmNs
dWRlICJEb3dubG9hZC5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2lm
IEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIpCkBAIC0xNTgsOSArMTU5LDkg
QEAgTmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKEF1eGlsaWFyeVByb2Nlc3NJbml0aWFs
aXphdGlvblBhcmFtZXRlcnMmJiBwYXJhbWUKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05T
KQogICAgICwgbV9uZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcigqdGhpcykKICNlbmRpZgot
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgLCBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tl
cihbdGhpc10oYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykgeyBzZXRJc0hvbGRpbmdMb2NrZWRG
aWxlcyhpc0hvbGRpbmdMb2NrZWRGaWxlcyk7IH0pCi0jZW5kaWYKKyAgICAsIG1fZGF0YWJhc2VB
c3NlcnRpb25NYW5hZ2VyKCJOZXR3b3JrIFByb2Nlc3MgaXMgaG9sZGluZyBsb2NrZWQgZmlsZXMi
LCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKCkgeworICAgICAgICByZXR1cm4gd2Vh
a1RoaXMgPyB3ZWFrVGhpcy0+bV9zaG91bGRTdXNwZW5kIDogZmFsc2U7CisgICAgfSkKICAgICAs
IG1fbWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoY3JlYXRlTWVzc2FnZVBvcnRDaGFubmVsUmVn
aXN0cnkoKnRoaXMpKQogewogICAgIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzOjpp
bml0aWFsaXplKCk7CkBAIC0yMjExLDMxICsyMjEyLDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6
cHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3RpbmdTeW5jKENvbXBsZXRpb25IYW5k
bGUKICAgICBwcmVwYXJlVG9TdXNwZW5kKHRydWUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6c3VzcGVuZElEQlNlcnZlcnMoYm9vbCBpc1N1
c3BlbnNpb25JbW1pbmVudCkKLXsKLSAgICBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJzID0gdHJ1
ZTsKLSAgICArK21fc3VzcGVuc2lvbklkZW50aWZpZXI7Ci0KLSAgICBib29sIGFsbFN1c3BlbmRl
ZCA9IHRydWU7Ci0gICAgYXV0byBjb25kaXRpb24gPSBpc1N1c3BlbnNpb25JbW1pbmVudCA/IFdl
YklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlzIDogV2ViSURCU2VydmVyOjpT
dXNwZW5zaW9uQ29uZGl0aW9uOjpJZklkbGU7Ci0gICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX3dl
YklEQlNlcnZlcnMudmFsdWVzKCkpCi0gICAgICAgIGFsbFN1c3BlbmRlZCAmPSBzZXJ2ZXItPnN1
c3BlbmQoY29uZGl0aW9uKTsKLQotICAgIGlmIChhbGxTdXNwZW5kZWQpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaEFmdGVyKDVfcywgW3RoaXMsIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBzdXNwZW5zaW9uSWRlbnRpZmllciA9IG1fc3VzcGVu
c2lvbklkZW50aWZpZXJdIHsKLSAgICAgICAgaWYgKCF3ZWFrVGhpcykKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICBpZiAoIW1fc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMgfHwgc3VzcGVu
c2lvbklkZW50aWZpZXIgIT0gbV9zdXNwZW5zaW9uSWRlbnRpZmllcikKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICBmb3IgKGF1dG8mIHNlcnZlciA6IG1fd2ViSURCU2VydmVycy52YWx1
ZXMoKSkKLSAgICAgICAgICAgIHNlcnZlci0+c3VzcGVuZChXZWJJREJTZXJ2ZXI6OlN1c3BlbnNp
b25Db25kaXRpb246OkFsd2F5cyk7Ci0gICAgfSk7Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HKFBy
b2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZCgp
LCBpc1N1c3BlbnNpb25JbW1pbmVudD0lZCIsIHRoaXMsIGlzU3VzcGVuc2lvbkltbWluZW50KTsK
QEAgLTIyNDYsMTUgKzIyMjIsMjIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3Vz
cGVuZChib29sIGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGwKIAogICAgIGxv
d01lbW9yeUhhbmRsZXIoQ3JpdGljYWw6Olllcyk7CiAKLSAgICBSZWZQdHI8Q2FsbGJhY2tBZ2dy
ZWdhdG9yPiBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0b3I6OmNyZWF0ZShb
dGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBt
dXRhYmxlIHsKLSAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5l
dHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCkgUHJvY2VzcyBpcyByZWFkeSB0byBzdXNw
ZW5kIiwgdGhpcyk7Ci0gICAgICAgIFVOVVNFRF9WQVJJQUJMRSh0aGlzKTsKKyAgICBtX3Nob3Vs
ZFN1c3BlbmQgPSB0cnVlOworICAgICsrbV9zdXNwZW5zaW9uSWRlbnRpZmllcjsKKworICAgIFJl
ZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9IENhbGxiYWNrQWdn
cmVnYXRvcjo6Y3JlYXRlKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgc3Vz
cGVuc2lvbklkZW50aWZpZXIgPSBtX3N1c3BlbnNpb25JZGVudGlmaWVyLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwot
ICAgIH0pOworCisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgaWYgKCFtX3Nob3VsZFN1c3BlbmQgfHwgc3VzcGVuc2lvbklkZW50aWZpZXIgIT0g
bV9zdXNwZW5zaW9uSWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybjsKICAgICAKLSNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6c3VzcGVuZChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOwotI2VuZGlmCisg
ICAgICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vz
czo6cHJlcGFyZVRvU3VzcGVuZCgpIFByb2Nlc3MgaXMgcmVhZHkgdG8gc3VzcGVuZCIsIHRoaXMp
OworICAgICAgICBtX2RhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlci5zdXNwZW5kKCk7CisgICAgfSk7
CiAKICAgICBmb3JFYWNoTmV0d29ya1Nlc3Npb24oWyZdIChhdXRvJiBuZXR3b3JrU2Vzc2lvbikg
ewogICAgICAgICBwbGF0Zm9ybUZsdXNoQ29va2llcyhuZXR3b3JrU2Vzc2lvbi5zZXNzaW9uSUQo
KSwgW2NhbGxiYWNrQWdncmVnYXRvcl0geyB9KTsKQEAgLTIyNzAsNyArMjI1MywxNiBAQCB2b2lk
IE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKGJvb2wgaXNTdXNwZW5zaW9uSW1taW5l
bnQsIENvbXBsZXRpb25IYW5kbAogICAgIH0KICNlbmRpZgogCi0gICAgbV9zdG9yYWdlTWFuYWdl
clNldC0+c3VzcGVuZChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOworICAgIGlmIChpc1N1c3Bl
bnNpb25JbW1pbmVudCkKKyAgICAgICAgbV9kYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIuc3VzcGVu
ZCgpOworICAgIGVsc2UgeworICAgICAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5zdXNwZW5kKFtj
YWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CisgICAgICAgIGZvciAoYXV0byYgc2VydmVyIDogbV93
ZWJJREJTZXJ2ZXJzLnZhbHVlcygpKQorICAgICAgICAgICAgc2VydmVyLT5zdXNwZW5kKFtjYWxs
YmFja0FnZ3JlZ2F0b3JdIHsgfSk7CisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElD
UykKKyAgICAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdXNwZW5kKFtjYWxs
YmFja0FnZ3JlZ2F0b3JdIHsgfSk7CisjZW5kaWYKKyAgICB9CiB9CiAKIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkKQEAgLTIyOTMsMjIgKzIyODUs
MjAgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKCkKIHsKICAgICBmb3IgKGF1dG8mIGNv
bm5lY3Rpb24gOiBtX3dlYlByb2Nlc3NDb25uZWN0aW9ucy52YWx1ZXMoKSkKICAgICAgICAgY29u
bmVjdGlvbi0+ZW5kU3VzcGVuc2lvbigpOwotCi0jaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RB
VElTVElDUykKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlc3VtZSgpOwot
I2VuZGlmCiAgICAgCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGZvciAoYXV0byYg
c2VydmVyIDogbV9zd1NlcnZlcnMudmFsdWVzKCkpCiAgICAgICAgIHNlcnZlci0+ZW5kU3VzcGVu
c2lvbigpOwogI2VuZGlmCi0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworICAgIG1fc2hvdWxk
U3VzcGVuZCA9IGZhbHNlOworICAgIG1fZGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyLnJlc3VtZSgp
OworICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPnJlc3VtZSgpOwogICAgIGZvciAoYXV0byYgc2Vy
dmVyIDogbV93ZWJJREJTZXJ2ZXJzLnZhbHVlcygpKQogICAgICAgICBzZXJ2ZXItPnJlc3VtZSgp
OwotICAgIG1fc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMgPSBmYWxzZTsKKyNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6cmVzdW1lKCk7CiAjZW5kaWYKLQotICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPnJlc3VtZSgp
OwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVmZXRjaEROUyhjb25zdCBTdHJpbmcmIGhv
c3RuYW1lKQpAQCAtMjM3MCw4ICsyMzYwLDggQEAgUmVmPFdlYklEQlNlcnZlcj4gTmV0d29ya1By
b2Nlc3M6OmNyZWF0ZVdlYklEQlNlcnZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAg
fTsKIAogICAgIGF1dG8gcmVzdWx0ID0gV2ViSURCU2VydmVyOjpjcmVhdGUoc2Vzc2lvbklELCBw
YXRoLCBXVEZNb3ZlKHNwYWNlUmVxdWVzdGVyKSk7Ci0gICAgaWYgKG1fc2hvdWxkU3VzcGVuZElE
QlNlcnZlcnMpCi0gICAgICAgIHJlc3VsdC0+c3VzcGVuZChXZWJJREJTZXJ2ZXI6OlN1c3BlbnNp
b25Db25kaXRpb246OkFsd2F5cyk7CisgICAgaWYgKG1fc2hvdWxkU3VzcGVuZCkKKyAgICAgICAg
cmVzdWx0LT5zdXNwZW5kKFtdIHsgfSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IGYwNmRhZDQ3
MjliZGZiZWE3NTNmZjhjOTNhYTNlNzVhOWFkODhiMDMuLmExOWZiOWM3NTg2OWY2MGQ3YTBlNDcw
Y2E0ODZjMDRiMDNkZWU5MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJBdXhpbGlhcnlQcm9j
ZXNzLmgiCiAjaW5jbHVkZSAiQ2FjaGVNb2RlbC5oIgogI2luY2x1ZGUgIkNhbGxiYWNrSUQuaCIK
KyNpbmNsdWRlICJEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIuaCIKICNpbmNsdWRlICJEb3dubG9h
ZElELmgiCiAjaW5jbHVkZSAiRG93bmxvYWRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiTG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyLmgiCkBAIC02MSwxMCArNjIsNiBAQAogI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCi0jaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKLSNpbmNsdWRlICJXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIuaCIKLSNlbmRpZgot
CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAjaW5jbHVkZSA8d3RmL09TT2JqZWN0UHRyLmg+CiB0eXBl
ZGVmIHN0cnVjdCBPcGFxdWVDRkhUVFBDb29raWVTdG9yYWdlKiAgQ0ZIVFRQQ29va2llU3RvcmFn
ZVJlZjsKQEAgLTQ4Niw3ICs0ODMsNiBAQCBwcml2YXRlOgogICAgIFJlZjxXZWJJREJTZXJ2ZXI+
IGNyZWF0ZVdlYklEQlNlcnZlcihQQUw6OlNlc3Npb25JRCk7CiAgICAgdm9pZCBzZXRTZXNzaW9u
U3RvcmFnZVF1b3RhTWFuYWdlcklEQlJvb3RQYXRoKFBBTDo6U2Vzc2lvbklELCBjb25zdCBTdHJp
bmcmIGlkYlJvb3RQYXRoKTsKICAgICB2b2lkIHJlbW92ZVdlYklEQlNlcnZlcklmUG9zc2libGUo
UEFMOjpTZXNzaW9uSUQpOwotICAgIHZvaWQgc3VzcGVuZElEQlNlcnZlcnMoYm9vbCBpc1N1c3Bl
bnNpb25JbW1pbmVudCk7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgdm9pZCBk
aWRDcmVhdGVXb3JrZXJDb250ZXh0UHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpBdHRhY2ht
ZW50Jik7CkBAIC01MDAsMTAgKzQ5Niw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGRTZXJ2aWNl
V29ya2VyU2Vzc2lvbihQQUw6OlNlc3Npb25JRCwgYm9vbCBwcm9jZXNzVGVybWluYXRpb25EZWxh
eUVuYWJsZWQsIFN0cmluZyYmIHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25EaXJlY3RvcnksIGNv
bnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOwogI2VuZGlmCiAKLSNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQotICAgIHZvaWQgc2V0SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCk7Ci0jZW5k
aWYKLQogICAgIHZvaWQgZmlyZVByaXZhdGVDbGlja01lYXN1cmVtZW50VGltZXJJbW1lZGlhdGVs
eShQQUw6OlNlc3Npb25JRCk7CiAKICAgICBjbGFzcyBTZXNzaW9uU3RvcmFnZVF1b3RhTWFuYWdl
ciB7CkBAIC01NzcsMTUgKzU2OSwxMiBAQCBwcml2YXRlOgogICAgIE5ldHdvcmtDb250ZW50UnVs
ZUxpc3RNYW5hZ2VyIG1fbmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXI7CiAjZW5kaWYKIAot
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyIG1f
d2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyOwotICAgIFJlZlB0cjxQcm9jZXNzQXNzZXJ0aW9uPiBt
X2hvbGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uOwotI2VuZGlmCisgICAgRGF0YWJhc2VBc3NlcnRp
b25NYW5hZ2VyIG1fZGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyOworICAgIGJvb2wgbV9zaG91bGRT
dXNwZW5kIHsgZmFsc2UgfTsKKyAgICB1aW50NjRfdCBtX3N1c3BlbnNpb25JZGVudGlmaWVyIHsg
MCB9OwogCiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgU3RyaW5nPiBtX2lkYkRhdGFiYXNl
UGF0aHM7CiAgICAgSGFzaE1hcDxQQUw6OlNlc3Npb25JRCwgUmVmUHRyPFdlYklEQlNlcnZlcj4+
IG1fd2ViSURCU2VydmVyczsKLSAgICBib29sIG1fc2hvdWxkU3VzcGVuZElEQlNlcnZlcnMgeyBm
YWxzZSB9OwotICAgIHVpbnQ2NF90IG1fc3VzcGVuc2lvbklkZW50aWZpZXIgeyAwIH07CiAgICAg
CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIHN0cnVjdCBTZXJ2aWNlV29ya2VySW5m
byB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2lvcy9OZXR3b3Jr
UHJvY2Vzc0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQ
cm9jZXNzSU9TLm1tCmluZGV4IGExZTA5MTQyYjhiM2EzNGEyNzBmM2JmNTBmOTYwYTE2ZGU3MTU3
OWMuLjVkMDAxMGUwMmIyNDAxZTg0ZjQ1NTQ3ODkyYTE2OTMwNDQ5MzUzMWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1t
CkBAIC0xMDAsMzIgKzEwMCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyU2VydmljZVdv
cmtlckVudGl0bGVtZW50T3ZlcnJpZGUoQ29tcGxldGlvbkhhbmRsZXI8dm9pCiAKICNlbmRpZiAv
LyAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldElzSG9s
ZGluZ0xvY2tlZEZpbGVzKGJvb2wgaXNIb2xkaW5nTG9ja2VkRmlsZXMpCi17Ci0gICAgaWYgKCFp
c0hvbGRpbmdMb2NrZWRGaWxlcykgewotICAgICAgICBtX2hvbGRpbmdMb2NrZWRGaWxlQXNzZXJ0
aW9uID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChtX2hvbGRp
bmdMb2NrZWRGaWxlQXNzZXJ0aW9uICYmIG1faG9sZGluZ0xvY2tlZEZpbGVBc3NlcnRpb24tPmlz
VmFsaWQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gV2Ugc3luY2hyb25vdXNseSB0YWtl
IGEgcHJvY2VzcyBhc3NlcnRpb24gd2hlbiBiZWdpbm5pbmcgYSBTUUxpdGUgdHJhbnNhY3Rpb24g
c28gdGhhdCB3ZSBkb24ndCBnZXQgc3VzcGVuZGVkCi0gICAgLy8gd2hpbGUgaG9sZGluZyBhIGxv
Y2tlZCBmaWxlLiBXZSB3b3VsZCBnZXQga2lsbGVkIGlmIHN1c3BlbmRlZCB3aGlsZSBob2xkaW5n
IGxvY2tlZCBmaWxlcy4KLSAgICBtX2hvbGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uID0gUHJvY2Vz
c0Fzc2VydGlvbjo6Y3JlYXRlKGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgIk5ldHdvcmsgUHJvY2Vz
cyBpcyBob2xkaW5nIGxvY2tlZCBmaWxlcyJfcywgUHJvY2Vzc0Fzc2VydGlvblR5cGU6OkZpbmlz
aFRhc2tJbnRlcnJ1cHRhYmxlLCBQcm9jZXNzQXNzZXJ0aW9uOjpNb2RlOjpTeW5jKTsKLSAgICBt
X2hvbGRpbmdMb2NrZWRGaWxlQXNzZXJ0aW9uLT5zZXRQcmVwYXJlRm9ySW52YWxpZGF0aW9uSGFu
ZGxlcihbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKCkgbXV0YWJsZSB7Ci0g
ICAgICAgIEFTU0VSVChpc01haW5SdW5Mb29wKCkpOwotICAgICAgICBpZiAoIXdlYWtUaGlzKQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghbV9zaG91bGRTdXNwZW5kSURCU2Vy
dmVycykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBmb3IgKGF1dG8mIHNlcnZlciA6
IG1fd2ViSURCU2VydmVycy52YWx1ZXMoKSkKLSAgICAgICAgICAgIHNlcnZlci0+c3VzcGVuZCgp
OwotICAgIH0pOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhYmFz
ZUFzc2VydGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRGF0YWJhc2VBc3Nl
cnRpb25NYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTdhMDg4NjgxM2FhYjZhZWUyYTlhNGMyOWNi
Y2RmNjJmYTc4NWNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvRGF0
YWJhc2VBc3NlcnRpb25NYW5hZ2VyLmNwcApAQCAtMCwwICsxLDE1NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIu
aCIKKworI2luY2x1ZGUgIlByb2Nlc3NBc3NlcnRpb24uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1NR
TGl0ZURhdGFiYXNlLmg+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK0RhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlcjo6RGF0YWJhc2VBc3NlcnRpb25N
YW5hZ2VyKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgRnVuY3Rpb248Ym9vbCgpPiYmIHNob3Vs
ZFN1c3BlbmRDaGVja2VyKQorICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCisgICAgLCBt
X3Nob3VsZFN1c3BlbmRDaGVja2VyKFdURk1vdmUoc2hvdWxkU3VzcGVuZENoZWNrZXIpKQorewor
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgV2ViQ29yZTo6U1FMaXRlTG9ja1Nj
b3BlOjpzZXRJbXBsKHRoaXMpOworfQorCitEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXI6On5EYXRh
YmFzZUFzc2VydGlvbk1hbmFnZXIoKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CisgICAgV2ViQ29yZTo6U1FMaXRlTG9ja1Njb3BlOjpzZXRJbXBsKG51bGxwdHIpOworfQorCit2
b2lkIERhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlcjo6c2NvcGVCZWdpbnMoKQoreworICAgIGlmICht
X2Fzc2VydGlvbiAmJiBtX2Fzc2VydGlvbi0+aXNWYWxpZCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2Fzc2VydGlvbiA9IFByb2Nlc3NBc3NlcnRpb246OmNyZWF0ZShnZXRDdXJyZW50UHJv
Y2Vzc0lEKCksIG1faWRlbnRpZmllciwgUHJvY2Vzc0Fzc2VydGlvblR5cGU6OkZpbmlzaFRhc2tJ
bnRlcnJ1cHRhYmxlLCBQcm9jZXNzQXNzZXJ0aW9uOjpNb2RlOjpTeW5jKTsKKyAgICBtX2Fzc2Vy
dGlvbi0+c2V0UHJlcGFyZUZvckludmFsaWRhdGlvbkhhbmRsZXIoW3RoaXMsIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpXSgpIG11dGFibGUgeworICAgICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOworCisgICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKG1fc2hvdWxkU3VzcGVuZENoZWNrZXIoKSkKKyAgICAgICAgICAgIHN1
c3BlbmQoKTsKKyAgICB9KTsKK30KKwordm9pZCBEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXI6OnNj
b3BlRW5kcygpCit7CisgICAgaWYgKGlzQW55RGF0YWJhc2VMb2NrZWQoKSkKKyAgICAgICAgcmV0
dXJuOworICAgIAorICAgIGlmIChtX2Fzc2VydGlvblJlbGVhc2VTY2hlZHVsZWQpIHsKKyAgICAg
ICAgbV9zaG91bGREZWxheUFzc2VydGlvblJlbGVhc2UgPSB0cnVlOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgc2NoZWR1bGVBc3NlcnRpb25SZWxlYXNlKCk7Cit9CisKK2Jvb2wgRGF0
YWJhc2VBc3NlcnRpb25NYW5hZ2VyOjppc0FueURhdGFiYXNlTG9ja2VkKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gV1RGOjphbnlPZihtX2RhdGFiYXNlcywgWyZdKGF1dG8mIGRhdGFiYXNlKSB7Cisg
ICAgICAgIHJldHVybiAhZGF0YWJhc2UuaXNBdXRvQ29tbWl0T24oKTsKKyAgICB9KTsKK30KKwor
dm9pZCBEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXI6OnNjaGVkdWxlQXNzZXJ0aW9uUmVsZWFzZSgp
Cit7CisgICAgbV9hc3NlcnRpb25SZWxlYXNlU2NoZWR1bGVkID0gdHJ1ZTsKKyAgICBtX3Nob3Vs
ZERlbGF5QXNzZXJ0aW9uUmVsZWFzZSA9IGZhbHNlOworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaEFmdGVyKDFfcywgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7Cisg
ICAgICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgcmVs
ZWFzZUFzc2VydGlvbigpOworICAgIH0pOworfQorCit2b2lkIERhdGFiYXNlQXNzZXJ0aW9uTWFu
YWdlcjo6cmVsZWFzZUFzc2VydGlvbigpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKKworICAgIGlmIChtX3N1c3BlbmRlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViQ29y
ZTo6U1FMaXRlTG9ja1Njb3BlOjpob2xkTG9jaygpOworCisgICAgbV9hc3NlcnRpb25SZWxlYXNl
U2NoZWR1bGVkID0gZmFsc2U7CisgICAgaWYgKGlzQW55RGF0YWJhc2VMb2NrZWQoKSkgeworICAg
ICAgICBXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6OnJlbGVhc2VMb2NrKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAobV9zaG91bGREZWxheUFzc2VydGlvblJlbGVhc2UpCisg
ICAgICAgIHNjaGVkdWxlQXNzZXJ0aW9uUmVsZWFzZSgpOworICAgIGVsc2UKKyAgICAgICAgbV9h
c3NlcnRpb24gPSBudWxscHRyOworCisgICAgV2ViQ29yZTo6U1FMaXRlTG9ja1Njb3BlOjpyZWxl
YXNlTG9jaygpOworfQorCit2b2lkIERhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlcjo6YWRkRGF0YWJh
c2UoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQoreworICAgIG1fZGF0YWJhc2Vz
LmFkZCgmZGF0YWJhc2UpOworfQorCit2b2lkIERhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlcjo6cmVt
b3ZlRGF0YWJhc2UoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQoreworICAgIG1f
ZGF0YWJhc2VzLnJlbW92ZShkYXRhYmFzZSk7Cit9CisKK3ZvaWQgRGF0YWJhc2VBc3NlcnRpb25N
YW5hZ2VyOjpzdXNwZW5kKCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisg
ICAgaWYgKG1fc3VzcGVuZGVkKQorICAgICAgICByZXR1cm47CisgICAgbV9zdXNwZW5kZWQgPSB0
cnVlOworCisgICAgV2ViQ29yZTo6U1FMaXRlTG9ja1Njb3BlOjpob2xkTG9jaygpOworICAgIGZv
ciAoYXV0byYgZGF0YWJhc2UgOiBtX2RhdGFiYXNlcykKKyAgICAgICAgZGF0YWJhc2UuaW50ZXJy
dXB0KCk7CisKKyAgICBtX2Fzc2VydGlvbiA9IG51bGxwdHI7Cit9CisKK3ZvaWQgRGF0YWJhc2VB
c3NlcnRpb25NYW5hZ2VyOjpyZXN1bWUoKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CisKKyAgICBpZiAoIW1fc3VzcGVuZGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJD
b3JlOjpTUUxpdGVMb2NrU2NvcGU6OnJlbGVhc2VMb2NrKCk7Cit9CisKK30gLy8gbmFtZXBhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhYmFzZUFzc2VydGlv
bk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RhdGFiYXNlQXNzZXJ0aW9uTWFuYWdl
ci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM0YTFjYTcxOGU3NTUzMGVhNGFiMTJlOTE5NjA0YmE5ZGI3ZDlmYTYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhYmFzZUFzc2VydGlv
bk1hbmFnZXIuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJXZWJDb3JlL1NRTGl0ZUxvY2tTY29wZS5oIgorCituYW1lc3BhY2UgV2ViS2l0
IHsKKworY2xhc3MgUHJvY2Vzc0Fzc2VydGlvbjsKKworY2xhc3MgRGF0YWJhc2VBc3NlcnRpb25N
YW5hZ2VyIGZpbmFsIDogcHVibGljIFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZUltcGwsIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIsIFdlYWtQdHJGYWN0b3J5
SW5pdGlhbGl6YXRpb246OkVhZ2VyPiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRGF0YWJh
c2VBc3NlcnRpb25NYW5hZ2VyKQorcHVibGljOgorICAgIGV4cGxpY2l0IERhdGFiYXNlQXNzZXJ0
aW9uTWFuYWdlcihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIEZ1bmN0aW9uPGJvb2woKT4mJiBz
aG91bGRTdXNwZW5kQ2hlY2tlcik7CisgICAgfkRhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlcigpOwor
CisgICAgdm9pZCBzY29wZUJlZ2lucygpIGZpbmFsOworICAgIHZvaWQgc2NvcGVFbmRzKCkgZmlu
YWw7CisgICAgdm9pZCBhZGREYXRhYmFzZShXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYpIGZpbmFs
OworICAgIHZvaWQgcmVtb3ZlRGF0YWJhc2UoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2UmKSBmaW5h
bDsKKworICAgIHZvaWQgc3VzcGVuZCgpOworICAgIHZvaWQgcmVzdW1lKCk7CisKK3ByaXZhdGU6
CisgICAgYm9vbCBpc0FueURhdGFiYXNlTG9ja2VkKCkgY29uc3Q7CisgICAgdm9pZCBzY2hlZHVs
ZUFzc2VydGlvblJlbGVhc2UoKTsKKyAgICB2b2lkIHJlbGVhc2VBc3NlcnRpb24oKTsKKworICAg
IFN0cmluZyBtX2lkZW50aWZpZXI7CisgICAgYm9vbCBtX2Fzc2VydGlvblJlbGVhc2VTY2hlZHVs
ZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9zaG91bGREZWxheUFzc2VydGlvblJlbGVhc2UgeyBm
YWxzZSB9OworICAgIGJvb2wgbV9zdXNwZW5kZWQgeyBmYWxzZSB9OworICAgIFJlZlB0cjxQcm9j
ZXNzQXNzZXJ0aW9uPiBtX2Fzc2VydGlvbjsKKyAgICBXZWFrSGFzaFNldDxXZWJDb3JlOjpTUUxp
dGVEYXRhYmFzZT4gbV9kYXRhYmFzZXM7CisgICAgRnVuY3Rpb248Ym9vbCgpPiBtX3Nob3VsZFN1
c3BlbmRDaGVja2VyOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFk
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlh
Rm9ybWF0UmVhZGVyLmNwcAppbmRleCBlYmY3MjEyNDIzZTljZDVlMTdhNDI3NWI1OWFhYjhkMTk4
YzY5NWI4Li4wM2UxOTllMTFiZjJhMDgxZDkwNGMyNmFmOWU4NmM4ODk2YmU3NGM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3Jt
YXRSZWFkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJl
YWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZpZGVv
VHJhY2tQcml2YXRlLmg+CiAjaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZv
dW5kYXRpb24uaD4KKyNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KICNpbmNs
dWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CiAjaW5jbHVkZSA8d3RmL1dvcmtRdWV1ZS5oPgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMjlmN2ZlMDdkYjY2YmRlMzBhNzE1YjU5ZjcxZTRmMTNi
YTU1MzM4My4uYjE5ODUwYmEwYzkxOTM5MTkwZDc3Yjg4Y2Y3NDM0MjEyZDMxMTg3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dApAQCAtMTQzLDYgKzE0Myw3IEBAIFNoYXJlZC9BcHBsZVBheS9tYWMv
V2ViUGF5bWVudENvb3JkaW5hdG9yUHJveHlNYWMubW0KIAogU2hhcmVkL0FQSVdlYkFyY2hpdmUu
bW0KIFNoYXJlZC9BUElXZWJBcmNoaXZlUmVzb3VyY2UubW0KK1NoYXJlZC9EYXRhYmFzZUFzc2Vy
dGlvbk1hbmFnZXIuY3BwCiBTaGFyZWQvRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5tbQogU2hhcmVk
L0ZvY3VzZWRFbGVtZW50SW5mb3JtYXRpb24uY3BwCiBTaGFyZWQvVmlzaWJsZUNvbnRlbnRSZWN0
VXBkYXRlSW5mby5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDIyNDYwNmNjNWUxNWQxODA4ZjU1OTMyMzYxNTk5MzRkOTcxYjJmOWIu
LjdhZTQ0NWRjNzEyYzYxN2JkNGRkYzk1NTM1YWZkMTE1YmM2NzgxZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMyw3ICszLDcgQEAK
IAlhcmNoaXZlVmVyc2lvbiA9IDE7CiAJY2xhc3NlcyA9IHsKIAl9OwotCW9iamVjdFZlcnNpb24g
PSA1MjsKKwlvYmplY3RWZXJzaW9uID0gNTQ7CiAJb2JqZWN0cyA9IHsKIAogLyogQmVnaW4gUEJY
QWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KQEAgLTE1MTMsNiArMTUxMyw3IEBACiAJCTkzRDZC
N0I5MjU1MzRBMTcwMDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxi
YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Q2
QjdCNzI1NTM0QTExMDA1OEREM0EgLyogV0tTcGVlY2hSZWNvZ25pdGlvblBlcm1pc3Npb25DYWxs
YmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTkzRTZBNEVFMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tIaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0U2QTRFRDFCQzVERDM5MDBG
OEEwRTcgLyogX1dLSGl0VGVzdFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTkzRjU0OUI0MUUzMTc0QjcwMDBFNzIzOSAvKiBXS1NuYXBz
aG90Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNGNTQ5QjMxRTMxNzRCNzAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OworCQk5
M0Y5QjYxNDI2QTYyNzY0MDA0MUY5NkYgLyogRGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y5QjYxMzI2QTYy
NzRDMDA0MUY5NkYgLyogRGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyLmggKi87IH07CiAJCTk1MEYy
ODgwMjUyNDE0RUEwMEI3NEYxQyAvKiBXS01vdXNlRGV2aWNlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MEYyODdFMjUyNDE0RTkwMEI3
NEYxQyAvKiBXS01vdXNlRGV2aWNlT2JzZXJ2ZXIuaCAqLzsgfTsKIAkJOTU5MzY3NUYyNTJFNUUz
MTAwRDNGMEEwIC8qIFdLU3R5bHVzRGV2aWNlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1OTM2NzVEMjUyRTVFMzAwMEQzRjBBMCAvKiBX
S1N0eWx1c0RldmljZU9ic2VydmVyLmggKi87IH07CiAJCTk1Qzk0MzkxMjUyM0MwRDAwMDU0RjNE
NSAvKiBCYXNlQm9hcmRTUEkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk1Qzk0MzkwMjUyM0MwRDAwMDU0RjNENSAvKiBCYXNlQm9hcmRTUEkuaCAqLzsg
fTsKQEAgLTQ5NDcsNiArNDk0OCw4IEBACiAJCTkzRTZBNEVEMUJDNUREMzkwMEY4QTBFNyAvKiBf
V0tIaXRUZXN0UmVzdWx0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0hp
dFRlc3RSZXN1bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGNTQ5QjMxRTMx
NzRCNzAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdLU25hcHNob3RDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTkzRjU0OUI1MUUzMTc0REEwMDBFNzIzOSAvKiBXS1NuYXBzaG90
Q29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdLU25hcHNob3RDb25maWd1cmF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5M0Y5QjYxMjI2QTYyNzRDMDA0MUY5NkYgLyogRGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRjlCNjEzMjZBNjI3NEMwMDQxRjk2RiAvKiBEYXRh
YmFzZUFzc2VydGlvbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YWJhc2VBc3NlcnRpb25N
YW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1MEYyODdFMjUyNDE0RTkw
MEI3NEYxQyAvKiBXS01vdXNlRGV2aWNlT2JzZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV0tNb3VzZURldmljZU9ic2VydmVyLmg7IHBhdGggPSBpb3MvV0tNb3VzZURl
dmljZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1MEYyODdGMjUy
NDE0RUEwMEI3NEYxQyAvKiBXS01vdXNlRGV2aWNlT2JzZXJ2ZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS01vdXNlRGV2aWNlT2JzZXJ2ZXIubW07IHBhdGgg
PSBpb3MvV0tNb3VzZURldmljZU9ic2VydmVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5NTkzNjc1RDI1MkU1RTMwMDBEM0YwQTAgLyogV0tTdHlsdXNEZXZpY2VPYnNlcnZlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS1N0eWx1c0RldmljZU9ic2VydmVy
Lmg7IHBhdGggPSBpb3MvV0tTdHlsdXNEZXZpY2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNTk5OCw3ICs2MDAxLDYgQEAKIAkJRjQwQkJCNDAyNTdGRjQ2RTAwNjc0
NjNBIC8qIEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdQVVByb2Nlc3NXYWtldXBNZXNzYWdlQXJndW1lbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUY0MEQxQjY4MjIwQkRDMEYwMEI0OUEwMSAvKiBXZWJBdXRvY29ycmVjdGlvbkNv
bnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0Lmg7IHBhdGgg
PSBpb3MvV2ViQXV0b2NvcnJlY3Rpb25Db250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY0MTA1NjYxMjEzMDY5OUEwMDkyMjgxRCAvKiBBUElBdHRhY2htZW50Q29jb2EubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBUElBdHRhY2htZW50Q29jb2EubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUY0MTRDRTJBMjY5RERFRDEwMEJEMjE2QSAvKiBHUFVQcm9jZXNz
Q29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBHUFVQcm9j
ZXNzQ29jb2EubW07IHBhdGggPSBjb2NvYS9HUFVQcm9jZXNzQ29jb2EubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0MTRDRTJDMjY5REU2RUEwMEJEMjE2QSAvKiBSZW1vdGVSZW5k
ZXJpbmdCYWNrZW5kU3RhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVtb3RlUmVuZGVyaW5nQmFja2Vu
ZFN0YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MkQ2MzNGMjJBMEVGRDMw
MEQyRkIzQSAvKiBXZWJBdXRvY29ycmVjdGlvbkRhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gV2ViQXV0b2NvcnJlY3Rpb25EYXRhLmg7IHBhdGggPSBpb3MvV2ViQXV0b2Nv
cnJlY3Rpb25EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0MkQ2MzQwMjJB
MEVGRDMwMEQyRkIzQSAvKiBXZWJBdXRvY29ycmVjdGlvbkRhdGEubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXZWJBdXRvY29ycmVjdGlvbkRhdGEubW07IHBhdGgg
PSBpb3MvV2ViQXV0b2NvcnJlY3Rpb25EYXRhLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNjc4Miw2ICs2Nzg0LDggQEAKIAkJCQk1MTA2RDdCRjE4QkRCRTczMDAwQUIxNjYgLyog
Q29udGV4dE1lbnVDb250ZXh0RGF0YS5jcHAgKi8sCiAJCQkJNTEwNkQ3QzAxOEJEQkU3MzAwMEFC
MTY2IC8qIENvbnRleHRNZW51Q29udGV4dERhdGEuaCAqLywKIAkJCQk5OUY2NDJEMjFGQUJFMzc4
MDA5NjIxRTkgLyogQ29vcmRpbmF0ZVN5c3RlbS5oICovLAorCQkJCTkzRjlCNjEyMjZBNjI3NEMw
MDQxRjk2RiAvKiBEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIuY3BwICovLAorCQkJCTkzRjlCNjEz
MjZBNjI3NEMwMDQxRjk2RiAvKiBEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIuaCAqLywKIAkJCQk5
OTAzNkFFODIzQTk3MDg3MDAwMEIwNkEgLyogRGVidWdnYWJsZUluZm9EYXRhLmNwcCAqLywKIAkJ
CQk5OTAzNkFFNzIzQTk3MDg3MDAwMEIwNkEgLyogRGVidWdnYWJsZUluZm9EYXRhLmggKi8sCiAJ
CQkJMEYxODlDQUIyNDc0OUYyRjAwRTU4RDgxIC8qIERpc3BsYXlMaW5rT2JzZXJ2ZXJJRC5oICov
LApAQCAtMTE3MTIsMTQgKzExNzE2LDYgQEAKIAkJCXBhdGggPSBjYWNoZTsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CiAJCX07Ci0JCUY0MTRDRTI3MjY5RERFODAwMEJEMjE2QSAvKiBjb2Nv
YSAqLyA9IHsKLQkJCWlzYSA9IFBCWEdyb3VwOwotCQkJY2hpbGRyZW4gPSAoCi0JCQkJRjQxNENF
MkEyNjlEREVEMTAwQkQyMTZBIC8qIEdQVVByb2Nlc3NDb2NvYS5tbSAqLywKLQkJCSk7Ci0JCQlu
YW1lID0gY29jb2E7Ci0JCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwotCQl9OwogCQlGNjM4OTU1
QTEzM0JGNTdEMDA4OTQxRDUgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKQEAgLTEyMDIzLDYgKzEyMDE5LDcgQEAKIAkJCQk1NzU5N0VCRDIxODE4NDkw
MDAzN0Y5MjQgLyogQ3RhcEF1dGhlbnRpY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3NTk3
RUI5MjE4MTFEOUEwMDM3RjkyNCAvKiBDdGFwSGlkRHJpdmVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1NzBEQUFDQTIzMDM4NUZEMDBFOEZDMDQgLyogQ3RhcE5mY0RyaXZlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJOTNGOUI2MTQyNkE2Mjc2NDAwNDFGOTZGIC8qIERhdGFiYXNlQXNzZXJ0aW9uTWFu
YWdlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU1RjkxNzExQzU5Njc2RTAwMjlFOTJEIC8qIERh
dGFEZXRlY3Rpb25SZXN1bHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQzc1MzgwMTgzQkU1MEYw
MDcyQ0IxNSAvKiBEYXRhUmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTAzNkFFOTIz
QTk3MDg3MDAwMEIwNkEgLyogRGVidWdnYWJsZUluZm9EYXRhLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IGVl
YTAwMDQ0YmFmYmZiZjM1Y2VmODg2Njg5ZjQwOTU0YWQ5YzRmMjQuLmM4NTg5ZWE2NGE2YjRmZmE5
OGU2NzQyMGVhZmU5NWYyMGZiMTQ5MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
U3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9y
YWdlL1N0b3JhZ2VUcmFja2VyLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlN0b3Jh
Z2VUcmFja2VyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViU3RvcmFnZU5hbWVzcGFjZVByb3ZpZGVy
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TUUxpdGVEYXRhYmFzZVRyYWNrZXIuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NRTGl0ZUZpbGVTeXN0ZW0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NRTGl0ZVN0
YXRlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgpAQCAtMzg1LDEzICszODYsNiBAQCB2b2lk
IFN0b3JhZ2VUcmFja2VyOjpkZWxldGVBbGxPcmlnaW5zKCkKICAgICB9KTsKIH0KIAotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi1zdGF0aWMgdm9pZCB0cnVuY2F0ZURhdGFiYXNlRmlsZShTUUxp
dGVEYXRhYmFzZSYgZGF0YWJhc2UpCi17Ci0gICAgc3FsaXRlM19maWxlX2NvbnRyb2woZGF0YWJh
c2Uuc3FsaXRlM0hhbmRsZSgpLCAwLCBTUUxJVEVfVFJVTkNBVEVfREFUQUJBU0UsIDApOwotfQot
I2VuZGlmCi0KIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNEZWxldGVBbGxPcmlnaW5zKCkKIHsK
ICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKQEAgLTQyOSw3ICs0MjMsNyBAQCB2b2lkIFN0
b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlQWxsT3JpZ2lucygpCiAKICAgICBpZiAobV9kYXRhYmFz
ZS5pc09wZW4oKSkgewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgIHRydW5jYXRl
RGF0YWJhc2VGaWxlKG1fZGF0YWJhc2UpOworICAgICAgICBTUUxpdGVGaWxlU3lzdGVtOjp0cnVu
Y2F0ZURhdGFiYXNlRmlsZShtX2RhdGFiYXNlLnNxbGl0ZTNIYW5kbGUoKSk7CiAjZW5kaWYKICAg
ICAgICAgbV9kYXRhYmFzZS5jbG9zZSgpOwogICAgIH0KQEAgLTU0Myw3ICs1MzcsNyBAQCB2b2lk
IFN0b3JhZ2VUcmFja2VyOjpzeW5jRGVsZXRlT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRl
bnRpZmllcikKIAogICAgIGlmIChzaG91bGREZWxldGVUcmFja2VyRmlsZXMpIHsKICNpZiBQTEFU
Rk9STShJT1NfRkFNSUxZKQotICAgICAgICB0cnVuY2F0ZURhdGFiYXNlRmlsZShtX2RhdGFiYXNl
KTsKKyAgICAgICAgU1FMaXRlRmlsZVN5c3RlbTo6dHJ1bmNhdGVEYXRhYmFzZUZpbGUobV9kYXRh
YmFzZS5zcWxpdGUzSGFuZGxlKCkpOwogI2VuZGlmCiAgICAgICAgIG1fZGF0YWJhc2UuY2xvc2Uo
KTsKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkK
</data>
<flag name="commit-queue"
          id="456535"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>434135</attachid>
            <date>2021-07-23 16:00:49 -0700</date>
            <delta_ts>2021-07-23 16:25:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-227887-20210723160048.patch</filename>
            <type>text/plain</type>
            <size>59240</size>
            <attacher name="Sihui Liu">sihui_liu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwMjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzIxMDliYmJjNGM0OWNm
YmYxZGYyZWM2OWMyYWI5ZmQxNjU5NWY0Ny4uZTEyZWY1MTg3YWFiNmEyNTFmYTJhOTAxYzUyZGM3
OTIzNWNkZmYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIxLTA3LTIzICBTaWh1
aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgYWxsIGZpbGUgbG9j
a3Mgc3luY2hyb25vdXNseSBpbiBuZXR3b3JrIHByb2Nlc3Mgd2hlbiBpdCBpcyBhYm91dCB0byBz
dXNwZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
Mjc4ODcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgwODAyMjI0PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZl
cjo6c3RvcERhdGFiYXNlQWN0aXZpdGllc0lmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlNlcnZlcjo6SURCU2VydmVyOjpoYXNEYXRhYmFzZUFjdGl2aXRpZXNPbk1haW5UaHJlYWQgY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpJREJTZXJ2ZXI6OnN0
b3BEYXRhYmFzZUFjdGl2aXRpZXNPbk1haW5UaHJlYWQpOiBEZWxldGVkLgorICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaDoKKyAgICAgICAgKiBTb3VyY2VzLnR4
dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNR
TGl0ZURhdGFiYXNlOjpvcGVuKToKKyAgICAgICAgKFdlYkNvcmU6OndhbEF1dG9tYXRpY1RydW5j
YXRpb25Ib29rKToKKyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlOjp1c2VXQUxKb3Vy
bmFsTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZTo6Y2xvc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmludGVycnVwdCk6CisgICAgICAgIChXZWJD
b3JlOjpTUUxpdGVEYXRhYmFzZTo6c2V0SXNSdW5uaW5nVHJhbnNhY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U1FMaXRlRGF0YWJhc2U6OmlzUnVubmluZ1RyYW5zYWN0aW9uIGNvbnN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVGaWxl
U3lzdGVtOjp0cnVuY2F0ZURhdGFiYXNlRmlsZSk6CisgICAgICAgICogcGxhdGZvcm0vc3FsL1NR
TGl0ZUZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9zcWwvU1FMaXRlTG9ja1Njb3Bl
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6OnNldEltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlTG9ja1Njb3BlOjppc0luc2lkZVNjb3BlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZTo6U1FMaXRlTG9ja1Njb3BlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNRTGl0ZUxvY2tTY29wZTo6flNRTGl0ZUxvY2tTY29wZSk6CisgICAgICAg
IChXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6OmFkZERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNRTGl0ZUxvY2tTY29wZTo6cmVtb3ZlRGF0YWJhc2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L3NxbC9TUUxpdGVMb2NrU2NvcGUuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vc3FsL1NR
TGl0ZVN0YXRlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQ6OnNo
b3VsZEV4ZWN1dGUpOgorICAgICAgICAoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50OjpzdGVwKToK
KyAgICAgICAgKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudDo6c3RlcFdpdGhvdXRMb2NrU2NvcGUp
OgorICAgICAgICAqIHBsYXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1FM
aXRlVHJhbnNhY3Rpb246OmJlZ2luKToKKwogMjAyMS0wNy0yMyAgQWxleGV5IFNodmF5a2EgIDxz
aHZhaWthbGVzaEBnbWFpbC5jb20+CiAKICAgICAgICAgW0pTQ10gQ2FsbCBjdXN0b20gYWNjZXNz
b3JzIC8gdmFsdWVzIHdpdGggdGhlaXIgaG9sZGVyJ3MgZ2xvYmFsIG9iamVjdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCA5YzZlNGU1NzljZmViZTQ1ZjI4Mjc2YmFlMTZkMmQzMzA3NTcyMzNlLi44ZDYxMGZhZTI2ZWRh
NGNjMjBmMDRjNzNmYjFhNzE1MjQ3MzhkZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisy
MDIxLTA3LTIzICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgorCisgICAgICAgIERy
b3AgYWxsIGZpbGUgbG9ja3Mgc3luY2hyb25vdXNseSBpbiBuZXR3b3JrIHByb2Nlc3Mgd2hlbiBp
dCBpcyBhYm91dCB0byBzdXNwZW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjc4ODcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgwODAyMjI0Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YklEQlNlcnZlcjo6fldlYklEQlNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZl
cjo6c3VzcGVuZCk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQlNlcnZlcjo6cmVzdW1lKToKKyAg
ICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dl
YklEQlNlcnZlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnByZXBhcmVUb1N1c3BlbmQpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cmVzdW1lKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3M6OmNyZWF0ZVdlYklEQlNlcnZlcik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtQcm9jZXNzOjpzdXNwZW5kSURCU2VydmVycyk6IERlbGV0ZWQuCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9pb3Mv
TmV0d29ya1Byb2Nlc3NJT1MubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpz
ZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyk6IERlbGV0ZWQuCisgICAgICAgICogU2hhcmVkL0RhdGFi
YXNlQXNzZXJ0aW9uTWFuYWdlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFz
ZUFzc2VydGlvbk1hbmFnZXI6OkRhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlcik6CisgICAgICAgIChX
ZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlcjo6fkRhdGFiYXNlQXNzZXJ0aW9uTWFuYWdl
cik6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlcjo6c2NvcGVCZWdp
bnMpOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXI6OnNjb3BlRW5k
cyk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlcjo6aXNBbnlEYXRh
YmFzZUxvY2tlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlQXNzZXJ0aW9uTWFu
YWdlcjo6c2NoZWR1bGVBc3NlcnRpb25SZWxlYXNlKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJh
c2VBc3NlcnRpb25NYW5hZ2VyOjpyZWxlYXNlQXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYktpdDo6
RGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyOjphZGREYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6
OkRhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlcjo6cmVtb3ZlRGF0YWJhc2UpOgorICAgICAgICAoV2Vi
S2l0OjpEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXI6OnN1c3BlbmQpOgorICAgICAgICAoV2ViS2l0
OjpEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXI6OnJlc3VtZSk6CisgICAgICAgICogU2hhcmVkL0Rh
dGFiYXNlQXNzZXJ0aW9uTWFuYWdlci5oOiBBZGRlZC4KKyAgICAgICAgKiBTaGFyZWQvbWFjL01l
ZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcDoKKyAgICAgICAgKiBTb3VyY2Vz
Q29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
CiAyMDIxLTA3LTIzICBSb2JlcnQgSmVubmVyICA8SmVubmVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI4MDIwNS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKaW5kZXgg
NWE5M2E0ZDdlZjA5NWFjYzgxMGU2NjljYmNhNGIyNWY0ZmUwNDJkZi4uZGU4NDBjMzVhMzI3N2U4
N2ViOTg3NTNjMTE3NDllNjAxMTFlNTk4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAyMS0wNy0yMyAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFwcGxlLmNvbT4KKwor
ICAgICAgICBEcm9wIGFsbCBmaWxlIGxvY2tzIHN5bmNocm9ub3VzbHkgaW4gbmV0d29yayBwcm9j
ZXNzIHdoZW4gaXQgaXMgYWJvdXQgdG8gc3VzcGVuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI3ODg3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
MDgwMjIyND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFN0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
VHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdl
VHJhY2tlcjo6c3luY0RlbGV0ZU9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OnRydW5jYXRlRGF0
YWJhc2VGaWxlKTogRGVsZXRlZC4KKwogMjAyMS0wNy0xOSAgU2lodWkgTGl1ICA8c2lodWlfbGl1
QGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgSURCVHJhbnNhY3Rpb24uY29tbWl0KCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJT
ZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNl
cnZlci5jcHAKaW5kZXggYjRkNTU5NDU0MjQ4MDlhZjI2OGIwYzc0Mzg3NDFhNTYyOTE4ZGMyNC4u
MDg2ZWQxMzE0NjI1MDk5MTJhMDUzYjE3YmYwMjYyZDliYzRlYzA1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAg
LTc2NywyNiArNzY3LDkgQEAgdm9pZCBJREJTZXJ2ZXI6OnVwZ3JhZGVGaWxlc0lmTmVjZXNzYXJ5
KCkKICAgICAgICAgRmlsZVN5c3RlbTo6bWFrZUFsbERpcmVjdG9yaWVzKG5ld1ZlcnNpb25EaXJl
Y3RvcnkpOwogfQogCi1ib29sIElEQlNlcnZlcjo6aGFzRGF0YWJhc2VBY3Rpdml0aWVzT25NYWlu
VGhyZWFkKCkgY29uc3QKK3ZvaWQgSURCU2VydmVyOjpzdG9wRGF0YWJhc2VBY3Rpdml0aWVzSWZO
ZWVkZWQoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKG1fbG9j
ay5pc0hlbGQoKSk7Ci0KLSAgICBpZiAobV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZm9yIChhdXRvJiBkYXRhYmFzZSA6IG1fdW5pcXVlSURC
RGF0YWJhc2VNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgaWYgKCFkYXRhYmFzZS0+aWRlbnRpZmll
cigpLmlzVHJhbnNpZW50KCkgJiYgZGF0YWJhc2UtPmhhc0FjdGl2ZVRyYW5zYWN0aW9ucygpKQot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotdm9pZCBJREJTZXJ2ZXI6OnN0b3BEYXRhYmFzZUFjdGl2aXRpZXNPbk1haW5UaHJlYWQo
KQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKG1fbG9jay5pc0hl
bGQoKSk7CisgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKICAgICAvLyBPbmx5IHN0b3Ag
bm9uLWVwaGVtZXJhbCBJREJTZXJ2ZXIgdGhhdCBjYW4gaG9sZCBkYXRhYmFzZSBmaWxlIGxvY2su
CiAgICAgaWYgKG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgKaW5kZXggZDg4MzY0OWE1
YzhkNWI1OWYwMmMyYmRhY2RkZTY3OGExY2EzYzQyZi4uYmFhODZmNWNhNGIzNDAxODM1MTcxNjE3
NjU4MGQ5ZmM4NjRiODM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuaApAQCAtMTA3LDggKzEwNyw3IEBAIHB1YmxpYzoKICAg
ICBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbiByZXF1ZXN0U3BhY2UoY29uc3QgQ2xpZW50
T3JpZ2luJiwgdWludDY0X3QgdGFza1NpemUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB1
aW50NjRfdCBkaXNrVXNhZ2UoY29uc3QgU3RyaW5nJiByb290RGlyZWN0b3J5LCBjb25zdCBDbGll
bnRPcmlnaW4mKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaGFzRGF0YWJhc2VBY3Rpdml0
aWVzT25NYWluVGhyZWFkKCkgY29uc3Q7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzdG9wRGF0
YWJhc2VBY3Rpdml0aWVzT25NYWluVGhyZWFkKCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBz
dG9wRGF0YWJhc2VBY3Rpdml0aWVzSWZOZWVkZWQoKTsKIAogcHJpdmF0ZToKICAgICBVbmlxdWVJ
REJEYXRhYmFzZSYgZ2V0T3JDcmVhdGVVbmlxdWVJREJEYXRhYmFzZShjb25zdCBJREJEYXRhYmFz
ZUlkZW50aWZpZXImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIv
U291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZTc2OTRjMmNlYjkxYTU2M2ViODYxNzMz
MzVhNjUxYmNmZjI3ZDE2Ny4uOTM1YTBjMzhhNTcxYzdkYTAzZWZlYTRhOTM1MWJhOTA2MGYxYzZm
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKQEAgLTIxOTAsNiArMjE5MCw3IEBAIHBsYXRmb3JtL3NxbC9TUUxp
dGVBdXRob3JpemVyLmNwcAogcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcAogcGxhdGZv
cm0vc3FsL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAKIHBsYXRmb3JtL3NxbC9TUUxpdGVGaWxl
U3lzdGVtLmNwcAorcGxhdGZvcm0vc3FsL1NRTGl0ZUxvY2tTY29wZS5jcHAKIHBsYXRmb3JtL3Nx
bC9TUUxpdGVTdGF0ZW1lbnQuY3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50QXV0b1Jl
c2V0U2NvcGUuY3BwCiBwbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzYx
MDQxOGJiZmE4ODZmOTc0OGQ1NTlkYTRhYmE4Y2E1OGUxYmY0Yi4uZDFmZWU1YzZkNTJmNjliNzBh
OWQ3MzMwZDEzOWUzNzZiOWMwOGEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjkzNiw2ICsyOTM2LDcgQEAKIAkJOTNGNkI4
MUYyNTY3QTA4QzAwQTA4NDg4IC8qIFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUltcGwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjZCODFD
MjU2NzlGNzAwMEEwODQ4OCAvKiBTcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGNkI4
MjIyNTY3QTY1NjAwQTA4NDg4IC8qIFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGNkI4MUIyNTY3
OUY2RjAwQTA4NDg4IC8qIFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjZGMUVFMTI3Rjcw
QjEwMDU1Q0IwNiAvKiBXZWJHTENvbnRleHRFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGNkYxRUIxMjdGNzBCMTAwNTVDQjA2IC8qIFdlYkdM
Q29udGV4dEV2ZW50LmggKi87IH07CisJCTkzRjhGMEYzMjY5ODI2MTMwMEE5RjMzMSAvKiBTUUxp
dGVMb2NrU2NvcGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzRjhGMEYxMjY5ODI2MTIwMEE5RjMzMSAvKiBTUUxpdGVMb2NrU2NvcGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Y5MjU0MzBGN0VG
NUI4MDA3RTM3QzkgLyogUmFkaW9CdXR0b25Hcm91cHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjkyNTQxMEY3RUY1QjgwMDdFMzdDOSAvKiBSYWRp
b0J1dHRvbkdyb3Vwcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTkzRjlCNkUxMEJBMEZCNzIwMDg1NDA2NCAvKiBKU0NvbW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjlCNkRGMEJBMEZCNzIw
MDg1NDA2NCAvKiBKU0NvbW1lbnQuaCAqLzsgfTsKIAkJOTNGOUI3QTEwQkE2MDMyNjAwODU0MDY0
IC8qIEpTQ0RBVEFTZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5M0Y5Qjc5RjBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uaCAq
LzsgfTsKQEAgLTExODQ4LDYgKzExODQ5LDggQEAKIAkJOTNGOEIzMDUwQTMwMEZFMTAwRjYxQUI4
IC8qIENvZGVHZW5lcmF0b3IucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0g
Q29kZUdlbmVyYXRvci5wbTsgcGF0aCA9IHNjcmlwdHMvQ29kZUdlbmVyYXRvci5wbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGOEIzMDYwQTMwMEZFQTAwRjYxQUI4IC8qIENvZGVH
ZW5lcmF0b3JKUy5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBDb2RlR2Vu
ZXJhdG9ySlMucG07IHBhdGggPSBzY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+Ijsgd3JhcHNMaW5lcyA9IDA7IH07CiAJCTkzRjhCMzA3MEEzMDBGRUEwMEY2
MUFCOCAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBlcmw7
IG5hbWUgPSAiZ2VuZXJhdGUtYmluZGluZ3MucGwiOyBwYXRoID0gInNjcmlwdHMvZ2VuZXJhdGUt
YmluZGluZ3MucGwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5M0Y4RjBFRjI2OTgy
NjEyMDBBOUYzMzEgLyogU1FMaXRlTG9ja1Njb3BlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFNRTGl0ZUxvY2tTY29wZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTkzRjhGMEYxMjY5ODI2MTIwMEE5RjMzMSAvKiBTUUxpdGVMb2NrU2NvcGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1FMaXRlTG9ja1Njb3BlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjkyNTQxMEY3RUY1QjgwMDdFMzdDOSAvKiBSYWRp
b0J1dHRvbkdyb3Vwcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSYWRpb0J1
dHRvbkdyb3Vwcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y5MjU0MjBGN0VG
NUI4MDA3RTM3QzkgLyogUmFkaW9CdXR0b25Hcm91cHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUmFkaW9CdXR0b25Hcm91cHMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5M0Y5QjZERTBCQTBGQjcyMDA4NTQwNjQgLyogSlNDb21tZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ29tbWVudC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODU1MCw2ICsxODU1Myw4IEBACiAJCQkJN0U0NzRF
MUIxMjQ5NERDOTAwMjM1MzY0IC8qIFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudC5oICovLAog
CQkJCUI1QTY4NDIzMEZGQUJFQUEwMEQyNDY4OSAvKiBTUUxpdGVGaWxlU3lzdGVtLmNwcCAqLywK
IAkJCQlCNUE2ODQyMTBGRkFCRTk4MDBEMjQ2ODkgLyogU1FMaXRlRmlsZVN5c3RlbS5oICovLAor
CQkJCTkzRjhGMEVGMjY5ODI2MTIwMEE5RjMzMSAvKiBTUUxpdGVMb2NrU2NvcGUuY3BwICovLAor
CQkJCTkzRjhGMEYxMjY5ODI2MTIwMEE5RjMzMSAvKiBTUUxpdGVMb2NrU2NvcGUuaCAqLywKIAkJ
CQkxQTIyNDY0NTBDQzk4RERCMDBDMDUyNDAgLyogU1FMaXRlU3RhdGVtZW50LmNwcCAqLywKIAkJ
CQkxQTIyNDY0NjBDQzk4RERCMDBDMDUyNDAgLyogU1FMaXRlU3RhdGVtZW50LmggKi8sCiAJCQkJ
RUJFNUIyMjcyNDVBMjlDRjAwM0E1QTg4IC8qIFNRTGl0ZVN0YXRlbWVudEF1dG9SZXNldFNjb3Bl
LmNwcCAqLywKQEAgLTM1NDEyLDYgKzM1NDE3LDcgQEAKIAkJCQk1MTJCREI0QjFDNDU2RkZBMDA2
NDk0REYgLyogU1FMaXRlSURCQmFja2luZ1N0b3JlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTFF
QzEzMDFDNTBBQkY1MDAzMkY5ODMgLyogU1FMaXRlSURCQ3Vyc29yLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTFFQzEyQzFDNTBBQkJGMDAzMkY5ODMgLyogU1FMaXRlSURCVHJhbnNhY3Rpb24uaCBp
biBIZWFkZXJzICovLAorCQkJCTkzRjhGMEYzMjY5ODI2MTMwMEE5RjMzMSAvKiBTUUxpdGVMb2Nr
U2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjI0NjRDMENDOThEREIwMEMwNTI0MCAvKiBT
UUxpdGVTdGF0ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUVCRTVCMjI2MjQ1QTI2RUYwMDNB
NUE4OCAvKiBTUUxpdGVTdGF0ZW1lbnRBdXRvUmVzZXRTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUEyMjQ2NEUwQ0M5OEREQjAwQzA1MjQwIC8qIFNRTGl0ZVRyYW5zYWN0aW9uLmggaW4gSGVh
ZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVE
YXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2Uu
Y3BwCmluZGV4IGExMTEwMjU2ODFlNDY5MzEyM2ZiYzhjYjQ5MGE4MzcwZGIzOWMxODMuLmFlZDQ5
ZGRhNTg4YmQ5MjgxZWIwNjMxZmJhMzM4NzYyNmM0ZjM1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIk1lbW9yeVJlbGVhc2UuaCIKICNpbmNsdWRlICJTUUxpdGVEYXRhYmFzZVRyYWNrZXIu
aCIKICNpbmNsdWRlICJTUUxpdGVGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiU1FMaXRlTG9ja1Nj
b3BlLmgiCiAjaW5jbHVkZSAiU1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSA8bXV0ZXg+CiAj
aW5jbHVkZSA8c3FsaXRlMy5oPgpAQCAtMTE0LDcgKzExNSwxMyBAQCBib29sIFNRTGl0ZURhdGFi
YXNlOjpvcGVuKGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIE9wZW5Nb2RlIG9wZW5Nb2RlKQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBtX29wZW5FcnJvciA9IHNxbGl0
ZTNfb3Blbl92MihGaWxlU3lzdGVtOjpmaWxlU3lzdGVtUmVwcmVzZW50YXRpb24oZmlsZW5hbWUp
LmRhdGEoKSwgJm1fZGIsIGZsYWdzLCBudWxscHRyKTsKKyAgICAgICAgeworICAgICAgICAgICAg
U1FMaXRlTG9ja1Njb3BlIGxvY2tTY29wZTsKKyAgICAgICAgICAgIG1fb3BlbkVycm9yID0gc3Fs
aXRlM19vcGVuX3YyKEZpbGVTeXN0ZW06OmZpbGVTeXN0ZW1SZXByZXNlbnRhdGlvbihmaWxlbmFt
ZSkuZGF0YSgpLCAmbV9kYiwgZmxhZ3MsIG51bGxwdHIpOworICAgICAgICAgICAgaWYgKG1fb3Bl
bkVycm9yID09IFNRTElURV9PSykKKyAgICAgICAgICAgICAgICBsb2NrU2NvcGUuYWRkRGF0YWJh
c2UoKnRoaXMpOworICAgICAgICB9CisKICAgICAgICAgaWYgKG1fb3BlbkVycm9yICE9IFNRTElU
RV9PSykgewogICAgICAgICAgICAgbV9vcGVuRXJyb3JNZXNzYWdlID0gbV9kYiA/IHNxbGl0ZTNf
ZXJybXNnKG1fZGIpIDogInNxbGl0ZV9vcGVuIHJldHVybmVkIG51bGwiOwogICAgICAgICAgICAg
TE9HX0VSUk9SKCJTUUxpdGUgZGF0YWJhc2UgZmFpbGVkIHRvIGxvYWQgZnJvbSAlc1xuQ2F1c2Ug
LSAlcyIsIGZpbGVuYW1lLmFzY2lpKCkuZGF0YSgpLApAQCAtMTY3LDYgKzE3NCw3IEBAIHN0YXRp
YyBpbnQgd2FsQXV0b21hdGljVHJ1bmNhdGlvbkhvb2sodm9pZCogY29udGV4dCwgc3FsaXRlMyog
ZGIsIGNvbnN0IGNoYXIqIGRiCiAKICAgICBpZiAod2FsUGFnZUNvdW50ID49IGNoZWNrcG9pbnRU
aHJlc2hvbGQpIHsKICAgICAgICAgaW50IG5ld1dhbFBhZ2VDb3VudCA9IDA7CisgICAgICAgIEFT
U0VSVChTUUxpdGVMb2NrU2NvcGU6OmlzSW5zaWRlU2NvcGUoKSk7CiAgICAgICAgIGludCByZXN1
bHQgPSBzcWxpdGUzX3dhbF9jaGVja3BvaW50X3YyKGRiLCBkYk5hbWUsIFNRTElURV9DSEVDS1BP
SU5UX1RSVU5DQVRFLCAmbmV3V2FsUGFnZUNvdW50LCBudWxscHRyKTsKIAogI2lmIExPR19ESVNB
QkxFRApAQCAtMTk0LDcgKzIwMiw2IEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmVuYWJsZUF1dG9t
YXRpY1dBTFRydW5jYXRpb24oKQogCiB2b2lkIFNRTGl0ZURhdGFiYXNlOjp1c2VXQUxKb3VybmFs
TW9kZSgpCiB7Ci0gICAgbV91c2VXQUwgPSB0cnVlOwogICAgIHsKICAgICAgICAgYXV0byB3YWxT
dGF0ZW1lbnQgPSBwcmVwYXJlU3RhdGVtZW50KCJQUkFHTUEgam91cm5hbF9tb2RlPVdBTDsiX3Mp
OwogICAgICAgICBpZiAod2FsU3RhdGVtZW50ICYmIHdhbFN0YXRlbWVudC0+c3RlcCgpID09IFNR
TElURV9ST1cpIHsKQEAgLTIzMiwxMiArMjM5LDEyIEBAIHZvaWQgU1FMaXRlRGF0YWJhc2U6OmNs
b3NlKFNob3VsZFNldEVycm9yU3RhdGUgc2hvdWxkU2V0RXJyb3JTdGF0ZSkKICAgICAgICAgfQog
CiAgICAgICAgIGludCBjbG9zZVJlc3VsdDsKLSAgICAgICAgaWYgKG1fdXNlV0FMKSB7Ci0gICAg
ICAgICAgICAvLyBDbG9zZSBpbiB0aGUgc2NvcGUgb2YgY291bnRlciBhcyBpdCBtYXkgYWNxdWly
ZSBsb2NrIG9mIGRhdGFiYXNlLgorICAgICAgICB7CiAgICAgICAgICAgICBTUUxpdGVUcmFuc2Fj
dGlvbkluUHJvZ3Jlc3NBdXRvQ291bnRlciB0cmFuc2FjdGlvbkNvdW50ZXI7CisgICAgICAgICAg
ICBTUUxpdGVMb2NrU2NvcGUgbG9ja1Njb3BlOwogICAgICAgICAgICAgY2xvc2VSZXN1bHQgPSBz
cWxpdGUzX2Nsb3NlKGRiKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBjbG9zZVJlc3Vs
dCA9IHNxbGl0ZTNfY2xvc2UoZGIpOworICAgICAgICAgICAgbG9ja1Njb3BlLnJlbW92ZURhdGFi
YXNlKCp0aGlzKTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmIChjbG9zZVJlc3VsdCAhPSBTUUxJ
VEVfT0spCiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihTUUxEYXRhYmFzZSwgIlNRTGl0
ZURhdGFiYXNlOjpjbG9zZTogRmFpbGVkIHRvIGNsb3NlIGRhdGFiYXNlICglZCkgLSAle3B1Ymxp
Y31zIiwgY2xvc2VSZXN1bHQsIGxhc3RFcnJvck1zZygpKTsKQEAgLTQ1OCw4ICs0NjUsMTQgQEAg
aW50IFNRTGl0ZURhdGFiYXNlOjpydW5JbmNyZW1lbnRhbFZhY3V1bUNvbW1hbmQoKQogdm9pZCBT
UUxpdGVEYXRhYmFzZTo6aW50ZXJydXB0KCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRh
YmFzZUNsb3NpbmdNdXRleCB9OwotICAgIGlmIChtX2RiKQotICAgICAgICBzcWxpdGUzX2ludGVy
cnVwdChtX2RiKTsKKyAgICAKKyAgICBpZiAoIW1fZGIpCisgICAgICAgIHJldHVybjsKKworICAg
IHNxbGl0ZTNfaW50ZXJydXB0KG1fZGIpOworCisgICAgaWYgKGF1dG8gcXVlcnkgPSBwcmVwYXJl
U3RhdGVtZW50KCJST0xMQkFDSyJfcykpCisgICAgICAgIHF1ZXJ5LT5zdGVwV2l0aG91dExvY2tT
Y29wZSgpOwogfQogCiBpbnQ2NF90IFNRTGl0ZURhdGFiYXNlOjpsYXN0SW5zZXJ0Um93SUQoKQpA
QCAtNzMzLDQgKzc0NiwxNCBAQCBFeHBlY3RlZDxVbmlxdWVSZWY8U1FMaXRlU3RhdGVtZW50Piwg
aW50PiBTUUxpdGVEYXRhYmFzZTo6cHJlcGFyZUhlYXBTdGF0ZW1lbnQoQQogICAgIHJldHVybiBV
bmlxdWVSZWY8U1FMaXRlU3RhdGVtZW50PigqbmV3IFNRTGl0ZVN0YXRlbWVudCgqdGhpcywgc3Fs
U3RhdGVtZW50LnZhbHVlKCkpKTsKIH0KIAordm9pZCBTUUxpdGVEYXRhYmFzZTo6c2V0SXNSdW5u
aW5nVHJhbnNhY3Rpb24oYm9vbCBpc1J1bm5pbmdUcmFuc2FjdGlvbikKK3sKKyAgICBtX2lzUnVu
bmluZ1RyYW5zYWN0aW9uID0gaXNSdW5uaW5nVHJhbnNhY3Rpb247Cit9CisKK2Jvb2wgU1FMaXRl
RGF0YWJhc2U6OmlzUnVubmluZ1RyYW5zYWN0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9p
c1J1bm5pbmdUcmFuc2FjdGlvbjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJhc2UuaAppbmRleCA0YjIyYzhmZTY4
ZTM1ZmJkZDA5NzI1ODY4YzRjOWEwZTVjYWIyY2YwLi40YjBkZGJmM2NkNThlNWMwY2Q1NGIyYTk2
ODdkM2QwN2YwY2M1NGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
RGF0YWJhc2UuaApAQCAtMTMwLDcgKzEzMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEF1dGhv
cml6ZXIoRGF0YWJhc2VBdXRob3JpemVyJik7CiAKICAgICBMb2NrJiBkYXRhYmFzZU11dGV4KCkg
eyByZXR1cm4gbV9sb2NraW5nTXV0ZXg7IH0KLSAgICBib29sIGlzQXV0b0NvbW1pdE9uKCkgY29u
c3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0F1dG9Db21taXRPbigpIGNvbnN0OwogCiAg
ICAgLy8gVGhlIFNRTGl0ZSBBVVRPX1ZBQ1VVTSBwcmFnbWEgY2FuIGJlIGVpdGhlciBOT05FLCBG
VUxMLCBvciBJTkNSRU1FTlRBTC4KICAgICAvLyBOT05FIC0gU1FMaXRlIGRvZXMgbm90IGRvIGFu
eSB2YWN1dW1pbmcKQEAgLTE2Miw2ICsxNjIsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbmNyZW1l
bnRTdGF0ZW1lbnRDb3VudCgpOwogICAgIHZvaWQgZGVjcmVtZW50U3RhdGVtZW50Q291bnQoKTsK
IAorICAgIHZvaWQgc2V0SXNSdW5uaW5nVHJhbnNhY3Rpb24oYm9vbCk7CisgICAgYm9vbCBpc1J1
bm5pbmdUcmFuc2FjdGlvbigpIGNvbnN0OworCiBwcml2YXRlOgogICAgIHN0YXRpYyBpbnQgYXV0
aG9yaXplckZ1bmN0aW9uKHZvaWQqLCBpbnQsIGNvbnN0IGNoYXIqLCBjb25zdCBjaGFyKiwgY29u
c3QgY2hhciosIGNvbnN0IGNoYXIqKTsKIApAQCAtMTgxLDggKzE4NCw2IEBAIHByaXZhdGU6CiAg
ICAgc3RkOjphdG9taWM8dW5zaWduZWQ+IG1fc3RhdGVtZW50Q291bnQgeyAwIH07CiAjZW5kaWYK
IAotICAgIGJvb2wgbV91c2VXQUwgeyBmYWxzZSB9OwotCiAgICAgTG9jayBtX2F1dGhvcml6ZXJM
b2NrOwogICAgIFJlZlB0cjxEYXRhYmFzZUF1dGhvcml6ZXI+IG1fYXV0aG9yaXplciBXVEZfR1VB
UkRFRF9CWV9MT0NLKG1fYXV0aG9yaXplckxvY2spOwogCkBAIC0xOTMsNiArMTk0LDggQEAgcHJp
dmF0ZToKIAogICAgIGludCBtX29wZW5FcnJvciB7IFNRTElURV9FUlJPUiB9OwogICAgIENTdHJp
bmcgbV9vcGVuRXJyb3JNZXNzYWdlOworCisgICAgYm9vbCBtX2lzUnVubmluZ1RyYW5zYWN0aW9u
IHsgZmFsc2UgfTsKIH07CiAKIGlubGluZSB2b2lkIFNRTGl0ZURhdGFiYXNlOjppbmNyZW1lbnRT
dGF0ZW1lbnRDb3VudCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRmlsZVN5c3RlbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRl
RmlsZVN5c3RlbS5jcHAKaW5kZXggNzZlNDVhZjM0ZWQwOTNmZDlmMjc2ZGQ1ZDRiOTIyYTQxNjM0
ZDlhZS4uOGI5YjMyMWRjNjQ4MTAwZmNiZjRjNWMyMmY1MGYxNGIxNWEzMTg4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVGaWxlU3lzdGVtLmNwcApAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIlNRTGl0ZUZpbGVTeXN0ZW0uaCIKIAogI2luY2x1ZGUgIlNR
TGl0ZURhdGFiYXNlLmgiCisjaW5jbHVkZSAiU1FMaXRlTG9ja1Njb3BlLmgiCiAjaW5jbHVkZSAi
U1FMaXRlU3RhdGVtZW50LmgiCiAjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4K
ICNpbmNsdWRlIDxzcWxpdGUzLmg+CkBAIC05NCw2ICs5NSw3IEBAIGJvb2wgU1FMaXRlRmlsZVN5
c3RlbTo6ZGVsZXRlRGF0YWJhc2VGaWxlKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUpCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKIGJvb2wgU1FMaXRlRmlsZVN5c3RlbTo6dHJ1bmNhdGVEYXRhYmFz
ZUZpbGUoc3FsaXRlMyogZGF0YWJhc2UpCiB7CisgICAgU1FMaXRlTG9ja1Njb3BlIGxvY2tTY29w
ZTsKICAgICByZXR1cm4gc3FsaXRlM19maWxlX2NvbnRyb2woZGF0YWJhc2UsIDAsIFNRTElURV9U
UlVOQ0FURV9EQVRBQkFTRSwgMCkgPT0gU1FMSVRFX09LOwogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlRmlsZVN5c3RlbS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUZpbGVTeXN0ZW0uaAppbmRleCBjNjhkOWM3ZTdh
Zjk4OTc2YTFlZDNkY2I2ZjJhY2ZlNGI2Y2Y1YzJmLi5kMzI2OGJkODVjY2U0MjJhNmUzN2E4OWIy
MzAyZGY0ZjZmOGVkN2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlRmlsZVN5c3RlbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxp
dGVGaWxlU3lzdGVtLmgKQEAgLTg2LDcgKzg2LDcgQEAgcHVibGljOgogICAgIC8vIFRydW5jYXRl
cyBhIGRhdGFiYXNlIGZpbGUuIFVzZWQgd2hlbiBNb2JpbGVTYWZhcmlTZXR0aW5ncyBkZWxldGVz
IGEgZGF0YWJhc2UgZmlsZSwKICAgICAvLyBzaW5jZSBkZWxldGluZyB0aGUgZmlsZSBudWtlcyB0
aGUgUE9TSVggZmlsZSBsb2NrcyB3aGljaCB3b3VsZCBwb3RlbnRpYWxseSBjYXVzZSBTYWZhcmkK
ICAgICAvLyB0byBjb3JydXB0IHRoZSBuZXcgZGIgaWYgaXQncyBydW5uaW5nIGluIHRoZSBiYWNr
Z3JvdW5kLgotICAgIHN0YXRpYyBib29sIHRydW5jYXRlRGF0YWJhc2VGaWxlKHNxbGl0ZTMqIGRh
dGFiYXNlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCB0cnVuY2F0ZURhdGFiYXNl
RmlsZShzcWxpdGUzKiBkYXRhYmFzZSk7CiAjZW5kaWYKICAgICAKICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgdWludDY0X3QgZGF0YWJhc2VGaWxlU2l6ZShjb25zdCBTdHJpbmcmIGZpbGVOYW1l
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2Nv
cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZUxvY2tTY29wZS5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGEzY2UzZDcxNzhjNDg1MjVjMzE4N2Q0ODIxZGVlMTU0Mzc0OTdkNQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2Nv
cGUuY3BwCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiU1FMaXRlTG9ja1Njb3BlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RhdGljIExvY2sgc2NvcGVMb2NrOworc3RhdGljIFNRTGl0ZUxvY2tTY29wZUltcGwqIHNfaW1w
bCB7IG51bGxwdHIgfTsKK3N0YXRpYyBib29sIGlzTG9ja2VkRXh0ZXJuYWxseSB7IGZhbHNlIH07
CisKK3ZvaWQgU1FMaXRlTG9ja1Njb3BlOjpzZXRJbXBsKFNRTGl0ZUxvY2tTY29wZUltcGwqIGlt
cGwpCit7CisgICAgTG9ja2VyIGxvY2tlciB7IHNjb3BlTG9jayB9OworICAgIHNfaW1wbCA9IGlt
cGw7Cit9CisKK3ZvaWQgU1FMaXRlTG9ja1Njb3BlOjpob2xkTG9jaygpIFdURl9JR05PUkVTX1RI
UkVBRF9TQUZFVFlfQU5BTFlTSVMKK3sKKyAgICBzY29wZUxvY2subG9jaygpOworICAgIGlzTG9j
a2VkRXh0ZXJuYWxseSA9IHRydWU7Cit9CisKK3ZvaWQgU1FMaXRlTG9ja1Njb3BlOjpyZWxlYXNl
TG9jaygpIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKK3sKKyAgICBpc0xvY2tl
ZEV4dGVybmFsbHkgPSBmYWxzZTsKKyAgICBzY29wZUxvY2sudW5sb2NrKCk7Cit9CisKK2Jvb2wg
U1FMaXRlTG9ja1Njb3BlOjppc0luc2lkZVNjb3BlKCkKK3sKKyAgICByZXR1cm4gc2NvcGVMb2Nr
LmlzTG9ja2VkKCkgJiYgIWlzTG9ja2VkRXh0ZXJuYWxseTsKK30KKworU1FMaXRlTG9ja1Njb3Bl
OjpTUUxpdGVMb2NrU2NvcGUoKQoreworICAgIHNjb3BlTG9jay5sb2NrKCk7CisgICAgaWYgKHNf
aW1wbCkKKyAgICAgICAgc19pbXBsLT5zY29wZUJlZ2lucygpOworfQorCitTUUxpdGVMb2NrU2Nv
cGU6On5TUUxpdGVMb2NrU2NvcGUoKQoreworICAgIGlmIChzX2ltcGwpCisgICAgICAgIHNfaW1w
bC0+c2NvcGVFbmRzKCk7CisgICAgc2NvcGVMb2NrLnVubG9jaygpOworfQorCit2b2lkIFNRTGl0
ZUxvY2tTY29wZTo6YWRkRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQoreworICAg
IGlmIChzX2ltcGwpCisgICAgICAgIHNfaW1wbC0+YWRkRGF0YWJhc2UoZGF0YWJhc2UpOworfQor
Cit2b2lkIFNRTGl0ZUxvY2tTY29wZTo6cmVtb3ZlRGF0YWJhc2UoU1FMaXRlRGF0YWJhc2UmIGRh
dGFiYXNlKQoreworICAgIGlmIChzX2ltcGwpCisgICAgICAgIHNfaW1wbC0+cmVtb3ZlRGF0YWJh
c2UoZGF0YWJhc2UpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlTG9ja1Njb3BlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlTG9ja1Njb3BlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmQ3ZTJiZjg3
ODg3ZDBjODc2Y2ZlNjE2ZTQwOWVjY2UyOTU0ODk4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9TUUxpdGVMb2NrU2NvcGUuaApAQCAtMCwwICsxLDU3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgU1FMaXRlRGF0YWJhc2U7CitjbGFzcyBTUUxpdGVUcmFuc2FjdGlvbjsKKworY2xhc3MgU1FM
aXRlTG9ja1Njb3BlSW1wbCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+U1FMaXRlTG9ja1Njb3Bl
SW1wbCgpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgdm9pZCBzY29wZUJlZ2lucygpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2NvcGVFbmRzKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRE
YXRhYmFzZShTUUxpdGVEYXRhYmFzZSYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGF0
YWJhc2UoU1FMaXRlRGF0YWJhc2UmKSA9IDA7Cit9OworCitjbGFzcyBTUUxpdGVMb2NrU2NvcGUg
eworcHVibGljOgorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldEltcGwoU1FMaXRl
TG9ja1Njb3BlSW1wbCopOworICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIGhvbGRMb2Nr
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVsZWFzZUxvY2soKTsKKyAgICBz
dGF0aWMgYm9vbCBpc0luc2lkZVNjb3BlKCk7CisKKyAgICBTUUxpdGVMb2NrU2NvcGUoKTsKKyAg
ICB+U1FMaXRlTG9ja1Njb3BlKCk7CisKKyAgICB2b2lkIGFkZERhdGFiYXNlKFNRTGl0ZURhdGFi
YXNlJik7CisgICAgdm9pZCByZW1vdmVEYXRhYmFzZShTUUxpdGVEYXRhYmFzZSYpOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlU3RhdGVtZW50LmNwcAppbmRleCAwMWZmM2VhNDExNmFmNTRhYjhjOTZmMGU0ZjEyZjVk
ODJjNTcyYjAyLi44MDA5MTk5MTc1YTMyY2Q4MTYzNDAxZjc2Zjc5ZDExZTE2ODI4NmExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmNwcApAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTUUxWYWx1ZS5o
IgogI2luY2x1ZGUgIlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIgorI2luY2x1ZGUgIlNRTGl0ZUxv
Y2tTY29wZS5oIgogI2luY2x1ZGUgPHNxbGl0ZTMuaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CkBAIC02MywxMCArNjQsNDggQEAgU1FMaXRl
U3RhdGVtZW50Ojp+U1FMaXRlU3RhdGVtZW50KCkKICAgICBtX2RhdGFiYXNlLmRlY3JlbWVudFN0
YXRlbWVudENvdW50KCk7CiB9CiAKK2Jvb2wgU1FMaXRlU3RhdGVtZW50OjpzaG91bGRFeGVjdXRl
KCkKK3sKKyAgICBhdXRvIHF1ZXJ5ID0gc3FsaXRlM19zcWwobV9zdGF0ZW1lbnQpOworICAgIGlm
ICghc3RyY21wKHF1ZXJ5LCAiQkVHSU4iKSB8fCAhc3RyY21wKHF1ZXJ5LCAiQkVHSU4gSU1NRURJ
QVRFIikpCisgICAgICAgIG1fZGF0YWJhc2Uuc2V0SXNSdW5uaW5nVHJhbnNhY3Rpb24odHJ1ZSk7
CisgICAgZWxzZSBpZiAoIXN0cmNtcChxdWVyeSwgIkNPTU1JVCIpIHx8ICFzdHJjbXAocXVlcnks
ICJST0xMQkFDSyIpKQorICAgICAgICBtX2RhdGFiYXNlLnNldElzUnVubmluZ1RyYW5zYWN0aW9u
KGZhbHNlKTsKKyAgICBlbHNlIGlmIChtX2RhdGFiYXNlLmlzUnVubmluZ1RyYW5zYWN0aW9uKCkg
JiYgbV9kYXRhYmFzZS5pc0F1dG9Db21taXRPbigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogaW50IFNRTGl0ZVN0YXRlbWVudDo6c3RlcCgpCiB7CiAg
ICAgTG9ja2VyIGRhdGFiYXNlTG9jayB7IG1fZGF0YWJhc2UuZGF0YWJhc2VNdXRleCgpIH07CiAK
KyAgICBpbnQgZXJyb3I7CisgICAgLy8gQXV0byBjb21taXQgc2hvdWxkIGJlIG9mZiB3aGVuIHRy
YW5zYWN0aW9uIGlzIHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5LgorICAgIGlmIChpc1JlYWRPbmx5KCkg
JiYgbV9kYXRhYmFzZS5pc0F1dG9Db21taXRPbigpKQorICAgICAgICBlcnJvciA9IHNxbGl0ZTNf
c3RlcChtX3N0YXRlbWVudCk7CisgICAgZWxzZSB7CisgICAgICAgIFNRTGl0ZUxvY2tTY29wZSBs
b2NrU2NvcGU7CisKKyAgICAgICAgaWYgKCFzaG91bGRFeGVjdXRlKCkpIHsKKyAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0VSUk9SKFNRTERhdGFiYXNlLCAiU1FMaXRlU3RhdGVtZW50OjpzdGVwOiBD
YW5ub3Qgc3RlcCAle3B1YmxpY31zIGJlY2F1c2UgdHJhbnNhY3Rpb24gaXMgcm9sbGVkIGJhY2si
LCBzcWxpdGUzX3NxbChtX3N0YXRlbWVudCkpOworICAgICAgICAgICAgcmV0dXJuIFNRTElURV9B
Qk9SVDsKKyAgICAgICAgfQorCisgICAgICAgIGVycm9yID0gc3FsaXRlM19zdGVwKG1fc3RhdGVt
ZW50KTsKKyAgICB9CisKKyAgICBpZiAoZXJyb3IgIT0gU1FMSVRFX0RPTkUgJiYgZXJyb3IgIT0g
U1FMSVRFX1JPVykKKyAgICAgICAgTE9HKFNRTERhdGFiYXNlLCAic3FsaXRlM19zdGVwIGZhaWxl
ZCAoJWkpXG5FcnJvciAtICVzIiwgZXJyb3IsIHNxbGl0ZTNfZXJybXNnKG1fZGF0YWJhc2Uuc3Fs
aXRlM0hhbmRsZSgpKSk7CisKKyAgICByZXR1cm4gZXJyb3I7Cit9CisKK2ludCBTUUxpdGVTdGF0
ZW1lbnQ6OnN0ZXBXaXRob3V0TG9ja1Njb3BlKCkKK3sKKyAgICBMb2NrZXIgZGF0YWJhc2VMb2Nr
IHsgbV9kYXRhYmFzZS5kYXRhYmFzZU11dGV4KCkgfTsKKwogICAgIC8vIElmIHdlJ3JlIG5vdCB3
aXRoaW4gYSB0cmFuc2FjdGlvbiBhbmQgd2UgY2FsbCBzcWxpdGUzX3N0ZXAoKSwgU1FMaXRlIHdp
bGwgaW1wbGljaXRseSBjcmVhdGUgYSB0cmFuc2FjdGlvbiBmb3IgdXMuCiAgICAgLy8gSW4gc3Vj
aCBjYXNlLCB3ZSBzaG91bGQgYnVtcCBvdXIgdHJhbnNhY3Rpb24gY291bnQgdG8gcmVmbGVjdCB0
aGF0LgogICAgIHN0ZDo6b3B0aW9uYWw8U1FMaXRlVHJhbnNhY3Rpb25JblByb2dyZXNzQXV0b0Nv
dW50ZXI+IHRyYW5zYWN0aW9uQ291bnRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3NxbC9TUUxpdGVTdGF0ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Nx
bC9TUUxpdGVTdGF0ZW1lbnQuaAppbmRleCBjZjJmMTIwZjJlNzUzYWQ4ZDEzMTcwZmQwZDg3MDAx
NjlkZWJjMTU1Li4zY2MwMTlmZTUzOTNiODNkMGMwY2NkOTE2OTE3YjkyOGFhZjQ4OTAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlU3RhdGVtZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVN0YXRlbWVudC5oCkBAIC01MCw2
ICs1MCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBiaW5kUGFyYW1l
dGVyQ291bnQoKSBjb25zdDsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGludCBzdGVwKCk7CisgICAg
aW50IHN0ZXBXaXRob3V0TG9ja1Njb3BlKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgaW50IHJlc2V0
KCk7CiAgICAgCiAgICAgLy8gc3RlcHMgYW5kIGZpbmFsaXplcyB0aGUgcXVlcnkuCkBAIC04NCw2
ICs4NSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIHByZXBhcmVk
IHN0YXRlbWVudCBoYXMgYmVlbiBzdGVwcGVkIGF0IGxlYXN0IG9uY2UgdXNpbmcgc3RlcCgpIGJ1
dCBoYXMgbmVpdGhlciBydW4gdG8gY29tcGxldGlvbiAocmV0dXJuZWQgU1FMSVRFX0RPTkUgZnJv
bSBzdGVwKCkpIG5vciBiZWVuIHJlc2V0KCkuCiAgICAgYm9vbCBoYXNTdGFydGVkU3RlcHBpbmco
KTsKKyAgICBib29sIHNob3VsZEV4ZWN1dGUoKTsKIAogICAgIFNRTGl0ZURhdGFiYXNlJiBtX2Rh
dGFiYXNlOwogICAgIHNxbGl0ZTNfc3RtdCogbV9zdGF0ZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmNwcAppbmRleCAwOGU5ZWI3M2Ri
MjRhMDkwYTdhMDgwYzFhODE1NjkzMThlNWEyODU5Li5kNTgyZmFjYzJlMWNkYzA3NTk1ODAxNTM0
YWQ0OWY4OTRmZDhmY2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9zcWwv
U1FMaXRlVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NxbC9T
UUxpdGVUcmFuc2FjdGlvbi5jcHAKQEAgLTY2LDEwICs2NiwxNCBAQCB2b2lkIFNRTGl0ZVRyYW5z
YWN0aW9uOjpiZWdpbigpCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1faW5Qcm9ncmVzcyA9
IG1fZGIuZXhlY3V0ZUNvbW1hbmQoIkJFR0lOIElNTUVESUFURSJfcyk7CiAgICAgICAgIG1fZGIu
bV90cmFuc2FjdGlvbkluUHJvZ3Jlc3MgPSBtX2luUHJvZ3Jlc3M7CisKKyAgICAgICAgaWYgKCFt
X2luUHJvZ3Jlc3MpIHsKKyAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSBpcyBhbiBleHBs
aWNpdCByb2xsYmFjayBhZnRlciBiZWdpbiB0byB1cGRhdGUgZGF0YWJhc2Ugc3RhdGUuCisgICAg
ICAgICAgICBtX2RiLmV4ZWN1dGVDb21tYW5kKCJST0xMQkFDSyJfcyk7CiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICAgICAgaWYgKCFtX2luUHJvZ3Jlc3MpCiAgICAgICAgICAgICBTUUxp
dGVEYXRhYmFzZVRyYWNrZXI6OmRlY3JlbWVudFRyYW5zYWN0aW9uSW5Qcm9ncmVzc0NvdW50KCk7
CiAjZW5kaWYKKyAgICAgICAgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHAKaW5kZXggZjA2OGIy
NjdhMTUxNjY4YzY2MDFjMGFjNGU0ZTdlN2JiNmRkZmRkMS4uNmIyNTBiYTdiMzQ2YmQxOWE2YWY4
NzRmNDliN2JjMDM4MGU3OGQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuY3BwCkBAIC01Myw3ICs1Myw2IEBAIFdl
YklEQlNlcnZlcjo6V2ViSURCU2VydmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
U3RyaW5nJiBkaXJlY3RvcnksIFdlCiBXZWJJREJTZXJ2ZXI6On5XZWJJREJTZXJ2ZXIoKQogewog
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgQVNTRVJUKCFtX2lzU3VzcGVuZGVk
KTsKIH0KIAogdm9pZCBXZWJJREJTZXJ2ZXI6OmdldE9yaWdpbnMoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChIYXNoU2V0PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mJik+JiYgY2FsbGJhY2sp
CkBAIC0xMTUsNDcgKzExNCwzOSBAQCB2b2lkIFdlYklEQlNlcnZlcjo6cmVuYW1lT3JpZ2luKGNv
bnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgb2xkT3JpZ2luLCBjbwogICAgIH0pOwog
fQogCi1ib29sIFdlYklEQlNlcnZlcjo6c3VzcGVuZChTdXNwZW5zaW9uQ29uZGl0aW9uIHN1c3Bl
bnNpb25Db25kaXRpb24pIFdURl9JR05PUkVTX1RIUkVBRF9TQUZFVFlfQU5BTFlTSVMKK3ZvaWQg
V2ViSURCU2VydmVyOjpzdXNwZW5kKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgaWYg
KG1faXNTdXNwZW5kZWQpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgIExvY2tlciBzdXNwZW5z
aW9uTG9ja2VyIHsgbV9zdXNwZW5zaW9uTG9jayB9OworICAgIG1fc2hvdWxkU3VzcGVuZCA9IHRy
dWU7CiAKLSAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViSURCU2Vy
dmVyOjpzdXNwZW5kKCksIHN1c3BlbnNpb25Db25kaXRpb249JXMiLCB0aGlzLCBzdXNwZW5zaW9u
Q29uZGl0aW9uID09IFN1c3BlbnNpb25Db25kaXRpb246OkFsd2F5cyA/ICJBbHdheXMiIDogIklm
SWRsZSIpOwotCi0gICAgbV9pc1N1c3BlbmRlZCA9IHRydWU7Ci0gICAgbV9zZXJ2ZXJMb2NrLmxv
Y2soKTsKLQotICAgIGlmICghbV9zZXJ2ZXIpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgIG1f
cXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHN1
c3BlbnNpb25JZGVudGlmaWVyID0gKyttX3N1c3BlbnNpb25JZGVudGlmaWVyLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAg
ICAgTG9ja2VyIHN1c3BlbnNpb25Mb2NrZXIgeyBtX3N1c3BlbnNpb25Mb2NrIH07CisgICAgICAg
IGlmICghbV9zaG91bGRTdXNwZW5kIHx8IHN1c3BlbnNpb25JZGVudGlmaWVyICE9IG1fc3VzcGVu
c2lvbklkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KIAotICAgIGlmIChzdXNwZW5zaW9uQ29uZGl0aW9uID09IFN1c3BlbnNpb25Db25kaXRpb246
OkFsd2F5cykgewotICAgICAgICBtX3NlcnZlci0+c3RvcERhdGFiYXNlQWN0aXZpdGllc09uTWFp
blRocmVhZCgpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9CisgICAgICAgIHsKKyAgICAg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3NlcnZlckxvY2sgfTsKKyAgICAgICAgICAgIG1fc2Vy
dmVyLT5zdG9wRGF0YWJhc2VBY3Rpdml0aWVzSWZOZWVkZWQoKTsKKyAgICAgICAgfQogCi0gICAg
Ly8gU3VzcGVuZCB0byBhdm9pZCBzdGFydGluZyBuZXcgdHJhbnNhY3Rpb25zIGlmIHRoZXJlIGlz
IG5vIG9uZ29pbmcgdHJhbnNhY3Rpb24uCi0gICAgaWYgKCFtX3NlcnZlci0+aGFzRGF0YWJhc2VB
Y3Rpdml0aWVzT25NYWluVGhyZWFkKCkpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCi0g
ICAgLy8gUmVzdW1lIHRvIGFsbG93IG9uZ29pbmcgdHJhbnNhY3Rpb25zIHRvIGJlIGZpbmlzaGVk
LgotICAgIG1fc2VydmVyTG9jay51bmxvY2soKTsKLSAgICBtX2lzU3VzcGVuZGVkID0gZmFsc2U7
Ci0gICAgcmV0dXJuIGZhbHNlOworICAgICAgICB3aGlsZSAobV9zaG91bGRTdXNwZW5kKQorICAg
ICAgICAgICAgbV9zdXNwZW5zaW9uQ29uZGl0aW9uLndhaXQobV9zdXNwZW5zaW9uTG9jayk7Cisg
ICAgfSk7CiB9CiAKLXZvaWQgV2ViSURCU2VydmVyOjpyZXN1bWUoKSBXVEZfSUdOT1JFU19USFJF
QURfU0FGRVRZX0FOQUxZU0lTCit2b2lkIFdlYklEQlNlcnZlcjo6cmVzdW1lKCkKIHsKICAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCi0gICAgaWYgKCFtX2lzU3VzcGVuZGVkKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0g
V2ViSURCU2VydmVyOjpyZXN1bWUoKSIsIHRoaXMpOwotCi0gICAgbV9pc1N1c3BlbmRlZCA9IGZh
bHNlOwotICAgIG1fc2VydmVyTG9jay51bmxvY2soKTsKKyAgICBMb2NrZXIgc3VzcGVuc2lvbkxv
Y2tlciB7IG1fc3VzcGVuc2lvbkxvY2sgfTsKKyAgICBtX3Nob3VsZFN1c3BlbmQgPSBmYWxzZTsK
KyAgICBtX3N1c3BlbnNpb25Db25kaXRpb24ubm90aWZ5T25lKCk7CiB9CiAKIHZvaWQgV2ViSURC
U2VydmVyOjpvcGVuRGF0YWJhc2UoY29uc3QgV2ViQ29yZTo6SURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9JbmRleGVk
REIvV2ViSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWRE
Qi9XZWJJREJTZXJ2ZXIuaAppbmRleCA2MmYwY2FjMzZkYzY4ZTVhZWUxYzFiYmNhZDM2ODM5ZDcz
MTgwNzE4Li44ZWQ3ZjRiNjY3NTExOTU2NzQzZjQxYjk3ZDAxNmFhYjZmNGY3MTBhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2
ZXIuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW5hbWVPcmlnaW4oY29u
c3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAogICAgIGVudW0gY2xh
c3MgU3VzcGVuc2lvbkNvbmRpdGlvbiA6IGJvb2wgeyBBbHdheXMsIElmSWRsZSB9OwotICAgIGJv
b2wgc3VzcGVuZChTdXNwZW5zaW9uQ29uZGl0aW9uID0gU3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3
YXlzKTsKKyAgICB2b2lkIHN1c3BlbmQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHJlc3VtZSgpOwogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KQEAgLTk4LDEwICs5
OCwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgcG9zdFRhc2tSZXBseShGdW5jdGlvbjx2b2lkKCk+
JiYpOwogCiAgICAgUmVmPFdvcmtRdWV1ZT4gbV9xdWV1ZTsKLQogICAgIExvY2sgbV9zZXJ2ZXJM
b2NrOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJREJTZXJ2ZXI6OklEQlNlcnZlcj4g
bV9zZXJ2ZXIgV1RGX0dVQVJERURfQllfTE9DSyhtX3NlcnZlckxvY2spOwotICAgIGJvb2wgbV9p
c1N1c3BlbmRlZCB7IGZhbHNlIH07CisKKyAgICBMb2NrIG1fc3VzcGVuc2lvbkxvY2s7CisgICAg
Q29uZGl0aW9uIG1fc3VzcGVuc2lvbkNvbmRpdGlvbjsKKyAgICBib29sIG1fc2hvdWxkU3VzcGVu
ZCBXVEZfR1VBUkRFRF9CWV9MT0NLKG1fc3VzcGVuc2lvbkxvY2spIHsgZmFsc2UgfTsKKyAgICB1
aW50NjRfdCBtX3N1c3BlbnNpb25JZGVudGlmaWVyIFdURl9HVUFSREVEX0JZX0xPQ0sobV9zdXNw
ZW5zaW9uTG9jaykgeyAwIH07CiAKICAgICBIYXNoTWFwPElQQzo6Q29ubmVjdGlvbjo6VW5pcXVl
SUQsIHN0ZDo6dW5pcXVlX3B0cjxXZWJJREJDb25uZWN0aW9uVG9DbGllbnQ+PiBtX2Nvbm5lY3Rp
b25NYXA7CiAgICAgV2Vha0hhc2hTZXQ8SVBDOjpDb25uZWN0aW9uPiBtX2Nvbm5lY3Rpb25zOyAv
LyBPbmx5IHVzZWQgb24gdGhlIG1haW4gdGhyZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA0MzYwNTAyZDEwNjE3OWY2NzI4OTU5
Y2NlMzJjZjYwNzZkMTE5MDczLi45OGZhZDIxMzM3YjdkYjM5YTYwMTI4MDZiNDU1Y2JhYjNhN2I0
YmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5o
IgogI2luY2x1ZGUgIkF1eGlsaWFyeVByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIuaCIKICNpbmNs
dWRlICJEb3dubG9hZC5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdlcy5oIgogI2lm
IEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIpCkBAIC0xNTgsOSArMTU5LDkg
QEAgTmV0d29ya1Byb2Nlc3M6Ok5ldHdvcmtQcm9jZXNzKEF1eGlsaWFyeVByb2Nlc3NJbml0aWFs
aXphdGlvblBhcmFtZXRlcnMmJiBwYXJhbWUKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05T
KQogICAgICwgbV9uZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcigqdGhpcykKICNlbmRpZgot
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgLCBtX3dlYlNRTGl0ZURhdGFiYXNlVHJhY2tl
cihbdGhpc10oYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykgeyBzZXRJc0hvbGRpbmdMb2NrZWRG
aWxlcyhpc0hvbGRpbmdMb2NrZWRGaWxlcyk7IH0pCi0jZW5kaWYKKyAgICAsIG1fZGF0YWJhc2VB
c3NlcnRpb25NYW5hZ2VyKCJOZXR3b3JrIFByb2Nlc3MgaXMgaG9sZGluZyBsb2NrZWQgZmlsZXMi
LCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKCkgeworICAgICAgICByZXR1cm4gd2Vh
a1RoaXMgPyB3ZWFrVGhpcy0+bV9zaG91bGRTdXNwZW5kIDogZmFsc2U7CisgICAgfSkKICAgICAs
IG1fbWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkoY3JlYXRlTWVzc2FnZVBvcnRDaGFubmVsUmVn
aXN0cnkoKnRoaXMpKQogewogICAgIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJhdGVnaWVzOjpp
bml0aWFsaXplKCk7CkBAIC0yMjExLDUwICsyMjEyLDI4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnByb2Nlc3NXaWxsU3VzcGVuZEltbWluZW50bHlGb3JUZXN0aW5nU3luYyhDb21wbGV0aW9uSGFu
ZGxlCiAgICAgcHJlcGFyZVRvU3VzcGVuZCh0cnVlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnN1c3BlbmRJREJTZXJ2ZXJzKGJvb2wgaXNT
dXNwZW5zaW9uSW1taW5lbnQpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5k
KGJvb2wgaXNTdXNwZW5zaW9uSW1taW5lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJzID0gdHJ1
ZTsKLSAgICArK21fc3VzcGVuc2lvbklkZW50aWZpZXI7CisgICAgUkVMRUFTRV9MT0coUHJvY2Vz
c1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCksIGlz
U3VzcGVuc2lvbkltbWluZW50PSVkIiwgdGhpcywgaXNTdXNwZW5zaW9uSW1taW5lbnQpOwogCi0g
ICAgYm9vbCBhbGxTdXNwZW5kZWQgPSB0cnVlOwotICAgIGF1dG8gY29uZGl0aW9uID0gaXNTdXNw
ZW5zaW9uSW1taW5lbnQgPyBXZWJJREJTZXJ2ZXI6OlN1c3BlbnNpb25Db25kaXRpb246OkFsd2F5
cyA6IFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6SWZJZGxlOwotICAgIGZvciAo
YXV0byYgc2VydmVyIDogbV93ZWJJREJTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICBhbGxTdXNw
ZW5kZWQgJj0gc2VydmVyLT5zdXNwZW5kKGNvbmRpdGlvbik7CisgICAgbG93TWVtb3J5SGFuZGxl
cihDcml0aWNhbDo6WWVzKTsKIAotICAgIGlmIChhbGxTdXNwZW5kZWQpCi0gICAgICAgIHJldHVy
bjsKKyAgICBtX3Nob3VsZFN1c3BlbmQgPSB0cnVlOworICAgICsrbV9zdXNwZW5zaW9uSWRlbnRp
ZmllcjsKKworICAgIFJlZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNrQWdncmVnYXRv
ciA9IENhbGxiYWNrQWdncmVnYXRvcjo6Y3JlYXRlKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKSwgc3VzcGVuc2lvbklkZW50aWZpZXIgPSBtX3N1c3BlbnNpb25JZGVudGlmaWVy
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFi
bGUgeworICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwogCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoQWZ0ZXIoNV9zLCBb
dGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHN1c3BlbnNpb25JZGVudGlmaWVy
ID0gbV9zdXNwZW5zaW9uSWRlbnRpZmllcl0gewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICghbV9zaG91bGRTdXNwZW5kSURCU2VydmVy
cyB8fCBzdXNwZW5zaW9uSWRlbnRpZmllciAhPSBtX3N1c3BlbnNpb25JZGVudGlmaWVyKQorICAg
ICAgICBpZiAoIW1fc2hvdWxkU3VzcGVuZCB8fCBzdXNwZW5zaW9uSWRlbnRpZmllciAhPSBtX3N1
c3BlbnNpb25JZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGZvciAo
YXV0byYgc2VydmVyIDogbV93ZWJJREJTZXJ2ZXJzLnZhbHVlcygpKQotICAgICAgICAgICAgc2Vy
dmVyLT5zdXNwZW5kKFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6QWx3YXlzKTsK
LSAgICB9KTsKLX0KLQotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlcGFyZVRvU3VzcGVuZChib29s
IGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCi17Ci0gICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAt
IE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCksIGlzU3VzcGVuc2lvbkltbWluZW50
PSVkIiwgdGhpcywgaXNTdXNwZW5zaW9uSW1taW5lbnQpOwotCi0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLSAgICBzdXNwZW5kSURCU2VydmVycyhpc1N1c3BlbnNpb25JbW1pbmVudCk7Ci0jZW5k
aWYKLQotICAgIGxvd01lbW9yeUhhbmRsZXIoQ3JpdGljYWw6Olllcyk7Ci0KLSAgICBSZWZQdHI8
Q2FsbGJhY2tBZ2dyZWdhdG9yPiBjYWxsYmFja0FnZ3JlZ2F0b3IgPSBDYWxsYmFja0FnZ3JlZ2F0
b3I6OmNyZWF0ZShbdGhpcywgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAKICAgICAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1
c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQcm9jZXNzOjpwcmVwYXJlVG9TdXNwZW5kKCkgUHJvY2Vz
cyBpcyByZWFkeSB0byBzdXNwZW5kIiwgdGhpcyk7Ci0gICAgICAgIFVOVVNFRF9WQVJJQUJMRSh0
aGlzKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgbV9kYXRhYmFzZUFz
c2VydGlvbk1hbmFnZXIuc3VzcGVuZCgpOwogICAgIH0pOwotICAgIAotI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpzdXNwZW5kKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7Ci0jZW5kaWYKIAogICAgIGZvckVh
Y2hOZXR3b3JrU2Vzc2lvbihbJl0gKGF1dG8mIG5ldHdvcmtTZXNzaW9uKSB7CiAgICAgICAgIHBs
YXRmb3JtRmx1c2hDb29raWVzKG5ldHdvcmtTZXNzaW9uLnNlc3Npb25JRCgpLCBbY2FsbGJhY2tB
Z2dyZWdhdG9yXSB7IH0pOwpAQCAtMjI3MCw3ICsyMjQ5LDE2IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3M6OnByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlv
bkhhbmRsCiAgICAgfQogI2VuZGlmCiAKLSAgICBtX3N0b3JhZ2VNYW5hZ2VyU2V0LT5zdXNwZW5k
KFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CisgICAgaWYgKGlzU3VzcGVuc2lvbkltbWluZW50
KQorICAgICAgICBtX2RhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlci5zdXNwZW5kKCk7CisgICAgZWxz
ZSB7CisgICAgICAgIG1fc3RvcmFnZU1hbmFnZXJTZXQtPnN1c3BlbmQoW2NhbGxiYWNrQWdncmVn
YXRvcl0geyB9KTsKKyAgICAgICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX3dlYklEQlNlcnZlcnMu
dmFsdWVzKCkpCisgICAgICAgICAgICBzZXJ2ZXItPnN1c3BlbmQoW2NhbGxiYWNrQWdncmVnYXRv
cl0geyB9KTsKKyNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQorICAgICAgICBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1c3BlbmQoW2NhbGxiYWNrQWdncmVnYXRv
cl0geyB9KTsKKyNlbmRpZgorICAgIH0KIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6YXBwbGlj
YXRpb25EaWRFbnRlckJhY2tncm91bmQoKQpAQCAtMjI5MywyMiArMjI4MSwyMCBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzOjpyZXN1bWUoKQogewogICAgIGZvciAoYXV0byYgY29ubmVjdGlvbiA6IG1f
d2ViUHJvY2Vzc0Nvbm5lY3Rpb25zLnZhbHVlcygpKQogICAgICAgICBjb25uZWN0aW9uLT5lbmRT
dXNwZW5zaW9uKCk7Ci0KLSNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAg
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzdW1lKCk7Ci0jZW5kaWYKICAgICAK
ICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCiAgICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX3N3
U2VydmVycy52YWx1ZXMoKSkKICAgICAgICAgc2VydmVyLT5lbmRTdXNwZW5zaW9uKCk7CiAjZW5k
aWYKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCisgICAgbV9zaG91bGRTdXNwZW5kID0gZmFs
c2U7CisgICAgbV9kYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIucmVzdW1lKCk7CisgICAgbV9zdG9y
YWdlTWFuYWdlclNldC0+cmVzdW1lKCk7CiAgICAgZm9yIChhdXRvJiBzZXJ2ZXIgOiBtX3dlYklE
QlNlcnZlcnMudmFsdWVzKCkpCiAgICAgICAgIHNlcnZlci0+cmVzdW1lKCk7Ci0gICAgbV9zaG91
bGRTdXNwZW5kSURCU2VydmVycyA9IGZhbHNlOworI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NU
QVRJU1RJQ1MpCisgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXN1bWUoKTsK
ICNlbmRpZgotCi0gICAgbV9zdG9yYWdlTWFuYWdlclNldC0+cmVzdW1lKCk7CiB9CiAKIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnByZWZldGNoRE5TKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCkBAIC0y
MzcwLDggKzIzNTYsOCBAQCBSZWY8V2ViSURCU2VydmVyPiBOZXR3b3JrUHJvY2Vzczo6Y3JlYXRl
V2ViSURCU2VydmVyKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKICAgICB9OwogCiAgICAgYXV0
byByZXN1bHQgPSBXZWJJREJTZXJ2ZXI6OmNyZWF0ZShzZXNzaW9uSUQsIHBhdGgsIFdURk1vdmUo
c3BhY2VSZXF1ZXN0ZXIpKTsKLSAgICBpZiAobV9zaG91bGRTdXNwZW5kSURCU2VydmVycykKLSAg
ICAgICAgcmVzdWx0LT5zdXNwZW5kKFdlYklEQlNlcnZlcjo6U3VzcGVuc2lvbkNvbmRpdGlvbjo6
QWx3YXlzKTsKKyAgICBpZiAobV9zaG91bGRTdXNwZW5kKQorICAgICAgICByZXN1bHQtPnN1c3Bl
bmQoW10geyB9KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggZjA2ZGFkNDcyOWJkZmJlYTc1M2Zm
OGM5M2FhM2U3NWE5YWQ4OGIwMy4uYTE5ZmI5Yzc1ODY5ZjYwZDdhMGU0NzBjYTQ4NmMwNGIwM2Rl
ZTkwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
aApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkF1eGlsaWFyeVByb2Nlc3MuaCIKICNpbmNs
dWRlICJDYWNoZU1vZGVsLmgiCiAjaW5jbHVkZSAiQ2FsbGJhY2tJRC5oIgorI2luY2x1ZGUgIkRh
dGFiYXNlQXNzZXJ0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIKICNpbmNs
dWRlICJEb3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJMb2NhbFN0b3JhZ2VEYXRhYmFzZVRy
YWNrZXIuaCIKQEAgLTYxLDEwICs2Miw2IEBACiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotI2lu
Y2x1ZGUgIldlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5oIgotI2VuZGlmCi0KICNpZiBQTEFURk9S
TShDT0NPQSkKICNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KIHR5cGVkZWYgc3RydWN0IE9w
YXF1ZUNGSFRUUENvb2tpZVN0b3JhZ2UqICBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwpAQCAtNDg2
LDcgKzQ4Myw2IEBAIHByaXZhdGU6CiAgICAgUmVmPFdlYklEQlNlcnZlcj4gY3JlYXRlV2ViSURC
U2VydmVyKFBBTDo6U2Vzc2lvbklEKTsKICAgICB2b2lkIHNldFNlc3Npb25TdG9yYWdlUXVvdGFN
YW5hZ2VySURCUm9vdFBhdGgoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYgaWRiUm9vdFBh
dGgpOwogICAgIHZvaWQgcmVtb3ZlV2ViSURCU2VydmVySWZQb3NzaWJsZShQQUw6OlNlc3Npb25J
RCk7Ci0gICAgdm9pZCBzdXNwZW5kSURCU2VydmVycyhib29sIGlzU3VzcGVuc2lvbkltbWluZW50
KTsKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKICAgICB2b2lkIGRpZENyZWF0ZVdvcmtl
ckNvbnRleHRQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBJUEM6OkF0dGFjaG1lbnQmKTsKQEAgLTUw
MCwxMCArNDk2LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZFNlcnZpY2VXb3JrZXJTZXNzaW9u
KFBBTDo6U2Vzc2lvbklELCBib29sIHByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCwgU3Ry
aW5nJiYgc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRpcmVjdG9yeSwgY29uc3QgU2FuZGJveEV4
dGVuc2lvbjo6SGFuZGxlJik7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgdm9pZCBzZXRJc0hvbGRpbmdMb2NrZWRGaWxlcyhib29sKTsKLSNlbmRpZgotCiAgICAgdm9p
ZCBmaXJlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUaW1lckltbWVkaWF0ZWx5KFBBTDo6U2Vzc2lv
bklEKTsKIAogICAgIGNsYXNzIFNlc3Npb25TdG9yYWdlUXVvdGFNYW5hZ2VyIHsKQEAgLTU3Nywx
NSArNTY5LDEyIEBAIHByaXZhdGU6CiAgICAgTmV0d29ya0NvbnRlbnRSdWxlTGlzdE1hbmFnZXIg
bV9uZXR3b3JrQ29udGVudFJ1bGVMaXN0TWFuYWdlcjsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKLSAgICBXZWJTUUxpdGVEYXRhYmFzZVRyYWNrZXIgbV93ZWJTUUxpdGVEYXRh
YmFzZVRyYWNrZXI7Ci0gICAgUmVmUHRyPFByb2Nlc3NBc3NlcnRpb24+IG1faG9sZGluZ0xvY2tl
ZEZpbGVBc3NlcnRpb247Ci0jZW5kaWYKKyAgICBEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIgbV9k
YXRhYmFzZUFzc2VydGlvbk1hbmFnZXI7CisgICAgYm9vbCBtX3Nob3VsZFN1c3BlbmQgeyBmYWxz
ZSB9OworICAgIHVpbnQ2NF90IG1fc3VzcGVuc2lvbklkZW50aWZpZXIgeyAwIH07CiAKICAgICBI
YXNoTWFwPFBBTDo6U2Vzc2lvbklELCBTdHJpbmc+IG1faWRiRGF0YWJhc2VQYXRoczsKICAgICBI
YXNoTWFwPFBBTDo6U2Vzc2lvbklELCBSZWZQdHI8V2ViSURCU2VydmVyPj4gbV93ZWJJREJTZXJ2
ZXJzOwotICAgIGJvb2wgbV9zaG91bGRTdXNwZW5kSURCU2VydmVycyB7IGZhbHNlIH07Ci0gICAg
dWludDY0X3QgbV9zdXNwZW5zaW9uSWRlbnRpZmllciB7IDAgfTsKICAgICAKICNpZiBFTkFCTEUo
U0VSVklDRV9XT1JLRVIpCiAgICAgc3RydWN0IFNlcnZpY2VXb3JrZXJJbmZvIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvaW9zL05ldHdvcmtQcm9jZXNzSU9TLm1t
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0K
aW5kZXggYTFlMDkxNDJiOGIzYTM0YTI3MGYzYmY1MGY5NjBhMTZkZTcxNTc5Yy4uNWQwMDEwZTAy
YjI0MDFlODRmNDU1NDc4OTJhMTY5MzA0NDkzNTMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9pb3MvTmV0d29ya1Byb2Nlc3NJT1MubW0KQEAgLTEwMCwzMiAr
MTAwLDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6Y2xlYXJTZXJ2aWNlV29ya2VyRW50aXRsZW1l
bnRPdmVycmlkZShDb21wbGV0aW9uSGFuZGxlcjx2b2kKIAogI2VuZGlmIC8vICFQTEFURk9STShN
QUNDQVRBTFlTVCkKIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0SXNIb2xkaW5nTG9ja2VkRmls
ZXMoYm9vbCBpc0hvbGRpbmdMb2NrZWRGaWxlcykKLXsKLSAgICBpZiAoIWlzSG9sZGluZ0xvY2tl
ZEZpbGVzKSB7Ci0gICAgICAgIG1faG9sZGluZ0xvY2tlZEZpbGVBc3NlcnRpb24gPSBudWxscHRy
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG1faG9sZGluZ0xvY2tlZEZpbGVB
c3NlcnRpb24gJiYgbV9ob2xkaW5nTG9ja2VkRmlsZUFzc2VydGlvbi0+aXNWYWxpZCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICAvLyBXZSBzeW5jaHJvbm91c2x5IHRha2UgYSBwcm9jZXNzIGFz
c2VydGlvbiB3aGVuIGJlZ2lubmluZyBhIFNRTGl0ZSB0cmFuc2FjdGlvbiBzbyB0aGF0IHdlIGRv
bid0IGdldCBzdXNwZW5kZWQKLSAgICAvLyB3aGlsZSBob2xkaW5nIGEgbG9ja2VkIGZpbGUuIFdl
IHdvdWxkIGdldCBraWxsZWQgaWYgc3VzcGVuZGVkIHdoaWxlIGhvbGRpbmcgbG9ja2VkIGZpbGVz
LgotICAgIG1faG9sZGluZ0xvY2tlZEZpbGVBc3NlcnRpb24gPSBQcm9jZXNzQXNzZXJ0aW9uOjpj
cmVhdGUoZ2V0Q3VycmVudFByb2Nlc3NJRCgpLCAiTmV0d29yayBQcm9jZXNzIGlzIGhvbGRpbmcg
bG9ja2VkIGZpbGVzIl9zLCBQcm9jZXNzQXNzZXJ0aW9uVHlwZTo6RmluaXNoVGFza0ludGVycnVw
dGFibGUsIFByb2Nlc3NBc3NlcnRpb246Ok1vZGU6OlN5bmMpOwotICAgIG1faG9sZGluZ0xvY2tl
ZEZpbGVBc3NlcnRpb24tPnNldFByZXBhcmVGb3JJbnZhbGlkYXRpb25IYW5kbGVyKFt0aGlzLCB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgQVNTRVJU
KGlzTWFpblJ1bkxvb3AoKSk7Ci0gICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgaWYgKCFtX3Nob3VsZFN1c3BlbmRJREJTZXJ2ZXJzKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIGZvciAoYXV0byYgc2VydmVyIDogbV93ZWJJREJTZXJ2
ZXJzLnZhbHVlcygpKQotICAgICAgICAgICAgc2VydmVyLT5zdXNwZW5kKCk7Ci0gICAgfSk7Ci19
Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlM
WSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RhdGFiYXNlQXNzZXJ0aW9uTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmU1N2EwODg2ODEzYWFiNmFlZTJhOWE0YzI5Y2JjZGY2MmZhNzg1Y2QK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9EYXRhYmFzZUFzc2VydGlv
bk1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkRhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlci5oIgorCisjaW5jbHVk
ZSAiUHJvY2Vzc0Fzc2VydGlvbi5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlRGF0YWJhc2Uu
aD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
RGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyOjpEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIoY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBGdW5jdGlvbjxib29sKCk+JiYgc2hvdWxkU3VzcGVuZENoZWNr
ZXIpCisgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAsIG1fc2hvdWxkU3VzcGVu
ZENoZWNrZXIoV1RGTW92ZShzaG91bGRTdXNwZW5kQ2hlY2tlcikpCit7CisgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKKyAgICBXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6OnNldEltcGwo
dGhpcyk7Cit9CisKK0RhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlcjo6fkRhdGFiYXNlQXNzZXJ0aW9u
TWFuYWdlcigpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBXZWJDb3Jl
OjpTUUxpdGVMb2NrU2NvcGU6OnNldEltcGwobnVsbHB0cik7Cit9CisKK3ZvaWQgRGF0YWJhc2VB
c3NlcnRpb25NYW5hZ2VyOjpzY29wZUJlZ2lucygpCit7CisgICAgaWYgKG1fYXNzZXJ0aW9uICYm
IG1fYXNzZXJ0aW9uLT5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYXNzZXJ0
aW9uID0gUHJvY2Vzc0Fzc2VydGlvbjo6Y3JlYXRlKGdldEN1cnJlbnRQcm9jZXNzSUQoKSwgbV9p
ZGVudGlmaWVyLCBQcm9jZXNzQXNzZXJ0aW9uVHlwZTo6RmluaXNoVGFza0ludGVycnVwdGFibGUs
IFByb2Nlc3NBc3NlcnRpb246Ok1vZGU6OlN5bmMpOworICAgIG1fYXNzZXJ0aW9uLT5zZXRQcmVw
YXJlRm9ySW52YWxpZGF0aW9uSGFuZGxlcihbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisK
KyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBp
ZiAobV9zaG91bGRTdXNwZW5kQ2hlY2tlcigpKQorICAgICAgICAgICAgc3VzcGVuZCgpOworICAg
IH0pOworfQorCit2b2lkIERhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlcjo6c2NvcGVFbmRzKCkKK3sK
KyAgICBpZiAoaXNBbnlEYXRhYmFzZUxvY2tlZCgpKQorICAgICAgICByZXR1cm47CisgICAgCisg
ICAgaWYgKG1fYXNzZXJ0aW9uUmVsZWFzZVNjaGVkdWxlZCkgeworICAgICAgICBtX3Nob3VsZERl
bGF5QXNzZXJ0aW9uUmVsZWFzZSA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBzY2hlZHVsZUFzc2VydGlvblJlbGVhc2UoKTsKK30KKworYm9vbCBEYXRhYmFzZUFzc2VydGlv
bk1hbmFnZXI6OmlzQW55RGF0YWJhc2VMb2NrZWQoKSBjb25zdAoreworICAgIHJldHVybiBXVEY6
OmFueU9mKG1fZGF0YWJhc2VzLCBbJl0oYXV0byYgZGF0YWJhc2UpIHsKKyAgICAgICAgcmV0dXJu
ICFkYXRhYmFzZS5pc0F1dG9Db21taXRPbigpOworICAgIH0pOworfQorCit2b2lkIERhdGFiYXNl
QXNzZXJ0aW9uTWFuYWdlcjo6c2NoZWR1bGVBc3NlcnRpb25SZWxlYXNlKCkKK3sKKyAgICBtX2Fz
c2VydGlvblJlbGVhc2VTY2hlZHVsZWQgPSB0cnVlOworICAgIG1fc2hvdWxkRGVsYXlBc3NlcnRp
b25SZWxlYXNlID0gZmFsc2U7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoQWZ0ZXIoMV9z
LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIHsKKyAgICAgICAgaWYgKCF3
ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICByZWxlYXNlQXNzZXJ0aW9u
KCk7CisgICAgfSk7Cit9CisKK3ZvaWQgRGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyOjpyZWxlYXNl
QXNzZXJ0aW9uKCkKK3sKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworCisgICAgaWYg
KG1fc3VzcGVuZGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJDb3JlOjpTUUxpdGVMb2Nr
U2NvcGU6OmhvbGRMb2NrKCk7CisKKyAgICBtX2Fzc2VydGlvblJlbGVhc2VTY2hlZHVsZWQgPSBm
YWxzZTsKKyAgICBpZiAoaXNBbnlEYXRhYmFzZUxvY2tlZCgpKSB7CisgICAgICAgIFdlYkNvcmU6
OlNRTGl0ZUxvY2tTY29wZTo6cmVsZWFzZUxvY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIGlmIChtX3Nob3VsZERlbGF5QXNzZXJ0aW9uUmVsZWFzZSkKKyAgICAgICAgc2NoZWR1
bGVBc3NlcnRpb25SZWxlYXNlKCk7CisgICAgZWxzZQorICAgICAgICBtX2Fzc2VydGlvbiA9IG51
bGxwdHI7CisKKyAgICBXZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6OnJlbGVhc2VMb2NrKCk7Cit9
CisKK3ZvaWQgRGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyOjphZGREYXRhYmFzZShXZWJDb3JlOjpT
UUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UpCit7CisgICAgbV9kYXRhYmFzZXMuYWRkKCZkYXRhYmFz
ZSk7Cit9CisKK3ZvaWQgRGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyOjpyZW1vdmVEYXRhYmFzZShX
ZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UpCit7CisgICAgbV9kYXRhYmFzZXMucmVt
b3ZlKGRhdGFiYXNlKTsKK30KKwordm9pZCBEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXI6OnN1c3Bl
bmQoKQoreworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICBpZiAobV9zdXNw
ZW5kZWQpCisgICAgICAgIHJldHVybjsKKyAgICBtX3N1c3BlbmRlZCA9IHRydWU7CisKKyAgICBX
ZWJDb3JlOjpTUUxpdGVMb2NrU2NvcGU6OmhvbGRMb2NrKCk7CisgICAgZm9yIChhdXRvJiBkYXRh
YmFzZSA6IG1fZGF0YWJhc2VzKQorICAgICAgICBkYXRhYmFzZS5pbnRlcnJ1cHQoKTsKKworICAg
IG1fYXNzZXJ0aW9uID0gbnVsbHB0cjsKK30KKwordm9pZCBEYXRhYmFzZUFzc2VydGlvbk1hbmFn
ZXI6OnJlc3VtZSgpCit7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgIGlm
ICghbV9zdXNwZW5kZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYkNvcmU6OlNRTGl0ZUxv
Y2tTY29wZTo6cmVsZWFzZUxvY2soKTsKK30KKworfSAvLyBuYW1lcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlci5oIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvRGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzRhMWNhNzE4ZTc1NTMwZWE0YWIxMmU5MTk2MDRiYTlkYjdkOWZhNgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0RhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlci5oCkBA
IC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIldl
YkNvcmUvU1FMaXRlTG9ja1Njb3BlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBQ
cm9jZXNzQXNzZXJ0aW9uOworCitjbGFzcyBEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIgZmluYWwg
OiBwdWJsaWMgV2ViQ29yZTo6U1FMaXRlTG9ja1Njb3BlSW1wbCwgcHVibGljIENhbk1ha2VXZWFr
UHRyPERhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlciwgV2Vha1B0ckZhY3RvcnlJbml0aWFsaXphdGlv
bjo6RWFnZXI+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEYXRhYmFzZUFzc2VydGlvbk1h
bmFnZXIpCitwdWJsaWM6CisgICAgZXhwbGljaXQgRGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllciwgRnVuY3Rpb248Ym9vbCgpPiYmIHNob3VsZFN1c3BlbmRD
aGVja2VyKTsKKyAgICB+RGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyKCk7CisKKyAgICB2b2lkIHNj
b3BlQmVnaW5zKCkgZmluYWw7CisgICAgdm9pZCBzY29wZUVuZHMoKSBmaW5hbDsKKyAgICB2b2lk
IGFkZERhdGFiYXNlKFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlJikgZmluYWw7CisgICAgdm9pZCBy
ZW1vdmVEYXRhYmFzZShXZWJDb3JlOjpTUUxpdGVEYXRhYmFzZSYpIGZpbmFsOworCisgICAgdm9p
ZCBzdXNwZW5kKCk7CisgICAgdm9pZCByZXN1bWUoKTsKKworcHJpdmF0ZToKKyAgICBib29sIGlz
QW55RGF0YWJhc2VMb2NrZWQoKSBjb25zdDsKKyAgICB2b2lkIHNjaGVkdWxlQXNzZXJ0aW9uUmVs
ZWFzZSgpOworICAgIHZvaWQgcmVsZWFzZUFzc2VydGlvbigpOworCisgICAgU3RyaW5nIG1faWRl
bnRpZmllcjsKKyAgICBib29sIG1fYXNzZXJ0aW9uUmVsZWFzZVNjaGVkdWxlZCB7IGZhbHNlIH07
CisgICAgYm9vbCBtX3Nob3VsZERlbGF5QXNzZXJ0aW9uUmVsZWFzZSB7IGZhbHNlIH07CisgICAg
Ym9vbCBtX3N1c3BlbmRlZCB7IGZhbHNlIH07CisgICAgUmVmUHRyPFByb2Nlc3NBc3NlcnRpb24+
IG1fYXNzZXJ0aW9uOworICAgIFdlYWtIYXNoU2V0PFdlYkNvcmU6OlNRTGl0ZURhdGFiYXNlPiBt
X2RhdGFiYXNlczsKKyAgICBGdW5jdGlvbjxib29sKCk+IG1fc2hvdWxkU3VzcGVuZENoZWNrZXI7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIu
Y3BwCmluZGV4IGViZjcyMTI0MjNlOWNkNWUxN2E0Mjc1YjU5YWFiOGQxOThjNjk1YjguLjAzZTE5
OWUxMWJmMmEwODFkOTA0YzI2YWY5ZTg2Yzg4OTZiZTc0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVhZGVyL01lZGlhRm9y
bWF0UmVhZGVyLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVmlkZW9UcmFja1ByaXZhdGUu
aD4KICNpbmNsdWRlIDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgor
I2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgogI2luY2x1ZGUgPHd0Zi9Mb2dn
ZXJIZWxwZXIuaD4KICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dAppbmRleCAyOWY3ZmUwN2RiNjZiZGUzMGE3MTViNTlmNzFlNGYxM2JhNTUzMzgzLi5iMTk4
NTBiYTBjOTE5MzkxOTBkNzdiODhjZjc0MzQyMTJkMzExODc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0CkBAIC0xNDMsNiArMTQzLDcgQEAgU2hhcmVkL0FwcGxlUGF5L21hYy9XZWJQYXltZW50Q29v
cmRpbmF0b3JQcm94eU1hYy5tbQogCiBTaGFyZWQvQVBJV2ViQXJjaGl2ZS5tbQogU2hhcmVkL0FQ
SVdlYkFyY2hpdmVSZXNvdXJjZS5tbQorU2hhcmVkL0RhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlci5j
cHAKIFNoYXJlZC9Eb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tCiBTaGFyZWQvRm9jdXNlZEVsZW1l
bnRJbmZvcm1hdGlvbi5jcHAKIFNoYXJlZC9WaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggMjI0NjA2Y2M1ZTE1ZDE4MDhmNTU5MzIzNjE1OTkzNGQ5NzFiMmY5Yi4uN2FlNDQ1ZGM3MTJj
NjE3YmQ0ZGRjOTU1MzVhZmQxMTViYzY3ODFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zLDcgKzMsNyBAQAogCWFyY2hpdmVWZXJz
aW9uID0gMTsKIAljbGFzc2VzID0gewogCX07Ci0Jb2JqZWN0VmVyc2lvbiA9IDUyOworCW9iamVj
dFZlcnNpb24gPSA1NDsKIAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhBZ2dyZWdhdGVUYXJn
ZXQgc2VjdGlvbiAqLwpAQCAtMTUxMyw2ICsxNTEzLDcgQEAKIAkJOTNENkI3QjkyNTUzNEExNzAw
NThERDNBIC8qIFdLU3BlZWNoUmVjb2duaXRpb25QZXJtaXNzaW9uQ2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRDZCN0I3MjU1MzRBMTEw
MDU4REQzQSAvKiBXS1NwZWVjaFJlY29nbml0aW9uUGVybWlzc2lvbkNhbGxiYWNrLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNFNkE0RUUxQkM1
REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRTZBNEVEMUJDNUREMzkwMEY4QTBFNyAvKiBfV0tI
aXRUZXN0UmVzdWx0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOTNGNTQ5QjQxRTMxNzRCNzAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y1
NDlCMzFFMzE3NEI3MDAwRTcyMzkgLyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTkzRjlCNjE0MjZBNjI3
NjQwMDQxRjk2RiAvKiBEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjlCNjEzMjZBNjI3NEMwMDQxRjk2RiAv
KiBEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIuaCAqLzsgfTsKIAkJOTUwRjI4ODAyNTI0MTRFQTAw
Qjc0RjFDIC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUwRjI4N0UyNTI0MTRFOTAwQjc0RjFDIC8qIFdLTW91
c2VEZXZpY2VPYnNlcnZlci5oICovOyB9OwogCQk5NTkzNjc1RjI1MkU1RTMxMDBEM0YwQTAgLyog
V0tTdHlsdXNEZXZpY2VPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTU5MzY3NUQyNTJFNUUzMDAwRDNGMEEwIC8qIFdLU3R5bHVzRGV2aWNl
T2JzZXJ2ZXIuaCAqLzsgfTsKIAkJOTVDOTQzOTEyNTIzQzBEMDAwNTRGM0Q1IC8qIEJhc2VCb2Fy
ZFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVD
OTQzOTAyNTIzQzBEMDAwNTRGM0Q1IC8qIEJhc2VCb2FyZFNQSS5oICovOyB9OwpAQCAtNDk0Nyw2
ICs0OTQ4LDggQEAKIAkJOTNFNkE0RUQxQkM1REQzOTAwRjhBMEU3IC8qIF9XS0hpdFRlc3RSZXN1
bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSGl0VGVzdFJlc3VsdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y1NDlCMzFFMzE3NEI3MDAwRTcyMzkg
LyogV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTNGNTQ5QjUxRTMxNzREQTAwMEU3MjM5IC8qIFdLU25hcHNob3RDb25maWd1cmF0aW9u
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tTbmFwc2hvdENv
bmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkzRjlCNjEyMjZB
NjI3NEMwMDQxRjk2RiAvKiBEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTNGOUI2MTMyNkE2Mjc0QzAwNDFGOTZGIC8qIERhdGFiYXNlQXNzZXJ0aW9u
TWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRhYmFzZUFzc2VydGlvbk1hbmFnZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTUwRjI4N0UyNTI0MTRFOTAwQjc0RjFDIC8qIFdL
TW91c2VEZXZpY2VPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBX
S01vdXNlRGV2aWNlT2JzZXJ2ZXIuaDsgcGF0aCA9IGlvcy9XS01vdXNlRGV2aWNlT2JzZXJ2ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTUwRjI4N0YyNTI0MTRFQTAwQjc0RjFD
IC8qIFdLTW91c2VEZXZpY2VPYnNlcnZlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IFdLTW91c2VEZXZpY2VPYnNlcnZlci5tbTsgcGF0aCA9IGlvcy9XS01vdXNl
RGV2aWNlT2JzZXJ2ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1OTM2NzVE
MjUyRTVFMzAwMEQzRjBBMCAvKiBXS1N0eWx1c0RldmljZU9ic2VydmVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLU3R5bHVzRGV2aWNlT2JzZXJ2ZXIuaDsgcGF0aCA9IGlv
cy9XS1N0eWx1c0RldmljZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC01OTk4LDcgKzYwMDEsNiBAQAogCQlGNDBCQkI0MDI1N0ZGNDZFMDA2NzQ2M0EgLyogR1BVUHJv
Y2Vzc1dha2V1cE1lc3NhZ2VBcmd1bWVudHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR1BVUHJvY2Vzc1dh
a2V1cE1lc3NhZ2VBcmd1bWVudHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQw
RDFCNjgyMjBCREMwRjAwQjQ5QTAxIC8qIFdlYkF1dG9jb3JyZWN0aW9uQ29udGV4dC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBXZWJBdXRvY29ycmVjdGlvbkNvbnRleHQuaDsgcGF0aCA9IGlvcy9XZWJBdXRv
Y29ycmVjdGlvbkNvbnRleHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQxMDU2
NjEyMTMwNjk5QTAwOTIyODFEIC8qIEFQSUF0dGFjaG1lbnRDb2NvYS5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEFQSUF0dGFjaG1lbnRDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJRjQxNENFMkEyNjlEREVEMTAwQkQyMTZBIC8qIEdQVVByb2Nlc3NDb2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEdQVVByb2Nlc3NDb2NvYS5tbTsg
cGF0aCA9IGNvY29hL0dQVVByb2Nlc3NDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRjQxNENFMkMyNjlERTZFQTAwQkQyMTZBIC8qIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRT
dGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kU3RhdGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQyRDYzM0YyMkEwRUZEMzAwRDJGQjNBIC8qIFdl
YkF1dG9jb3JyZWN0aW9uRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBX
ZWJBdXRvY29ycmVjdGlvbkRhdGEuaDsgcGF0aCA9IGlvcy9XZWJBdXRvY29ycmVjdGlvbkRhdGEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQyRDYzNDAyMkEwRUZEMzAwRDJGQjNB
IC8qIFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IFdlYkF1dG9jb3JyZWN0aW9uRGF0YS5tbTsgcGF0aCA9IGlvcy9XZWJBdXRv
Y29ycmVjdGlvbkRhdGEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NzgyLDYg
KzY3ODQsOCBAQAogCQkJCTUxMDZEN0JGMThCREJFNzMwMDBBQjE2NiAvKiBDb250ZXh0TWVudUNv
bnRleHREYXRhLmNwcCAqLywKIAkJCQk1MTA2RDdDMDE4QkRCRTczMDAwQUIxNjYgLyogQ29udGV4
dE1lbnVDb250ZXh0RGF0YS5oICovLAogCQkJCTk5RjY0MkQyMUZBQkUzNzgwMDk2MjFFOSAvKiBD
b29yZGluYXRlU3lzdGVtLmggKi8sCisJCQkJOTNGOUI2MTIyNkE2Mjc0QzAwNDFGOTZGIC8qIERh
dGFiYXNlQXNzZXJ0aW9uTWFuYWdlci5jcHAgKi8sCisJCQkJOTNGOUI2MTMyNkE2Mjc0QzAwNDFG
OTZGIC8qIERhdGFiYXNlQXNzZXJ0aW9uTWFuYWdlci5oICovLAogCQkJCTk5MDM2QUU4MjNBOTcw
ODcwMDAwQjA2QSAvKiBEZWJ1Z2dhYmxlSW5mb0RhdGEuY3BwICovLAogCQkJCTk5MDM2QUU3MjNB
OTcwODcwMDAwQjA2QSAvKiBEZWJ1Z2dhYmxlSW5mb0RhdGEuaCAqLywKIAkJCQkwRjE4OUNBQjI0
NzQ5RjJGMDBFNThEODEgLyogRGlzcGxheUxpbmtPYnNlcnZlcklELmggKi8sCkBAIC0xMTcxMiwx
NCArMTE3MTYsNiBAQAogCQkJcGF0aCA9IGNhY2hlOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKIAkJfTsKLQkJRjQxNENFMjcyNjlEREU4MDAwQkQyMTZBIC8qIGNvY29hICovID0gewotCQkJ
aXNhID0gUEJYR3JvdXA7Ci0JCQljaGlsZHJlbiA9ICgKLQkJCQlGNDE0Q0UyQTI2OURERUQxMDBC
RDIxNkEgLyogR1BVUHJvY2Vzc0NvY29hLm1tICovLAotCQkJKTsKLQkJCW5hbWUgPSBjb2NvYTsK
LQkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7Ci0JCX07CiAJCUY2Mzg5NTVBMTMzQkY1N0QwMDg5
NDFENSAvKiBtYWMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApA
QCAtMTIwMjMsNiArMTIwMTksNyBAQAogCQkJCTU3NTk3RUJEMjE4MTg0OTAwMDM3RjkyNCAvKiBD
dGFwQXV0aGVudGljYXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTc1OTdFQjkyMTgxMUQ5QTAw
MzdGOTI0IC8qIEN0YXBIaWREcml2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3MERBQUNBMjMw
Mzg1RkQwMEU4RkMwNCAvKiBDdGFwTmZjRHJpdmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQk5M0Y5
QjYxNDI2QTYyNzY0MDA0MUY5NkYgLyogRGF0YWJhc2VBc3NlcnRpb25NYW5hZ2VyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDNTVGOTE3MTFDNTk2NzZFMDAyOUU5MkQgLyogRGF0YURldGVjdGlvblJl
c3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFDNzUzODAxODNCRTUwRjAwNzJDQjE1IC8qIERh
dGFSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5MDM2QUU5MjNBOTcwODcwMDAwQjA2
QSAvKiBEZWJ1Z2dhYmxlSW5mb0RhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKaW5kZXggZWVhMDAwNDRiYWZiZmJm
MzVjZWY4ODY2ODlmNDA5NTRhZDljNGYyNC4uYzg1ODllYTY0YTZiNGZmYTk4ZTY3NDIwZWFmZTk1
ZjIwZmIxNDkwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRy
YWNrZXIuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiU3RvcmFnZVRyYWNrZXJDbGll
bnQuaCIKICNpbmNsdWRlICJXZWJTdG9yYWdlTmFtZXNwYWNlUHJvdmlkZXIuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL1NRTGl0ZURhdGFiYXNlVHJhY2tlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU1FM
aXRlRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU1FMaXRlU3RhdGVtZW50Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vj
dXJpdHlPcmlnaW5EYXRhLmg+CkBAIC0zODUsMTMgKzM4Niw2IEBAIHZvaWQgU3RvcmFnZVRyYWNr
ZXI6OmRlbGV0ZUFsbE9yaWdpbnMoKQogICAgIH0pOwogfQogCi0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLXN0YXRpYyB2b2lkIHRydW5jYXRlRGF0YWJhc2VGaWxlKFNRTGl0ZURhdGFiYXNlJiBk
YXRhYmFzZSkKLXsKLSAgICBzcWxpdGUzX2ZpbGVfY29udHJvbChkYXRhYmFzZS5zcWxpdGUzSGFu
ZGxlKCksIDAsIFNRTElURV9UUlVOQ0FURV9EQVRBQkFTRSwgMCk7Ci19Ci0jZW5kaWYKLQogdm9p
ZCBTdG9yYWdlVHJhY2tlcjo6c3luY0RlbGV0ZUFsbE9yaWdpbnMoKQogewogICAgIEFTU0VSVCgh
aXNNYWluVGhyZWFkKCkpOwpAQCAtNDI5LDcgKzQyMyw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6
OnN5bmNEZWxldGVBbGxPcmlnaW5zKCkKIAogICAgIGlmIChtX2RhdGFiYXNlLmlzT3BlbigpKSB7
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAgICAgdHJ1bmNhdGVEYXRhYmFzZUZpbGUo
bV9kYXRhYmFzZSk7CisgICAgICAgIFNRTGl0ZUZpbGVTeXN0ZW06OnRydW5jYXRlRGF0YWJhc2VG
aWxlKG1fZGF0YWJhc2Uuc3FsaXRlM0hhbmRsZSgpKTsKICNlbmRpZgogICAgICAgICBtX2RhdGFi
YXNlLmNsb3NlKCk7CiAgICAgfQpAQCAtNTQzLDcgKzUzNyw3IEBAIHZvaWQgU3RvcmFnZVRyYWNr
ZXI6OnN5bmNEZWxldGVPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyKQogCiAg
ICAgaWYgKHNob3VsZERlbGV0ZVRyYWNrZXJGaWxlcykgewogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgICAgIHRydW5jYXRlRGF0YWJhc2VGaWxlKG1fZGF0YWJhc2UpOworICAgICAgICBT
UUxpdGVGaWxlU3lzdGVtOjp0cnVuY2F0ZURhdGFiYXNlRmlsZShtX2RhdGFiYXNlLnNxbGl0ZTNI
YW5kbGUoKSk7CiAjZW5kaWYKICAgICAgICAgbV9kYXRhYmFzZS5jbG9zZSgpOwogI2lmICFQTEFU
Rk9STShJT1NfRkFNSUxZKQo=
</data>
<flag name="commit-queue"
          id="456543"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>