<?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>121996</bug_id>
          
          <creation_ts>2013-09-26 16:47:37 -0700</creation_ts>
          <short_desc>IndexedDB IDL Refactoring</short_desc>
          <delta_ts>2013-09-30 09:02:58 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>alecflett</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jsbell</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philn</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>933779</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-09-26 16:47:37 -0700</bug_when>
    <thetext>IndexedDB IDL Refactoring

This includes:
1 - Leveraging EventTarget.idl inheritance
2 - Removing comments
3 - Reordering to match the spec&apos;s IDLs
4 - Removing nonstandard, WebKit-specific methods
5 - Updating interfaces to match the spec (versions are only uint64_t&apos;s now...)
6 - Updating implementation code as needed (versions are only uint64_t&apos;s now...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933780</commentid>
    <comment_count>1</comment_count>
      <attachid>212768</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-09-26 16:52:24 -0700</bug_when>
    <thetext>Created attachment 212768
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933865</commentid>
    <comment_count>2</comment_count>
      <attachid>212768</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-09-27 01:30:45 -0700</bug_when>
    <thetext>Comment on attachment 212768
Patch v1

Attachment 212768 did not pass gtk-ews (gtk):
Output: http://webkit-queues.appspot.com/results/2613105</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933876</commentid>
    <comment_count>3</comment_count>
      <attachid>212768</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-27 02:32:02 -0700</bug_when>
    <thetext>Comment on attachment 212768
Patch v1

Attachment 212768 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/2657088</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>933881</commentid>
    <comment_count>4</comment_count>
      <attachid>212768</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-27 03:17:18 -0700</bug_when>
    <thetext>Comment on attachment 212768
Patch v1

Attachment 212768 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/2649121</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934058</commentid>
    <comment_count>5</comment_count>
      <attachid>212835</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-09-27 13:29:00 -0700</bug_when>
    <thetext>Created attachment 212835
Patch v2 - Minimal fixes to keep leveldb building</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934060</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-27 13:30:15 -0700</bug_when>
    <thetext>Attachment 212835 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBCallbacks.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBCursor.idl&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBDatabase.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBDatabase.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBDatabase.idl&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBDatabaseCallbacks.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBDatabaseCallbacksImpl.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBDatabaseCallbacksImpl.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBFactory.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBFactory.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBFactory.idl&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBIndex.idl&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBKeyRange.idl&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBMetadata.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBObjectStore.idl&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBOpenDBRequest.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBOpenDBRequest.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBRequest.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBRequest.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBRequest.idl&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBTransaction.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBTransaction.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBTransaction.idl&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBVersionChangeEvent.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBVersionChangeEvent.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/IDBVersionChangeEvent.idl&apos;, u&apos;Source/WebCore/Modules/indexeddb/IndexedDB.h&apos;, u&apos;Source/WebCore/Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.cpp&apos;, u&apos;Source/WebCore/Modules/indexeddb/leveldb/IDBLevelDBCoding.cpp&apos;]&quot; exit_code: 1
Source/WebCore/ChangeLog:74:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/WebCore/ChangeLog:75:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 2 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934064</commentid>
    <comment_count>7</comment_count>
      <attachid>212835</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-27 13:37:28 -0700</bug_when>
    <thetext>Comment on attachment 212835
Patch v2 - Minimal fixes to keep leveldb building

Attachment 212835 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/2692065</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934065</commentid>
    <comment_count>8</comment_count>
      <attachid>212835</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-09-27 13:38:41 -0700</bug_when>
    <thetext>Comment on attachment 212835
Patch v2 - Minimal fixes to keep leveldb building

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

Nice!

&gt; Source/WebCore/Modules/indexeddb/IDBDatabaseCallbacksImpl.h:51
&gt; -    void connect(IDBDatabase*);
&gt; +    virtual void connect(IDBDatabase*);

Should this class be FINAL, and all virtual functions OVERRIDE? Not sure if the former implies the latter...

&gt; Source/WebCore/Modules/indexeddb/IDBFactory.cpp:118
&gt; +    IDB_TRACE(&quot;IDBFactory::open&quot;);

What&apos;s IDB_TRACE, and why is it not LOG()?

&gt; Source/WebCore/Modules/indexeddb/IndexedDB.h:53
&gt; +enum VersionNullness {

What&apos;s better, nullness or nullity?

Generally, having enums inside other headers results in including too much, and slowing down compilation, so we factor them out eventually. I don&apos;t know if that&apos;s a practical issue here.

&gt; Source/WebCore/Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.cpp:538
&gt; +    // If the magic negative value is retrieved from the database

Unfinished comment?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934074</commentid>
    <comment_count>9</comment_count>
      <attachid>212835</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-27 13:50:29 -0700</bug_when>
    <thetext>Comment on attachment 212835
Patch v2 - Minimal fixes to keep leveldb building

Attachment 212835 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/2660237</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934086</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-09-27 14:25:38 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 212835 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=212835&amp;action=review
&gt; 
&gt; Nice!
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBDatabaseCallbacksImpl.h:51
&gt; &gt; -    void connect(IDBDatabase*);
&gt; &gt; +    virtual void connect(IDBDatabase*);
&gt; 
&gt; Should this class be FINAL, and all virtual functions OVERRIDE? Not sure if the former implies the latter...

I think it can be.

&gt; &gt; Source/WebCore/Modules/indexeddb/IDBFactory.cpp:118
&gt; &gt; +    IDB_TRACE(&quot;IDBFactory::open&quot;);
&gt; 
&gt; What&apos;s IDB_TRACE, and why is it not LOG()?

I have no idea - long standing code from Google.  =/

&gt; &gt; Source/WebCore/Modules/indexeddb/IndexedDB.h:53
&gt; &gt; +enum VersionNullness {
&gt; 
&gt; What&apos;s better, nullness or nullity?

I waffled back and forth.  Not sure.

&gt; Generally, having enums inside other headers results in including too much, and slowing down compilation, so we factor them out eventually. I don&apos;t know if that&apos;s a practical issue here.

This one is legitimately needed from multiple compilation units *for now*

&gt; &gt; Source/WebCore/Modules/indexeddb/leveldb/IDBBackingStoreLevelDB.cpp:538
&gt; &gt; +    // If the magic negative value is retrieved from the database
&gt; 
&gt; Unfinished comment?

Yup!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934088</commentid>
    <comment_count>11</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-09-27 14:26:41 -0700</bug_when>
    <thetext>I&apos;ll make the requested changes from review, and give another crack at keeping the leveldb build going.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934108</commentid>
    <comment_count>12</comment_count>
      <attachid>212845</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-09-27 15:10:39 -0700</bug_when>
    <thetext>Created attachment 212845
Patch v3 - Give LevelDB ewses another shot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934110</commentid>
    <comment_count>13</comment_count>
      <attachid>212845</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-27 15:15:08 -0700</bug_when>
    <thetext>Comment on attachment 212845
Patch v3 - Give LevelDB ewses another shot

Attachment 212845 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/2654221</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934111</commentid>
    <comment_count>14</comment_count>
      <attachid>212845</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-27 15:15:28 -0700</bug_when>
    <thetext>Comment on attachment 212845
Patch v3 - Give LevelDB ewses another shot

Attachment 212845 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/2655237</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934118</commentid>
    <comment_count>15</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-09-27 15:46:46 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 212845 [details])
&gt; Attachment 212845 [details] did not pass efl-ews (efl):
&gt; Output: http://webkit-queues.appspot.com/results/2655237

I *think* I only botched the &lt;stdint.h&gt; include.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934119</commentid>
    <comment_count>16</comment_count>
      <attachid>212847</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-09-27 15:47:43 -0700</bug_when>
    <thetext>Created attachment 212847
Patch v4 - Now with more stdint.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934123</commentid>
    <comment_count>17</comment_count>
      <attachid>212847</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-27 15:54:45 -0700</bug_when>
    <thetext>Comment on attachment 212847
Patch v4 - Now with more stdint.h

Attachment 212847 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/2660273</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934126</commentid>
    <comment_count>18</comment_count>
      <attachid>212849</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-09-27 16:00:56 -0700</bug_when>
    <thetext>Created attachment 212849
Patch v5 - Now with more manual INT64_MAX</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934134</commentid>
    <comment_count>19</comment_count>
      <attachid>212849</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-09-27 16:16:18 -0700</bug_when>
    <thetext>Comment on attachment 212849
Patch v5 - Now with more manual INT64_MAX

Attachment 212849 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/2692103</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934137</commentid>
    <comment_count>20</comment_count>
      <attachid>212851</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-09-27 16:21:14 -0700</bug_when>
    <thetext>Created attachment 212851
Patch v6 - Glad their EWS is fast</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934145</commentid>
    <comment_count>21</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-09-27 16:44:26 -0700</bug_when>
    <thetext>Sweet, EWS build is happy.  I&apos;ll assume that&apos;s good for the other leveldb builds also.

Landed in http://trac.webkit.org/changeset/156590</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934367</commentid>
    <comment_count>22</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-09-29 10:26:04 -0700</bug_when>
    <thetext>This regressed pretty badly on the GTK port where the IDB tests are run.
I understand this is a work in progress so I&apos;ll skip the tests until you enable them on the Mac port.

I&apos;ll point out two crash-inducing problems, but there are other problems as well that make most of the tests timing out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934368</commentid>
    <comment_count>23</comment_count>
      <attachid>212851</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-09-29 10:31:24 -0700</bug_when>
    <thetext>Comment on attachment 212851
Patch v6 - Glad their EWS is fast

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

&gt; Source/WebCore/Modules/indexeddb/IDBDatabase.idl:32
&gt; +] interface IDBDatabase : EventTarget {

The JSGenerateToNativeObject and JSGenerateToJSObject attributes are required on the interface so the proper wrapper and unwrapper functions are generated that are then used in WebCore::toJS(ExecState*, JSDOMGlobalObject*, EventTarget*). If not generated, the EventTarget wrapper/unwrapper function is called recursively, which ends in a crash.

&gt; Source/WebCore/Modules/indexeddb/IDBFactory.cpp:119
&gt; +    return openInternal(context, name, 0, IndexedDB::NullVersion, ec);

IDBDatabaseMetadata::NoIntVersion should be passed into openInternal() here instead of 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934376</commentid>
    <comment_count>24</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-09-29 12:43:06 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 212851 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=212851&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/indexeddb/IDBDatabase.idl:32
&gt; &gt; +] interface IDBDatabase : EventTarget {
&gt; 
&gt; The JSGenerateToNativeObject and JSGenerateToJSObject attributes are required on the interface so the proper wrapper and unwrapper functions are generated that are then used in WebCore::toJS(ExecState*, JSDOMGlobalObject*, EventTarget*). If not generated, the EventTarget wrapper/unwrapper function is called recursively, which ends in a crash.

Inheriting from EventTarget is definitely the way to go forward.  Thanks for skipping for now, and I&apos;ll definitely get to it soon once we get to the point of enabling tests across the board.

This is tangential enough to the refactoring/new code I&apos;m working on that anybody with spare cycles is free to take a look in the meantime.

&gt; &gt; Source/WebCore/Modules/indexeddb/IDBFactory.cpp:119
&gt; &gt; +    return openInternal(context, name, 0, IndexedDB::NullVersion, ec);
&gt; 
&gt; IDBDatabaseMetadata::NoIntVersion should be passed into openInternal() here instead of 0.

That&apos;s not quite correct. The spec has changed and only int versions exist, and databases always start with a version of 0.  So while this line might currently be a bit wrong, the entire notion of having a string version is completely wrong.

The concept of the string version is so pervasive in the LevelDB implementation that I didn&apos;t try to get rid of it... but going forward somebody who lives on the LevelDB implementation will need to correctly factor out the string version altogether.  It has no place in the cross-platform bindings implementation at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934622</commentid>
    <comment_count>25</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2013-09-30 09:02:58 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; 
&gt; The concept of the string version is so pervasive in the LevelDB implementation that I didn&apos;t try to get rid of it... but going forward somebody who lives on the LevelDB implementation will need to correctly factor out the string version altogether.  It has no place in the cross-platform bindings implementation at all.

FYI, Chromium shipped IndexedDB with the older string-based versioning; once the spec changed the implementation needed to support both int and string versions so that web apps could migrate. Ports that didn&apos;t enable IDB before the change don&apos;t need this, so the string-versioning code can be nuked from WebKit.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212768</attachid>
            <date>2013-09-26 16:52:24 -0700</date>
            <delta_ts>2013-09-27 13:29:00 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>38030</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNGRiYjhhLi5hNDY5NmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNzgg
QEAKIDIwMTMtMDktMjYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAg
ICAgIEluZGV4ZWREQiBJREwgUmVmYWN0b3JpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE5OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGluY2x1ZGVzOgorICAgICAgICAxIC0gTGV2ZXJh
Z2luZyBFdmVudFRhcmdldC5pZGwgaW5oZXJpdGFuY2UKKyAgICAgICAgMiAtIFJlbW92aW5nIGNv
bW1lbnRzCisgICAgICAgIDMgLSBSZW9yZGVyaW5nIHRvIG1hdGNoIHRoZSBzcGVjJ3MgSURMcwor
ICAgICAgICA0IC0gUmVtb3Zpbmcgbm9uc3RhbmRhcmQsIFdlYktpdC1zcGVjaWZpYyBtZXRob2Rz
CisgICAgICAgIDUgLSBVcGRhdGluZyBpbnRlcmZhY2VzIHRvIG1hdGNoIHRoZSBzcGVjICh2ZXJz
aW9ucyBhcmUgb25seSB1aW50NjRfdCdzIG5vdy4uLikKKyAgICAgICAgNiAtIFVwZGF0aW5nIGlt
cGxlbWVudGF0aW9uIGNvZGUgYXMgbmVlZGVkICh2ZXJzaW9ucyBhcmUgb25seSB1aW50NjRfdCdz
IG5vdy4uLikKKworICAgICAgICBJREwgY2hhbmdlczoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3IuaWRsOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGw6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1
ZXN0LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5pZGw6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmlkbDoK
KworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oOiBBZGQgbmV3IGVudW0g
dG8gcmVwcmVzZW50IHZlcnNpb24gbnVsbG5lc3MuCisKKyAgICAgICAgQWRhcHQgdG8gbmV3IElE
THMsIGFuZCBhbHNvIHJlZmFjdG9yIHJlcHJlc2VudGF0aW9uIG9mIGluaXRpYWwsIG51bGwgdmVy
c2lvbmluZzoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDYWxsYmFja3MuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkNhbGxiYWNrczo6b25CbG9ja2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkNhbGxiYWNrczo6b25VcGdyYWRlTmVlZGVkKToKKworICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
Ojp2ZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpvblZlcnNpb25DaGFu
Z2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6CisKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrcy5oOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6Om9uVmVyc2lvbkNoYW5nZSk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmg6CisK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQkZhY3Rvcnk6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeTo6
b3BlbkludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6OmRlbGV0ZURhdGFi
YXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5Lmg6CisKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2VNZXRhZGF0YTo6SURCRGF0YWJhc2VNZXRhZGF0YSk6CisKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJS
ZXF1ZXN0OjpJREJPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJl
cXVlc3Q6Om9uQmxvY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0Ojpv
blVwZ3JhZGVOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJl
cXVlc3QuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaDoKKworICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlZlcnNpb25D
aGFuZ2VFdmVudDo6SURCVmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlZl
cnNpb25DaGFuZ2VFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlZlcnNpb25D
aGFuZ2VFdmVudDo6b2xkVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJWZXJzaW9uQ2hh
bmdlRXZlbnQ6Om5ld1ZlcnNpb24pOgorCisKKzIwMTMtMDktMjYgIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgorCiAgICAgICAgIE1hcmsgSURCRGF0YWJhc2UgIkZJTkFMIiBub3cg
dGhhdCBodHRwOi8vd2Via2l0Lm9yZy9iLzEyMTc0NyBpcyBmaXhlZC4KIAogICAgICAgICBSdWJi
ZXJzdGFtcGVkIGJ5IEFuZHJlYXMgS2xpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKaW5kZXggZGE3ZGUwNy4uOWRhYTNmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKQEAgLTY4LDkg
KzY4LDkgQEAgcHVibGljOgogICAgIC8vIEZyb20gSURCQ3Vyc29yLmFkdmFuY2UoKS9jb250aW51
ZSgpCiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8
UmVmUHRyPElEQktleT4gPiYga2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mIHBy
aW1hcnlLZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gPiYgdmFsdWVzKSA9
IDA7CiAgICAgLy8gRnJvbSBJREJGYWN0b3J5Lm9wZW4oKS9kZWxldGVEYXRhYmFzZSgpCi0gICAg
dmlydHVhbCB2b2lkIG9uQmxvY2tlZChpbnQ2NF90IC8qIGV4aXN0aW5nVmVyc2lvbiAqLykgeyBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQodWludDY0
X3QgLyogZXhpc3RpbmdWZXJzaW9uICovKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAg
Ly8gRnJvbSBJREJGYWN0b3J5Lm9wZW4oKQotICAgIHZpcnR1YWwgdm9pZCBvblVwZ3JhZGVOZWVk
ZWQoaW50NjRfdCAvKiBvbGRWZXJzaW9uICovLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZT4sIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmKSB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIG9uVXBncmFkZU5lZWRlZCh1aW50NjRfdCAvKiBv
bGRWZXJzaW9uICovLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4sIGNv
bnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAg
dmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVy
ZmFjZT4sIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29y
LmlkbAppbmRleCA5NTU0MDdhLi41MDQzZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5pZGwKQEAgLTI3LDExICsyNywxMCBAQAogICAgIENvbmRp
dGlvbmFsPUlOREVYRURfREFUQUJBU0UsCiAgICAgSlNOb1N0YXRpY1RhYmxlcwogXSBpbnRlcmZh
Y2UgSURCQ3Vyc29yIHsKLQorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJBbnkgc291cmNlOwog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgZGlyZWN0aW9uOwogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBhbnkga2V5OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkgcHJpbWFyeUtl
eTsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgSURCQW55IHNvdXJjZTsKIAogICAgIFtDYWxsV2l0
aD1TY3JpcHRTdGF0ZSwgUmFpc2VzRXhjZXB0aW9uXSBJREJSZXF1ZXN0IHVwZGF0ZShhbnkgdmFs
dWUpOwogICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgYWR2YW5jZShbRW5mb3JjZVJhbmdlXSB1
bnNpZ25lZCBsb25nIGNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCA4YzRlNTQ5Li44N2NhMTAxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCkBAIC0xMzEsMTIg
KzEzMSw5IEBAIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCRGF0YWJhc2U6Om9iamVjdFN0
b3JlTmFtZXMoKSBjb25zdAogICAgIHJldHVybiBvYmplY3RTdG9yZU5hbWVzLnJlbGVhc2UoKTsK
IH0KIAotUGFzc1JlZlB0cjxJREJBbnk+IElEQkRhdGFiYXNlOjp2ZXJzaW9uKCkgY29uc3QKK3Vp
bnQ2NF90IElEQkRhdGFiYXNlOjp2ZXJzaW9uKCkgY29uc3QKIHsKLSAgICBpbnQ2NF90IGludFZl
cnNpb24gPSBtX21ldGFkYXRhLmludFZlcnNpb247Ci0gICAgaWYgKGludFZlcnNpb24gPT0gSURC
RGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKQotICAgICAgICByZXR1cm4gSURCQW55Ojpj
cmVhdGVTdHJpbmcobV9tZXRhZGF0YS52ZXJzaW9uKTsKLSAgICByZXR1cm4gSURCQW55OjpjcmVh
dGUoaW50VmVyc2lvbik7CisgICAgcmV0dXJuIG1fbWV0YWRhdGEudmVyc2lvbjsKIH0KIAogUGFz
c1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29k
ZSYgZWMpCkBAIC0zMDMsNyArMzAwLDcgQEAgdm9pZCBJREJEYXRhYmFzZTo6Y2xvc2VDb25uZWN0
aW9uKCkKICAgICB9CiB9CiAKLXZvaWQgSURCRGF0YWJhc2U6Om9uVmVyc2lvbkNoYW5nZShpbnQ2
NF90IG9sZFZlcnNpb24sIGludDY0X3QgbmV3VmVyc2lvbikKK3ZvaWQgSURCRGF0YWJhc2U6Om9u
VmVyc2lvbkNoYW5nZSh1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uLCBJ
bmRleGVkREI6OlZlcnNpb25OdWxsbmVzcyBuZXdWZXJzaW9uTnVsbG5lc3MpCiB7CiAgICAgSURC
X1RSQUNFKCJJREJEYXRhYmFzZTo6b25WZXJzaW9uQ2hhbmdlIik7CiAgICAgaWYgKG1fY29udGV4
dFN0b3BwZWQgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKQEAgLTMxMiw4ICszMDksNyBA
QCB2b2lkIElEQkRhdGFiYXNlOjpvblZlcnNpb25DaGFuZ2UoaW50NjRfdCBvbGRWZXJzaW9uLCBp
bnQ2NF90IG5ld1ZlcnNpb24pCiAgICAgaWYgKG1fY2xvc2VQZW5kaW5nKQogICAgICAgICByZXR1
cm47CiAKLSAgICBSZWZQdHI8SURCQW55PiBuZXdWZXJzaW9uQW55ID0gbmV3VmVyc2lvbiA9PSBJ
REJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24gPyBJREJBbnk6OmNyZWF0ZU51bGwoKSA6
IElEQkFueTo6Y3JlYXRlKG5ld1ZlcnNpb24pOwotICAgIGVucXVldWVFdmVudChJREJWZXJzaW9u
Q2hhbmdlRXZlbnQ6OmNyZWF0ZShJREJBbnk6OmNyZWF0ZShvbGRWZXJzaW9uKSwgbmV3VmVyc2lv
bkFueS5yZWxlYXNlKCksIGV2ZW50TmFtZXMoKS52ZXJzaW9uY2hhbmdlRXZlbnQpKTsKKyAgICBl
bnF1ZXVlRXZlbnQoSURCVmVyc2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUob2xkVmVyc2lvbiwgbmV3
VmVyc2lvbiwgbmV3VmVyc2lvbk51bGxuZXNzKSk7CiB9CiAKIHZvaWQgSURCRGF0YWJhc2U6OmVu
cXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCmluZGV4IDJhNDZlNDYuLjkwMjUzMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaApAQCAt
NjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElETAogICAgIGNv
bnN0IFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5uYW1lOyB9Ci0gICAg
UGFzc1JlZlB0cjxJREJBbnk+IHZlcnNpb24oKSBjb25zdDsKKyAgICB1aW50NjRfdCB2ZXJzaW9u
KCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVz
KCkgY29uc3Q7CiAKICAgICBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBjcmVhdGVPYmplY3RT
dG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IERpY3Rpb25hcnkmLCBFeGNlcHRpb25Db2Rl
Jik7CkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5U
X0xJU1RFTkVSKHZlcnNpb25jaGFuZ2UpOwogCiAgICAgLy8gSURCRGF0YWJhc2VDYWxsYmFja3MK
LSAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGludDY0X3Qgb2xkVmVyc2lvbiwgaW50
NjRfdCBuZXdWZXJzaW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKHVpbnQ2
NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNpb24sIEluZGV4ZWREQjo6VmVyc2lvbk51
bGxuZXNzIG5ld1ZlcnNpb25OdWxsbmVzcyk7CiAgICAgdmlydHVhbCB2b2lkIG9uQWJvcnQoaW50
NjRfdCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik7CiAgICAgdmlydHVhbCB2b2lkIG9u
Q29tcGxldGUoaW50NjRfdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlLmlkbAppbmRleCAyYzVjYzg2Li5kNjAzOGYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaWRsCkBAIC0yOSwzMCAr
MjksMjAgQEAKICAgICBBY3RpdmVET01PYmplY3QsCiAgICAgRXZlbnRUYXJnZXQsCiAgICAgSlNO
b1N0YXRpY1RhYmxlcwotXSBpbnRlcmZhY2UgSURCRGF0YWJhc2UgeworXSBpbnRlcmZhY2UgSURC
RGF0YWJhc2UgOiBFdmVudFRhcmdldCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyBuYW1lOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJBbnkgdmVyc2lvbjsKKyAgICByZWFk
b25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsb25nIHZlcnNpb247CiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZ0xpc3Qgb2JqZWN0U3RvcmVOYW1lczsKIAotICAgIGF0dHJpYnV0
ZSBFdmVudExpc3RlbmVyIG9uYWJvcnQ7Ci0gICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25l
cnJvcjsKLSAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnZlcnNpb25jaGFuZ2U7Ci0KICAg
ICBbQ3VzdG9tLCBSYWlzZXNFeGNlcHRpb25dIElEQk9iamVjdFN0b3JlIGNyZWF0ZU9iamVjdFN0
b3JlKERPTVN0cmluZyBuYW1lLCBvcHRpb25hbCBEaWN0aW9uYXJ5IG9wdGlvbnMpOwogICAgIFtS
YWlzZXNFeGNlcHRpb25dIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoRE9NU3RyaW5nIG5hbWUpOwot
ICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIElE
QlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3Qgc3RvcmVOYW1lcywgW0RlZmF1
bHQ9TnVsbFN0cmluZ10gb3B0aW9uYWwgRE9NU3RyaW5nIG1vZGUpOwotICAgIFtDYWxsV2l0aD1T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIElEQlRyYW5zYWN0aW9uIHRy
YW5zYWN0aW9uKHNlcXVlbmNlPERPTVN0cmluZz4gc3RvcmVOYW1lcywgW0RlZmF1bHQ9TnVsbFN0
cmluZ10gb3B0aW9uYWwgRE9NU3RyaW5nIG1vZGUpOwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIElEQlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9u
KERPTVN0cmluZyBzdG9yZU5hbWUsIFtEZWZhdWx0PU51bGxTdHJpbmddIG9wdGlvbmFsIERPTVN0
cmluZyBtb2RlKTsKLQorICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlz
ZXNFeGNlcHRpb25dIElEQlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKHNlcXVlbmNlPERPTVN0cmlu
Zz4gc3RvcmVOYW1lcywgW0RlZmF1bHQ9TnVsbFN0cmluZ10gb3B0aW9uYWwgRE9NU3RyaW5nIG1v
ZGUpOwogICAgIHZvaWQgY2xvc2UoKTsKIAotICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQot
ICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihET01TdHJpbmcgdHlwZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3B0aW9uYWwgYm9vbGVhbiB1c2VDYXB0dXJlKTsKLSAgICB2b2lkIHJlbW92ZUV2ZW50
TGlzdGVuZXIoRE9NU3RyaW5nIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2
ZW50TGlzdGVuZXIgbGlzdGVuZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlv
bmFsIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gYm9vbGVhbiBk
aXNwYXRjaEV2ZW50KEV2ZW50IGV2dCk7CisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25h
Ym9ydDsKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVycm9yOworICAgIGF0dHJpYnV0
ZSBFdmVudExpc3RlbmVyIG9udmVyc2lvbmNoYW5nZTsKKwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3MuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmgKaW5k
ZXggZmMyNDJlMC4uNzc3MGFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrcy5oCkBAIC0yOSwyMCArMjksMjUgQEAK
ICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJy
b3IuaCIKKyNpbmNsdWRlICJJbmRleGVkREIuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2NsYXNzIElEQkRhdGFiYXNlOworCiBjbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrcyA6IHB1
YmxpYyBSZWZDb3VudGVkPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB+SURCRGF0YWJhc2VDYWxsYmFja3MoKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBvbkZv
cmNlZENsb3NlKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoaW50NjRf
dCBvbGRWZXJzaW9uLCBpbnQ2NF90IG5ld1ZlcnNpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
b25WZXJzaW9uQ2hhbmdlKHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNpb24s
IEluZGV4ZWREQjo6VmVyc2lvbk51bGxuZXNzIG5ld1ZlcnNpb25OdWxsbmVzcykgPSAwOwogCiAg
ICAgdmlydHVhbCB2b2lkIG9uQWJvcnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlRXJyb3I+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uQ29tcGxldGUoaW50
NjRfdCB0cmFuc2FjdGlvbklkKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChJREJE
YXRhYmFzZSopID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxi
YWNrc0ltcGwuY3BwCmluZGV4IDQyYWY3YTIuLjU4N2M0YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJ
bXBsLmNwcApAQCAtNTIsMTAgKzUyLDEwIEBAIHZvaWQgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBs
OjpvbkZvcmNlZENsb3NlKCkKICAgICAgICAgbV9kYXRhYmFzZS0+Zm9yY2VDbG9zZSgpOwogfQog
Ci12b2lkIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6b25WZXJzaW9uQ2hhbmdlKGludDY0X3Qg
b2xkVmVyc2lvbiwgaW50NjRfdCBuZXdWZXJzaW9uKQordm9pZCBJREJEYXRhYmFzZUNhbGxiYWNr
c0ltcGw6Om9uVmVyc2lvbkNoYW5nZSh1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdW
ZXJzaW9uLCBJbmRleGVkREI6OlZlcnNpb25OdWxsbmVzcyBuZXdWZXJzaW9uTnVsbG5lc3MpCiB7
CiAgICAgaWYgKG1fZGF0YWJhc2UpCi0gICAgICAgIG1fZGF0YWJhc2UtPm9uVmVyc2lvbkNoYW5n
ZShvbGRWZXJzaW9uLCBuZXdWZXJzaW9uKTsKKyAgICAgICAgbV9kYXRhYmFzZS0+b25WZXJzaW9u
Q2hhbmdlKG9sZFZlcnNpb24sIG5ld1ZlcnNpb24sIG5ld1ZlcnNpb25OdWxsbmVzcyk7CiB9CiAK
IHZvaWQgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpjb25uZWN0KElEQkRhdGFiYXNlKiBkYXRh
YmFzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlQ2FsbGJhY2tzSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKaW5kZXggNWE3OGIzNy4uMDgwMDUyYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsLmgKQEAgLTQzLDEyICs0MywxMiBAQCBwdWJsaWM6CiAKICAgICAvLyBJ
REJEYXRhYmFzZUNhbGxiYWNrcwogICAgIHZpcnR1YWwgdm9pZCBvbkZvcmNlZENsb3NlKCk7Ci0g
ICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShpbnQ2NF90IG9sZFZlcnNpb24sIGludDY0
X3QgbmV3VmVyc2lvbik7CisgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZSh1aW50NjRf
dCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uLCBJbmRleGVkREI6OlZlcnNpb25OdWxs
bmVzcyBuZXdWZXJzaW9uTnVsbG5lc3MpOwogCiAgICAgdmlydHVhbCB2b2lkIG9uQWJvcnQoaW50
NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KTsKICAgICB2
aXJ0dWFsIHZvaWQgb25Db21wbGV0ZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQpOwogCi0gICAgdm9p
ZCBjb25uZWN0KElEQkRhdGFiYXNlKik7CisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoSURCRGF0
YWJhc2UqKTsKIAogcHJpdmF0ZToKICAgICBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKaW5kZXgg
ZWE4MjAwNy4uYzRmYjBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeS5jcHAKQEAgLTExMyw2ICsxMTMsMTIgQEAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJGYWN0b3J5OjpnZXREYXRhYmFzZU5hbWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnQKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAorUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1
ZXN0PiBJREJGYWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgSURCX1RSQUNFKCJJ
REJGYWN0b3J5OjpvcGVuIik7CisgICAgcmV0dXJuIG9wZW5JbnRlcm5hbChjb250ZXh0LCBuYW1l
LCAwLCBJbmRleGVkREI6Ok51bGxWZXJzaW9uLCBlYyk7Cit9CisKIFBhc3NSZWZQdHI8SURCT3Bl
bkRCUmVxdWVzdD4gSURCRmFjdG9yeTo6b3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyB2ZXJzaW9uLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQkZhY3Rvcnk6Om9wZW4iKTsKQEAg
LTEyMCwxMyArMTI2LDEzIEBAIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURCRmFjdG9y
eTo6b3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjCiAgICAgICAgIGVjID0g
VHlwZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgcmV0dXJuIG9wZW5JbnRl
cm5hbChjb250ZXh0LCBuYW1lLCB2ZXJzaW9uLCBlYyk7CisgICAgcmV0dXJuIG9wZW5JbnRlcm5h
bChjb250ZXh0LCBuYW1lLCB2ZXJzaW9uLCBJbmRleGVkREI6Ok5vbk51bGxWZXJzaW9uLCBlYyk7
CiB9CiAKLVBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURCRmFjdG9yeTo6b3BlbkludGVy
bmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
aW50NjRfdCB2ZXJzaW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCT3BlbkRC
UmVxdWVzdD4gSURCRmFjdG9yeTo6b3BlbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgdWludDY0X3QgdmVyc2lvbiwgSW5kZXhlZERC
OjpWZXJzaW9uTnVsbG5lc3MgdmVyc2lvbk51bGxuZXNzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlvbigiV2ViQ29yZS5JbmRl
eGVkREIuRnJvbnRFbmRBUElDYWxscyIsIElEQk9wZW5DYWxsLCBJREJNZXRob2RzTWF4KTsKLSAg
ICBBU1NFUlQodmVyc2lvbiA+PSAxIHx8IHZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6
Tm9JbnRWZXJzaW9uKTsKKyAgICBBU1NFUlQodmVyc2lvbiA+PSAxIHx8IHZlcnNpb25OdWxsbmVz
cyA9PSBJbmRleGVkREI6Ok51bGxWZXJzaW9uKTsKICAgICBpZiAobmFtZS5pc051bGwoKSkgewog
ICAgICAgICBlYyA9IFR5cGVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMzgsMTkgKzE0
NCwxMyBAQCBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9wZW5JbnRl
cm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjbwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKLSAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBkYXRhYmFzZUNhbGxiYWNr
cyA9IElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcyA9IElEQkRhdGFiYXNlQ2FsbGJhY2tz
SW1wbDo6Y3JlYXRlKCk7CiAgICAgaW50NjRfdCB0cmFuc2FjdGlvbklkID0gSURCRGF0YWJhc2U6
Om5leHRUcmFuc2FjdGlvbklkKCk7Ci0gICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IHJlcXVl
c3QgPSBJREJPcGVuREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgZGF0YWJhc2VDYWxsYmFja3Ms
IHRyYW5zYWN0aW9uSWQsIHZlcnNpb24pOworICAgIFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBy
ZXF1ZXN0ID0gSURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIGRhdGFiYXNlQ2FsbGJh
Y2tzLCB0cmFuc2FjdGlvbklkLCB2ZXJzaW9uLCB2ZXJzaW9uTnVsbG5lc3MpOwogICAgIG1fYmFj
a2VuZC0+b3BlbihuYW1lLCB2ZXJzaW9uLCB0cmFuc2FjdGlvbklkLCByZXF1ZXN0LCBkYXRhYmFz
ZUNhbGxiYWNrcywgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgY29udGV4dCwgZ2V0SW5kZXhl
ZERCRGF0YWJhc2VQYXRoKGNvbnRleHQpKTsKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAotUGFz
c1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJGYWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMp
Ci17Ci0gICAgSURCX1RSQUNFKCJJREJGYWN0b3J5OjpvcGVuIik7Ci0gICAgcmV0dXJuIG9wZW5J
bnRlcm5hbChjb250ZXh0LCBuYW1lLCBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24s
IGVjKTsKLX0KLQogUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJGYWN0b3J5OjpkZWxl
dGVEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCRmFjdG9yeTo6
ZGVsZXRlRGF0YWJhc2UiKTsKQEAgLTE2Niw3ICsxNjYsNyBAQCBQYXNzUmVmUHRyPElEQk9wZW5E
QlJlcXVlc3Q+IElEQkZhY3Rvcnk6OmRlbGV0ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFJlZlB0cjxJREJPcGVuREJSZXF1
ZXN0PiByZXF1ZXN0ID0gSURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIDAsIDAsIElE
QkRhdGFiYXNlTWV0YWRhdGE6OkRlZmF1bHRJbnRWZXJzaW9uKTsKKyAgICBSZWZQdHI8SURCT3Bl
bkRCUmVxdWVzdD4gcmVxdWVzdCA9IElEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCAw
LCAwLCAwLCBJbmRleGVkREI6Ok51bGxWZXJzaW9uKTsKICAgICBtX2JhY2tlbmQtPmRlbGV0ZURh
dGFiYXNlKG5hbWUsIHJlcXVlc3QsIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIGNvbnRleHQs
IGdldEluZGV4ZWREQkRhdGFiYXNlUGF0aChjb250ZXh0KSk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0
b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmgKaW5k
ZXggNDFlMjM4NS4uOTA2NWQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnkuaApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IElEQkZhY3RvcnkoSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UqKTsKIAotICAgIFBhc3NSZWZQ
dHI8SURCT3BlbkRCUmVxdWVzdD4gb3BlbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gb3BlbkludGVybmFsKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIHVpbnQ2NF90IHZlcnNpb24sIEluZGV4
ZWREQjo6VmVyc2lvbk51bGxuZXNzLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBSZWZQdHI8SURC
RmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U+IG1fYmFja2VuZDsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaWRsCmluZGV4IDkwMTY4YTUuLjg5NmQ2
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rv
cnkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rvcnku
aWRsCkBAIC0yOCwxMSArMjgsOCBAQAogICAgIEpTTm9TdGF0aWNUYWJsZXMsCiAgICAgSW1wbGVt
ZW50YXRpb25MYWNrc1ZUYWJsZQogXSBpbnRlcmZhY2UgSURCRmFjdG9yeSB7Ci0gICAgW0NhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEltcGxlbWVudGVkQXM9Z2V0RGF0YWJhc2VOYW1l
cywgUmFpc2VzRXhjZXB0aW9uXSBJREJSZXF1ZXN0IHdlYmtpdEdldERhdGFiYXNlTmFtZXMoKTsK
LQogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25d
IElEQk9wZW5EQlJlcXVlc3Qgb3BlbihET01TdHJpbmcgbmFtZSwgW0VuZm9yY2VSYW5nZV0gb3B0
aW9uYWwgdW5zaWduZWQgbG9uZyBsb25nIHZlcnNpb24pOwogICAgIFtDYWxsV2l0aD1TY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIElEQk9wZW5EQlJlcXVlc3QgZGVsZXRl
RGF0YWJhc2UoRE9NU3RyaW5nIG5hbWUpOwotCiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gc2hvcnQgY21wKGFueSBmaXJzdCwgYW55IHNlY29u
ZCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJJbmRleC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5p
ZGwKaW5kZXggY2RhY2ZlNi4uYmEwYjBhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCSW5kZXguaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4LmlkbApAQCAtMzEsOCArMzEsOCBAQAogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSURCT2JqZWN0
U3RvcmUgb2JqZWN0U3RvcmU7CiAgICAgW0ltcGxlbWVudGVkQXM9a2V5UGF0aEFueV0gcmVhZG9u
bHkgYXR0cmlidXRlIElEQkFueSBrZXlQYXRoOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29s
ZWFuIHVuaXF1ZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBtdWx0aUVudHJ5Owor
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHVuaXF1ZTsKIAogICAgIFtDYWxsV2l0aD1T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIElEQlJlcXVlc3Qgb3BlbkN1
cnNvcihvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UsIG9wdGlvbmFsIERPTVN0cmluZyBkaXJl
Y3Rpb24pOwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNl
cHRpb25dIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihhbnkga2V5LCBvcHRpb25hbCBET01TdHJpbmcg
ZGlyZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQktleVJhbmdlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktl
eVJhbmdlLmlkbAppbmRleCBjNjBkNzQwLi4wZmVjMzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaWRsCkBAIC0zNCw4ICszNCw4IEBACiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gdXBwZXJPcGVuOwogCiAgICAgW0NhbGxXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gc3RhdGljIElEQktleVJh
bmdlIG9ubHkoYW55IHZhbHVlKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgUmFpc2VzRXhjZXB0aW9uXSBzdGF0aWMgSURCS2V5UmFuZ2UgbG93ZXJCb3VuZChhbnkgYm91
bmQsIG9wdGlvbmFsIGJvb2xlYW4gb3Blbik7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gc3RhdGljIElEQktleVJhbmdlIHVwcGVyQm91bmQo
YW55IGJvdW5kLCBvcHRpb25hbCBib29sZWFuIG9wZW4pOworICAgIFtDYWxsV2l0aD1TY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIHN0YXRpYyBJREJLZXlSYW5nZSBsb3dl
ckJvdW5kKGFueSBsb3dlciwgb3B0aW9uYWwgYm9vbGVhbiBvcGVuKTsKKyAgICBbQ2FsbFdpdGg9
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBzdGF0aWMgSURCS2V5UmFu
Z2UgdXBwZXJCb3VuZChhbnkgdXBwZXIsIG9wdGlvbmFsIGJvb2xlYW4gb3Blbik7CiAgICAgW0Nh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gc3RhdGljIElE
QktleVJhbmdlIGJvdW5kKGFueSBsb3dlciwgYW55IHVwcGVyLCBvcHRpb25hbCBib29sZWFuIGxv
d2VyT3Blbiwgb3B0aW9uYWwgYm9vbGVhbiB1cHBlck9wZW4pOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmgKaW5kZXggYzNiMzMzNC4uMzcz
MGE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0
YWRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0
YS5oCkBAIC03OSwzMSArNzksMjYgQEAgc3RydWN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgewog
fTsKIAogc3RydWN0IElEQkRhdGFiYXNlTWV0YWRhdGEgewotICAgIC8vIEZJWE1FOiBUaGVzZSBj
YW4gcHJvYmFibHkgYmUgY29sbGFwc2VkIGludG8gMC4KLSAgICBlbnVtIHsKLSAgICAgICAgTm9J
bnRWZXJzaW9uID0gLTEsCi0gICAgICAgIERlZmF1bHRJbnRWZXJzaW9uID0gMAotICAgIH07Ci0K
ICAgICB0eXBlZGVmIEhhc2hNYXA8aW50NjRfdCwgSURCT2JqZWN0U3RvcmVNZXRhZGF0YT4gT2Jq
ZWN0U3RvcmVNYXA7CiAKICAgICBJREJEYXRhYmFzZU1ldGFkYXRhKCkKLSAgICAgICAgOiBpbnRW
ZXJzaW9uKE5vSW50VmVyc2lvbikKKyAgICAgICAgOiBpZCgwKQorICAgICAgICAsIHZlcnNpb24o
MCkKKyAgICAgICAgLCBtYXhPYmplY3RTdG9yZUlkKDApCiAgICAgewogICAgIH0KLSAgICBJREJE
YXRhYmFzZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCBpZCwgY29uc3QgU3Ry
aW5nJiB2ZXJzaW9uLCBpbnQ2NF90IGludFZlcnNpb24sIGludDY0X3QgbWF4T2JqZWN0U3RvcmVJ
ZCkKKworICAgIElEQkRhdGFiYXNlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90
IGlkLCB1aW50NjRfdCB2ZXJzaW9uLCBpbnQ2NF90IG1heE9iamVjdFN0b3JlSWQpCiAgICAgICAg
IDogbmFtZShuYW1lKQogICAgICAgICAsIGlkKGlkKQogICAgICAgICAsIHZlcnNpb24odmVyc2lv
bikKLSAgICAgICAgLCBpbnRWZXJzaW9uKGludFZlcnNpb24pCiAgICAgICAgICwgbWF4T2JqZWN0
U3RvcmVJZChtYXhPYmplY3RTdG9yZUlkKQogICAgIHsKICAgICB9CiAKICAgICBTdHJpbmcgbmFt
ZTsKICAgICBpbnQ2NF90IGlkOwotICAgIFN0cmluZyB2ZXJzaW9uOwotICAgIGludDY0X3QgaW50
VmVyc2lvbjsKKyAgICB1aW50NjRfdCB2ZXJzaW9uOwogICAgIGludDY0X3QgbWF4T2JqZWN0U3Rv
cmVJZDsKIAogICAgIE9iamVjdFN0b3JlTWFwIG9iamVjdFN0b3JlczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbAppbmRleCBjNzJh
OTFiLi40NjNiOWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPYmplY3RTdG9yZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCT2JqZWN0U3RvcmUuaWRsCkBAIC0zOCwxMiArMzgsMTEgQEAKICAgICBbQ2FsbFdpdGg9
U2NyaXB0U3RhdGUsIFJhaXNlc0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBhZGQoYW55IHZhbHVlLCBv
cHRpb25hbCBhbnkga2V5KTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
SW1wbGVtZW50ZWRBcz1kZWxldGVGdW5jdGlvbiwgUmFpc2VzRXhjZXB0aW9uXSBJREJSZXF1ZXN0
IGRlbGV0ZShJREJLZXlSYW5nZT8ga2V5UmFuZ2UpOwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBJbXBsZW1lbnRlZEFzPWRlbGV0ZUZ1bmN0aW9uLCBSYWlzZXNFeGNlcHRp
b25dIElEQlJlcXVlc3QgZGVsZXRlKGFueSBrZXkpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIElEQlJlcXVlc3QgY2xlYXIoKTsKICAgICBb
Q2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBJREJSZXF1
ZXN0IGdldChJREJLZXlSYW5nZT8ga2V5KTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBJREJSZXF1ZXN0IGdldChhbnkga2V5KTsKKyAgICBb
Q2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBJREJSZXF1
ZXN0IGNsZWFyKCk7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNl
c0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKG9wdGlvbmFsIElEQktleVJhbmdlPyBy
YW5nZSwgb3B0aW9uYWwgRE9NU3RyaW5nIGRpcmVjdGlvbik7CiAgICAgW0NhbGxXaXRoPVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBvcGVuQ3Vyc29y
KGFueSBrZXksIG9wdGlvbmFsIERPTVN0cmluZyBkaXJlY3Rpb24pOwotCiAgICAgW0NhbGxXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEN1c3RvbSwgUmFpc2VzRXhjZXB0aW9uXSBJREJJbmRl
eCBjcmVhdGVJbmRleChET01TdHJpbmcgbmFtZSwgc2VxdWVuY2U8RE9NU3RyaW5nPiBrZXlQYXRo
LCBvcHRpb25hbCBEaWN0aW9uYXJ5IG9wdGlvbnMpOwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBDdXN0b20sIFJhaXNlc0V4Y2VwdGlvbl0gSURCSW5kZXggY3JlYXRlSW5k
ZXgoRE9NU3RyaW5nIG5hbWUsIERPTVN0cmluZyBrZXlQYXRoLCBvcHRpb25hbCBEaWN0aW9uYXJ5
IG9wdGlvbnMpOwogICAgIFtSYWlzZXNFeGNlcHRpb25dIElEQkluZGV4IGluZGV4KERPTVN0cmlu
ZyBuYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9wZW5EQlJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T3BlbkRCUmVxdWVzdC5jcHAKaW5kZXggNTZlMGYxNi4uOWUyZjAyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAKQEAg
LTM3LDE4ICszNywxOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SURC
T3BlbkRCUmVxdWVzdD4gSURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBjYWxs
YmFja3MsIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCB2ZXJzaW9uKQorUGFzc1JlZlB0
cjxJREJPcGVuREJSZXF1ZXN0PiBJREJPcGVuREJSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2Fs
bGJhY2tzLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIHVpbnQ2NF90IHZlcnNpb24sIEluZGV4ZWRE
Qjo6VmVyc2lvbk51bGxuZXNzIHZlcnNpb25OdWxsbmVzcykKIHsKLSAgICBSZWZQdHI8SURCT3Bl
bkRCUmVxdWVzdD4gcmVxdWVzdChhZG9wdFJlZihuZXcgSURCT3BlbkRCUmVxdWVzdChjb250ZXh0
LCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uSWQsIHZlcnNpb24pKSk7CisgICAgUmVmUHRyPElEQk9w
ZW5EQlJlcXVlc3Q+IHJlcXVlc3QoYWRvcHRSZWYobmV3IElEQk9wZW5EQlJlcXVlc3QoY29udGV4
dCwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbklkLCB2ZXJzaW9uLCB2ZXJzaW9uTnVsbG5lc3MpKSk7
CiAgICAgcmVxdWVzdC0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHJlcXVlc3QucmVs
ZWFzZSgpOwogfQogCi1JREJPcGVuREJSZXF1ZXN0OjpJREJPcGVuREJSZXF1ZXN0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NJ
bXBsPiBjYWxsYmFja3MsIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCB2ZXJzaW9uKQor
SURCT3BlbkRCUmVxdWVzdDo6SURCT3BlbkRCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGlu
dDY0X3QgdHJhbnNhY3Rpb25JZCwgdWludDY0X3QgdmVyc2lvbiwgSW5kZXhlZERCOjpWZXJzaW9u
TnVsbG5lc3MgdmVyc2lvbk51bGxuZXNzKQogICAgIDogSURCUmVxdWVzdChjb250ZXh0LCBJREJB
bnk6OmNyZWF0ZU51bGwoKSwgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpOb3JtYWxUYXNr
LCAwKQogICAgICwgbV9kYXRhYmFzZUNhbGxiYWNrcyhjYWxsYmFja3MpCiAgICAgLCBtX3RyYW5z
YWN0aW9uSWQodHJhbnNhY3Rpb25JZCkKICAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQorICAgICwg
bV92ZXJzaW9uTnVsbG5lc3ModmVyc2lvbk51bGxuZXNzKQogewogICAgIEFTU0VSVCghbV9yZXN1
bHQpOwogfQpAQCAtNjIsMTYgKzYzLDE2IEBAIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIElEQk9wZW5E
QlJlcXVlc3Q6OmV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QKICAgICByZXR1cm4gSURCT3Bl
bkRCUmVxdWVzdEV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsKIH0KIAotdm9pZCBJREJPcGVuREJS
ZXF1ZXN0OjpvbkJsb2NrZWQoaW50NjRfdCBvbGRWZXJzaW9uKQordm9pZCBJREJPcGVuREJSZXF1
ZXN0OjpvbkJsb2NrZWQodWludDY0X3Qgb2xkVmVyc2lvbikKIHsKICAgICBJREJfVFJBQ0UoIklE
Qk9wZW5EQlJlcXVlc3Q6Om9uQmxvY2tlZCgpIik7CiAgICAgaWYgKCFzaG91bGRFbnF1ZXVlRXZl
bnQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFJlZlB0cjxJREJBbnk+IG5ld1ZlcnNpb25Bbnkg
PSAobV92ZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6OkRlZmF1bHRJbnRWZXJzaW9uKSA/
IElEQkFueTo6Y3JlYXRlTnVsbCgpIDogSURCQW55OjpjcmVhdGUobV92ZXJzaW9uKTsKLSAgICBl
bnF1ZXVlRXZlbnQoSURCVmVyc2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUoSURCQW55OjpjcmVhdGUo
b2xkVmVyc2lvbiksIG5ld1ZlcnNpb25BbnkucmVsZWFzZSgpLCBldmVudE5hbWVzKCkuYmxvY2tl
ZEV2ZW50KSk7CisgICAgCisgICAgZW5xdWV1ZUV2ZW50KElEQlZlcnNpb25DaGFuZ2VFdmVudDo6
Y3JlYXRlKG9sZFZlcnNpb24sIG1fdmVyc2lvbiwgbV92ZXJzaW9uTnVsbG5lc3MsIGV2ZW50TmFt
ZXMoKS5ibG9ja2VkRXZlbnQpKTsKIH0KIAotdm9pZCBJREJPcGVuREJSZXF1ZXN0OjpvblVwZ3Jh
ZGVOZWVkZWQoaW50NjRfdCBvbGRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZT4gcHJwRGF0YWJhc2VCYWNrZW5kLCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRh
JiBtZXRhZGF0YSkKK3ZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRlTmVlZGVkKHVpbnQ2
NF90IG9sZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBw
cnBEYXRhYmFzZUJhY2tlbmQsIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhKQog
ewogICAgIElEQl9UUkFDRSgiSURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRlTmVlZGVkKCkiKTsK
ICAgICBpZiAobV9jb250ZXh0U3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7
CkBAIC05MiwxOSArOTMsMTUgQEAgdm9pZCBJREJPcGVuREJSZXF1ZXN0OjpvblVwZ3JhZGVOZWVk
ZWQoaW50NjRfdCBvbGRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQkRhdGFiYXMKICAgICBtX2RhdGFi
YXNlQ2FsbGJhY2tzLT5jb25uZWN0KGlkYkRhdGFiYXNlLmdldCgpKTsKICAgICBtX2RhdGFiYXNl
Q2FsbGJhY2tzID0gMDsKIAotICAgIGlmIChvbGRWZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRh
dGE6Ok5vSW50VmVyc2lvbikgewotICAgICAgICAvLyBUaGlzIGRhdGFiYXNlIGhhc24ndCBoYWQg
YW4gaW50ZWdlciB2ZXJzaW9uIGJlZm9yZS4KLSAgICAgICAgb2xkVmVyc2lvbiA9IElEQkRhdGFi
YXNlTWV0YWRhdGE6OkRlZmF1bHRJbnRWZXJzaW9uOwotICAgIH0KICAgICBJREJEYXRhYmFzZU1l
dGFkYXRhIG9sZE1ldGFkYXRhKG1ldGFkYXRhKTsKLSAgICBvbGRNZXRhZGF0YS5pbnRWZXJzaW9u
ID0gb2xkVmVyc2lvbjsKKyAgICBvbGRNZXRhZGF0YS52ZXJzaW9uID0gb2xkVmVyc2lvbjsKIAog
ICAgIG1fdHJhbnNhY3Rpb24gPSBJREJUcmFuc2FjdGlvbjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSwgbV90cmFuc2FjdGlvbklkLCBpZGJEYXRhYmFzZS5nZXQoKSwgdGhpcywgb2xk
TWV0YWRhdGEpOwogICAgIG1fcmVzdWx0ID0gSURCQW55OjpjcmVhdGUoaWRiRGF0YWJhc2UucmVs
ZWFzZSgpKTsKIAotICAgIGlmIChtX3ZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9J
bnRWZXJzaW9uKQorICAgIGlmIChtX3ZlcnNpb25OdWxsbmVzcyA9PSBJbmRleGVkREI6Ok51bGxW
ZXJzaW9uKQogICAgICAgICBtX3ZlcnNpb24gPSAxOwotICAgIGVucXVldWVFdmVudChJREJWZXJz
aW9uQ2hhbmdlRXZlbnQ6OmNyZWF0ZShJREJBbnk6OmNyZWF0ZShvbGRWZXJzaW9uKSwgSURCQW55
OjpjcmVhdGUobV92ZXJzaW9uKSwgZXZlbnROYW1lcygpLnVwZ3JhZGVuZWVkZWRFdmVudCkpOwor
ICAgIGVucXVldWVFdmVudChJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OmNyZWF0ZShvbGRWZXJzaW9u
LCBtX3ZlcnNpb24sIG1fdmVyc2lvbk51bGxuZXNzLCBldmVudE5hbWVzKCkudXBncmFkZW5lZWRl
ZEV2ZW50KSk7CiB9CiAKIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25TdWNjZXNzKFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBwcnBCYWNrZW5kLCBjb25zdCBJREJEYXRh
YmFzZU1ldGFkYXRhJiBtZXRhZGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaAppbmRleCAyZmNlZDk4Li45NjA0NTlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVz
dC5oCkBAIC0yOSwyMCArMjksMjEgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAog
I2luY2x1ZGUgIklEQlJlcXVlc3QuaCIKKyNpbmNsdWRlICJJbmRleGVkREIuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1jbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw7CitjbGFzcyBJ
REJEYXRhYmFzZUNhbGxiYWNrczsKIAogY2xhc3MgSURCT3BlbkRCUmVxdWVzdCA6IHB1YmxpYyBJ
REJSZXF1ZXN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1
ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsPiwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IHZlcnNpb24p
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IGNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGludDY0
X3QgdHJhbnNhY3Rpb25JZCwgdWludDY0X3QgdmVyc2lvbiwgSW5kZXhlZERCOjpWZXJzaW9uTnVs
bG5lc3MpOwogICAgIHZpcnR1YWwgfklEQk9wZW5EQlJlcXVlc3QoKTsKIAogICAgIHVzaW5nIElE
QlJlcXVlc3Q6Om9uU3VjY2VzczsKIAotICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoaW50NjRf
dCBleGlzdGluZ1ZlcnNpb24pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBvblVwZ3JhZGVO
ZWVkZWQoaW50NjRfdCBvbGRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZT4sIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgb25CbG9ja2VkKHVpbnQ2NF90IGV4aXN0aW5nVmVyc2lvbikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIG9uVXBncmFkZU5lZWRlZCh1aW50NjRfdCBvbGRWZXJzaW9uLCBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4sIGNvbnN0IElEQkRhdGFiYXNlTWV0
YWRhdGEmKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYp
IE9WRVJSSURFOwogCiAgICAgLy8gRXZlbnRUYXJnZXQKQEAgLTU2LDExICs1NywxMiBAQCBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIHNob3VsZEVucXVldWVFdmVudCgpIGNvbnN0IE9WRVJS
SURFOwogCiBwcml2YXRlOgotICAgIElEQk9wZW5EQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiwgaW50NjRfdCB0cmFu
c2FjdGlvbklkLCBpbnQ2NF90IHZlcnNpb24pOworICAgIElEQk9wZW5EQlJlcXVlc3QoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBpbnQ2
NF90IHRyYW5zYWN0aW9uSWQsIHVpbnQ2NF90IHZlcnNpb24sIEluZGV4ZWREQjo6VmVyc2lvbk51
bGxuZXNzKTsKIAotICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IG1fZGF0YWJh
c2VDYWxsYmFja3M7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBtX2RhdGFiYXNl
Q2FsbGJhY2tzOwogICAgIGNvbnN0IGludDY0X3QgbV90cmFuc2FjdGlvbklkOwotICAgIGludDY0
X3QgbV92ZXJzaW9uOworICAgIHVpbnQ2NF90IG1fdmVyc2lvbjsKKyAgICBJbmRleGVkREI6OlZl
cnNpb25OdWxsbmVzcyBtX3ZlcnNpb25OdWxsbmVzczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJl
cXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5j
cHAKaW5kZXggNDdmNTVmZi4uMWQ5ZmU2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAKQEAgLTEyMCwxNSArMTIwLDYgQEAgdW5zaWduZWQg
c2hvcnQgSURCUmVxdWVzdDo6ZXJyb3JDb2RlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogICAg
IHJldHVybiBtX2Vycm9yQ29kZTsKIH0KIAotU3RyaW5nIElEQlJlcXVlc3Q6OndlYmtpdEVycm9y
TWVzc2FnZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKLXsKLSAgICBpZiAobV9yZWFkeVN0YXRl
ICE9IERPTkUpIHsKLSAgICAgICAgZWMgPSBJREJEYXRhYmFzZUV4Y2VwdGlvbjo6SW52YWxpZFN0
YXRlRXJyb3I7Ci0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLSAgICB9Ci0gICAgcmV0dXJuIG1f
ZXJyb3JNZXNzYWdlOwotfQotCiBQYXNzUmVmUHRyPElEQkFueT4gSURCUmVxdWVzdDo6c291cmNl
KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9zb3VyY2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKaW5kZXggZTVjY2NiNC4uMjVmMjgzNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaApAQCAtNTksNyAr
NTksNiBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxJREJBbnk+IHJlc3VsdChFeGNlcHRpb25D
b2RlJikgY29uc3Q7CiAgICAgdW5zaWduZWQgc2hvcnQgZXJyb3JDb2RlKEV4Y2VwdGlvbkNvZGUm
KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPERPTUVycm9yPiBlcnJvcihFeGNlcHRpb25Db2RlJikg
Y29uc3Q7Ci0gICAgU3RyaW5nIHdlYmtpdEVycm9yTWVzc2FnZShFeGNlcHRpb25Db2RlJikgY29u
c3Q7CiAgICAgUGFzc1JlZlB0cjxJREJBbnk+IHNvdXJjZSgpIGNvbnN0OwogICAgIFBhc3NSZWZQ
dHI8SURCVHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uKCkgY29uc3Q7CiAgICAgdm9pZCBwcmV2ZW50
UHJvcGFnYXRpb24oKSB7IG1fcHJldmVudFByb3BhZ2F0aW9uID0gdHJ1ZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmlkbAppbmRleCAwMDZmYzE0
Li4xNTc1YjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJSZXF1ZXN0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJS
ZXF1ZXN0LmlkbApAQCAtMzIsMjcgKzMyLDEzIEBACiAgICAgQWN0aXZlRE9NT2JqZWN0LAogICAg
IEV2ZW50VGFyZ2V0LAogICAgIEpTTm9TdGF0aWNUYWJsZXMKLV0gaW50ZXJmYWNlIElEQlJlcXVl
c3QgeworXSBpbnRlcmZhY2UgSURCUmVxdWVzdCA6IEV2ZW50VGFyZ2V0IHsKICAgICBbR2V0dGVy
UmFpc2VzRXhjZXB0aW9uXSByZWFkb25seSBhdHRyaWJ1dGUgSURCQW55IHJlc3VsdDsKICAgICBb
R2V0dGVyUmFpc2VzRXhjZXB0aW9uXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NRXJyb3IgZXJyb3I7
Ci0gICAgW1RyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9VW5kZWZpbmVkLCBHZXR0ZXJSYWlzZXNF
eGNlcHRpb25dIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgd2Via2l0RXJyb3JNZXNzYWdl
OwotCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIElEQkFueSBzb3VyY2U7CiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIElEQlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uOwotCi0gICAgLy8gU3RhdGVzCiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyByZWFkeVN0YXRlOwogCi0gICAgLy8gRXZl
bnRzCiAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25zdWNjZXNzOwogICAgIGF0dHJpYnV0
ZSBFdmVudExpc3RlbmVyIG9uZXJyb3I7Ci0KLSAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UK
LSAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nIHR5cGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Ci0gICAgdm9pZCByZW1vdmVFdmVu
dExpc3RlbmVyKERPTVN0cmluZyB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF
dmVudExpc3RlbmVyIGxpc3RlbmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRp
b25hbCBib29sZWFuIHVzZUNhcHR1cmUpOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIGJvb2xlYW4g
ZGlzcGF0Y2hFdmVudChFdmVudCBldnQpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAppbmRleCAwMGJkYTRjLi4yZGZiOGNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb24uY3BwCkBAIC0xMzgsMTEgKzEzOCw2IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnNldEVy
cm9yKFBhc3NSZWZQdHI8RE9NRXJyb3I+IGVycm9yLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzCiAg
ICAgfQogfQogCi1TdHJpbmcgSURCVHJhbnNhY3Rpb246OndlYmtpdEVycm9yTWVzc2FnZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fZXJyb3JNZXNzYWdlOwotfQotCiBQYXNzUmVmUHRyPElEQk9i
amVjdFN0b3JlPiBJREJUcmFuc2FjdGlvbjo6b2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1l
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAobV9zdGF0ZSA9PSBGaW5pc2hlZCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgK
aW5kZXggODk3MDE1NC4uZDE4NTlkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCkBAIC05Nyw3ICs5Nyw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIG9iamVjdFN0b3JlRGVsZXRlZChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEFj
dGl2ZShib29sKTsKICAgICB2b2lkIHNldEVycm9yKFBhc3NSZWZQdHI8RE9NRXJyb3I+LCBjb25z
dCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7Ci0gICAgU3RyaW5nIHdlYmtpdEVycm9yTWVzc2FnZSgp
IGNvbnN0OwogCiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhYm9ydCk7CiAg
ICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjb21wbGV0ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5pZGwKaW5kZXgg
NjQ3ZWZlMS4uOGVhYzlhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmlkbApAQCAtMjksMjggKzI5LDE1IEBACiAgICAgQWN0aXZl
RE9NT2JqZWN0LAogICAgIEV2ZW50VGFyZ2V0LAogICAgIEpTTm9TdGF0aWNUYWJsZXMKLV0gaW50
ZXJmYWNlIElEQlRyYW5zYWN0aW9uIHsKLQotICAgIC8vIFByb3BlcnRpZXMKK10gaW50ZXJmYWNl
IElEQlRyYW5zYWN0aW9uIDogRXZlbnRUYXJnZXQgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgbW9kZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSURCRGF0YWJhc2UgZGI7CiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTUVycm9yIGVycm9yOwotICAgIFtUcmVhdFJldHVybmVk
TnVsbFN0cmluZ0FzPVVuZGVmaW5lZF0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB3ZWJr
aXRFcnJvck1lc3NhZ2U7CiAKLSAgICAvLyBNZXRob2RzCiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0g
SURCT2JqZWN0U3RvcmUgb2JqZWN0U3RvcmUgKERPTVN0cmluZyBuYW1lKTsKICAgICBbUmFpc2Vz
RXhjZXB0aW9uXSB2b2lkIGFib3J0ICgpOwogCi0gICAgLy8gRXZlbnRzCiAgICAgYXR0cmlidXRl
IEV2ZW50TGlzdGVuZXIgb25hYm9ydDsKICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNv
bXBsZXRlOwogICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZXJyb3I7Ci0gICAgLy8gRXZl
bnRUYXJnZXQgaW50ZXJmYWNlCi0gICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKERPTVN0cmluZyB0
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBib29sZWFuIHVzZUNhcHR1cmUpOwot
ICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihET01TdHJpbmcgdHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiB1c2VDYXB0dXJlKTsKLSAgICBbUmFpc2Vz
RXhjZXB0aW9uXSBib29sZWFuIGRpc3BhdGNoRXZlbnQoRXZlbnQgZXZ0KTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5n
ZUV2ZW50LmNwcAppbmRleCAwYzg2MWFmLi45NGYzYzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAK
QEAgLTI4LDIwICsyOCwxMyBAQAogCiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKLSNp
bmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAiSURCQW55LmgiCi0KIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxJREJWZXJzaW9uQ2hhbmdlRXZlbnQ+IElEQlZlcnNpb25D
aGFuZ2VFdmVudDo6Y3JlYXRlKFBhc3NSZWZQdHI8SURCQW55PiBvbGRWZXJzaW9uLCBQYXNzUmVm
UHRyPElEQkFueT4gbmV3VmVyc2lvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpCi17
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJWZXJzaW9uQ2hhbmdlRXZlbnQob2xkVmVyc2lv
biwgbmV3VmVyc2lvbiwgZXZlbnRUeXBlKSk7Ci19Ci0KLUlEQlZlcnNpb25DaGFuZ2VFdmVudDo6
SURCVmVyc2lvbkNoYW5nZUV2ZW50KFBhc3NSZWZQdHI8SURCQW55PiBvbGRWZXJzaW9uLCBQYXNz
UmVmUHRyPElEQkFueT4gbmV3VmVyc2lvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUp
CitJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OklEQlZlcnNpb25DaGFuZ2VFdmVudCh1bnNpZ25lZCBs
b25nIGxvbmcgb2xkVmVyc2lvbiwgdW5zaWduZWQgbG9uZyBsb25nIG5ld1ZlcnNpb24sIEluZGV4
ZWREQjo6VmVyc2lvbk51bGxuZXNzIG5ld1ZlcnNpb25OdWxsbmVzcywgY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUpCiAgICAgOiBFdmVudChldmVudFR5cGUsIGZhbHNlIC8qY2FuQnViYmxl
Ki8sIGZhbHNlIC8qY2FuY2VsYWJsZSovKQogICAgICwgbV9vbGRWZXJzaW9uKG9sZFZlcnNpb24p
CiAgICAgLCBtX25ld1ZlcnNpb24obmV3VmVyc2lvbikKKyAgICAsIG1fbmV3VmVyc2lvbk51bGxu
ZXNzKG5ld1ZlcnNpb25OdWxsbmVzcykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaAppbmRleCBkMDg0
ZWIyLi45NDgwY2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaApAQCAtMjksNyArMjksNyBAQAogI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiRXZlbnQuaCIKLSNpbmNsdWRlICJJ
REJBbnkuaCIKKyNpbmNsdWRlICJJbmRleGVkREIuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KQEAgLTM4LDE5ICszOCwyNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIElE
QlZlcnNpb25DaGFuZ2VFdmVudCA6IHB1YmxpYyBFdmVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5nZUV2ZW50PiBjcmVhdGUoUGFzc1JlZlB0cjxJREJB
bnk+IG9sZFZlcnNpb24gPSBJREJBbnk6OmNyZWF0ZU51bGwoKSwgUGFzc1JlZlB0cjxJREJBbnk+
IG5ld1ZlcnNpb24gPSBJREJBbnk6OmNyZWF0ZU51bGwoKSwgY29uc3QgQXRvbWljU3RyaW5nJiBl
dmVudFR5cGUgPSBBdG9taWNTdHJpbmcoKSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVmVy
c2lvbkNoYW5nZUV2ZW50PiBjcmVhdGUodW5zaWduZWQgbG9uZyBsb25nIG9sZFZlcnNpb24gPSAw
LCB1bnNpZ25lZCBsb25nIGxvbmcgbmV3VmVyc2lvbiA9IDAsIEluZGV4ZWREQjo6VmVyc2lvbk51
bGxuZXNzIG5ld1ZlcnNpb25OdWxsbmVzcyA9IEluZGV4ZWREQjo6TnVsbFZlcnNpb24sIGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlID0gQXRvbWljU3RyaW5nKCkpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IElEQlZlcnNpb25DaGFuZ2VFdmVudChvbGRWZXJzaW9uLCBu
ZXdWZXJzaW9uLCBuZXdWZXJzaW9uTnVsbG5lc3MsIGV2ZW50VHlwZSkpOworICAgIH0KKwogICAg
IHZpcnR1YWwgfklEQlZlcnNpb25DaGFuZ2VFdmVudCgpOwogCi0gICAgdmlydHVhbCBQYXNzUmVm
UHRyPElEQkFueT4gb2xkVmVyc2lvbigpIHsgcmV0dXJuIG1fb2xkVmVyc2lvbjsgfQotICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxJREJBbnk+IG5ld1ZlcnNpb24oKSB7IHJldHVybiBtX25ld1ZlcnNp
b247IH0KKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBvbGRWZXJzaW9uKCkgeyByZXR1
cm4gbV9vbGRWZXJzaW9uOyB9CisgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGxvbmcgbmV3VmVy
c2lvbihib29sJiBpc051bGwpIHsgaXNOdWxsID0gKG1fbmV3VmVyc2lvbk51bGxuZXNzID09IElu
ZGV4ZWREQjo6TnVsbFZlcnNpb24pOyByZXR1cm4gbV9uZXdWZXJzaW9uOyB9CiAKICAgICB2aXJ0
dWFsIEV2ZW50SW50ZXJmYWNlIGV2ZW50SW50ZXJmYWNlKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0g
ICAgSURCVmVyc2lvbkNoYW5nZUV2ZW50KFBhc3NSZWZQdHI8SURCQW55PiBvbGRWZXJzaW9uLCBQ
YXNzUmVmUHRyPElEQkFueT4gbmV3VmVyc2lvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUpOworICAgIElEQlZlcnNpb25DaGFuZ2VFdmVudCh1bnNpZ25lZCBsb25nIGxvbmcgb2xkVmVy
c2lvbiwgdW5zaWduZWQgbG9uZyBsb25nIG5ld1ZlcnNpb24sIEluZGV4ZWREQjo6VmVyc2lvbk51
bGxuZXNzIG5ld1ZlcnNpb25OdWxsbmVzcywgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUp
OwogCi0gICAgUmVmUHRyPElEQkFueT4gbV9vbGRWZXJzaW9uOwotICAgIFJlZlB0cjxJREJBbnk+
IG1fbmV3VmVyc2lvbjsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbV9vbGRWZXJzaW9uOworICAg
IHVuc2lnbmVkIGxvbmcgbG9uZyBtX25ld1ZlcnNpb247CisgICAgSW5kZXhlZERCOjpWZXJzaW9u
TnVsbG5lc3MgbV9uZXdWZXJzaW9uTnVsbG5lc3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJz
aW9uQ2hhbmdlRXZlbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VmVyc2lvbkNoYW5nZUV2ZW50LmlkbAppbmRleCBlOTIxOTI4Li44ZDExYzhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFu
Z2VFdmVudC5pZGwKQEAgLTI3LDYgKzI3LDYgQEAKICAgICBDb25kaXRpb25hbD1JTkRFWEVEX0RB
VEFCQVNFLAogICAgIEpTTm9TdGF0aWNUYWJsZXMKIF0gaW50ZXJmYWNlIElEQlZlcnNpb25DaGFu
Z2VFdmVudCA6IEV2ZW50IHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgSURCQW55IG9sZFZlcnNp
b247Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIElEQkFueSBuZXdWZXJzaW9uOworICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxvbmcgb2xkVmVyc2lvbjsKKyAgICByZWFkb25s
eSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsb25nPyBuZXdWZXJzaW9uOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSW5kZXhlZERCLmgKaW5kZXggMmU4NGZjNy4uY2I3
ZThmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSW5kZXhl
ZERCLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSW5kZXhlZERCLmgK
QEAgLTUwLDYgKzUwLDExIEBAIGVudW0gQ3Vyc29yVHlwZSB7CiAgICAgQ3Vyc29yS2V5T25seQog
fTsKIAorZW51bSBWZXJzaW9uTnVsbG5lc3MgeworICAgIE51bGxWZXJzaW9uLAorICAgIE5vbk51
bGxWZXJzaW9uCit9OworCiB9IC8vIG5hbWVzcGFjZSBJbmRleGVkREIKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQo=
</data>
<flag name="commit-queue"
          id="235037"
          type_id="3"
          status="-"
          setter="gtk-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212835</attachid>
            <date>2013-09-27 13:29:00 -0700</date>
            <delta_ts>2013-09-27 15:10:39 -0700</delta_ts>
            <desc>Patch v2 - Minimal fixes to keep leveldb building</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>43195</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNGRiYjhhLi4zZGE4ZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsODEg
QEAKIDIwMTMtMDktMjYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAg
ICAgIEluZGV4ZWREQiBJREwgUmVmYWN0b3JpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE5OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGluY2x1ZGVzOgorICAgICAgICAxIC0gTGV2ZXJh
Z2luZyBFdmVudFRhcmdldC5pZGwgaW5oZXJpdGFuY2UKKyAgICAgICAgMiAtIFJlbW92aW5nIGNv
bW1lbnRzCisgICAgICAgIDMgLSBSZW9yZGVyaW5nIHRvIG1hdGNoIHRoZSBzcGVjJ3MgSURMcwor
ICAgICAgICA0IC0gUmVtb3Zpbmcgbm9uc3RhbmRhcmQsIFdlYktpdC1zcGVjaWZpYyBtZXRob2Rz
CisgICAgICAgIDUgLSBVcGRhdGluZyBpbnRlcmZhY2VzIHRvIG1hdGNoIHRoZSBzcGVjICh2ZXJz
aW9ucyBhcmUgb25seSB1aW50NjRfdCdzIG5vdy4uLikKKyAgICAgICAgNiAtIFVwZGF0aW5nIGlt
cGxlbWVudGF0aW9uIGNvZGUgYXMgbmVlZGVkICh2ZXJzaW9ucyBhcmUgb25seSB1aW50NjRfdCdz
IG5vdy4uLikKKworICAgICAgICBJREwgY2hhbmdlczoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3IuaWRsOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmlkbDoKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGw6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRi
L0lEQk9iamVjdFN0b3JlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1
ZXN0LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5pZGw6
CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmlkbDoK
KworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oOiBBZGQgbmV3IGVudW0g
dG8gcmVwcmVzZW50IHZlcnNpb24gbnVsbG5lc3MuCisKKyAgICAgICAgQWRhcHQgdG8gbmV3IElE
THMsIGFuZCBhbHNvIHJlZmFjdG9yIHJlcHJlc2VudGF0aW9uIG9mIGluaXRpYWwsIG51bGwgdmVy
c2lvbmluZzoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDYWxsYmFja3MuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkNhbGxiYWNrczo6b25CbG9ja2VkKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkNhbGxiYWNrczo6b25VcGdyYWRlTmVlZGVkKToKKworICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNl
Ojp2ZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlOjpvblZlcnNpb25DaGFu
Z2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmg6CisKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrcy5oOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6Om9uVmVyc2lvbkNoYW5nZSk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmg6CisK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OklEQkZhY3Rvcnk6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeTo6
b3BlbkludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6OmRlbGV0ZURhdGFi
YXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5Lmg6CisKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6
SURCRGF0YWJhc2VNZXRhZGF0YTo6SURCRGF0YWJhc2VNZXRhZGF0YSk6CisKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJS
ZXF1ZXN0OjpJREJPcGVuREJSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJl
cXVlc3Q6Om9uQmxvY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJPcGVuREJSZXF1ZXN0Ojpv
blVwZ3JhZGVOZWVkZWQpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJl
cXVlc3QuaDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaDoKKworICAgICAgICAqIE1v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlZlcnNpb25D
aGFuZ2VFdmVudDo6SURCVmVyc2lvbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlZl
cnNpb25DaGFuZ2VFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlZlcnNpb25D
aGFuZ2VFdmVudDo6b2xkVmVyc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJWZXJzaW9uQ2hh
bmdlRXZlbnQ6Om5ld1ZlcnNpb24pOgorCisgICAgICAgIEtlZXAgbGV2ZWxkYiBidWlsZGluZyB3
aXRoIG1pbmltYWwgYWRhcHRhdGlvbnMgdG8gdGhlIG5ldyBJRExzOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5jcHAKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkxldmVsREJDb2RpbmcuY3BwCisKKzIwMTMt
MDktMjYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCiAgICAgICAgIE1hcmsg
SURCRGF0YWJhc2UgIkZJTkFMIiBub3cgdGhhdCBodHRwOi8vd2Via2l0Lm9yZy9iLzEyMTc0NyBp
cyBmaXhlZC4KIAogICAgICAgICBSdWJiZXJzdGFtcGVkIGJ5IEFuZHJlYXMgS2xpbmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKaW5kZXggZGE3
ZGUwNy4uOWRhYTNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ2FsbGJhY2tzLmgKQEAgLTY4LDkgKzY4LDkgQEAgcHVibGljOgogICAgIC8vIEZyb20gSURC
Q3Vyc29yLmFkdmFuY2UoKS9jb250aW51ZSgpCiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dp
dGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElEQktleT4gPiYga2V5cywgY29uc3QgVmVj
dG9yPFJlZlB0cjxJREJLZXk+ID4mIHByaW1hcnlLZXlzLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gPiYgdmFsdWVzKSA9IDA7CiAgICAgLy8gRnJvbSBJREJGYWN0b3J5Lm9wZW4o
KS9kZWxldGVEYXRhYmFzZSgpCi0gICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZChpbnQ2NF90IC8q
IGV4aXN0aW5nVmVyc2lvbiAqLykgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1
YWwgdm9pZCBvbkJsb2NrZWQodWludDY0X3QgLyogZXhpc3RpbmdWZXJzaW9uICovKSB7IEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgLy8gRnJvbSBJREJGYWN0b3J5Lm9wZW4oKQotICAgIHZp
cnR1YWwgdm9pZCBvblVwZ3JhZGVOZWVkZWQoaW50NjRfdCAvKiBvbGRWZXJzaW9uICovLCBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4sIGNvbnN0IElEQkRhdGFiYXNlTWV0
YWRhdGEmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmlydHVhbCB2b2lkIG9uVXBn
cmFkZU5lZWRlZCh1aW50NjRfdCAvKiBvbGRWZXJzaW9uICovLCBQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZT4sIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmKSB7IEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4sIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEm
KSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmlkbAppbmRleCA5NTU0MDdhLi41MDQzZWMyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5pZGwKQEAgLTI3
LDExICsyNywxMCBAQAogICAgIENvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UsCiAgICAgSlNO
b1N0YXRpY1RhYmxlcwogXSBpbnRlcmZhY2UgSURCQ3Vyc29yIHsKLQorICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBJREJBbnkgc291cmNlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcg
ZGlyZWN0aW9uOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkga2V5OwogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBhbnkgcHJpbWFyeUtleTsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgSURCQW55
IHNvdXJjZTsKIAogICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgUmFpc2VzRXhjZXB0aW9uXSBJ
REJSZXF1ZXN0IHVwZGF0ZShhbnkgdmFsdWUpOwogICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQg
YWR2YW5jZShbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBsb25nIGNvdW50KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmNwcAppbmRleCA4YzRlNTQ5
Li44N2NhMTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2UuY3BwCkBAIC0xMzEsMTIgKzEzMSw5IEBAIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlz
dD4gSURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMoKSBjb25zdAogICAgIHJldHVybiBvYmpl
Y3RTdG9yZU5hbWVzLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxJREJBbnk+IElEQkRhdGFi
YXNlOjp2ZXJzaW9uKCkgY29uc3QKK3VpbnQ2NF90IElEQkRhdGFiYXNlOjp2ZXJzaW9uKCkgY29u
c3QKIHsKLSAgICBpbnQ2NF90IGludFZlcnNpb24gPSBtX21ldGFkYXRhLmludFZlcnNpb247Ci0g
ICAgaWYgKGludFZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKQot
ICAgICAgICByZXR1cm4gSURCQW55OjpjcmVhdGVTdHJpbmcobV9tZXRhZGF0YS52ZXJzaW9uKTsK
LSAgICByZXR1cm4gSURCQW55OjpjcmVhdGUoaW50VmVyc2lvbik7CisgICAgcmV0dXJuIG1fbWV0
YWRhdGEudmVyc2lvbjsKIH0KIAogUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURCRGF0YWJh
c2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgRGljdGlvbmFy
eSYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0zMDMsNyArMzAwLDcgQEAgdm9pZCBJ
REJEYXRhYmFzZTo6Y2xvc2VDb25uZWN0aW9uKCkKICAgICB9CiB9CiAKLXZvaWQgSURCRGF0YWJh
c2U6Om9uVmVyc2lvbkNoYW5nZShpbnQ2NF90IG9sZFZlcnNpb24sIGludDY0X3QgbmV3VmVyc2lv
bikKK3ZvaWQgSURCRGF0YWJhc2U6Om9uVmVyc2lvbkNoYW5nZSh1aW50NjRfdCBvbGRWZXJzaW9u
LCB1aW50NjRfdCBuZXdWZXJzaW9uLCBJbmRleGVkREI6OlZlcnNpb25OdWxsbmVzcyBuZXdWZXJz
aW9uTnVsbG5lc3MpCiB7CiAgICAgSURCX1RSQUNFKCJJREJEYXRhYmFzZTo6b25WZXJzaW9uQ2hh
bmdlIik7CiAgICAgaWYgKG1fY29udGV4dFN0b3BwZWQgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSkKQEAgLTMxMiw4ICszMDksNyBAQCB2b2lkIElEQkRhdGFiYXNlOjpvblZlcnNpb25DaGFu
Z2UoaW50NjRfdCBvbGRWZXJzaW9uLCBpbnQ2NF90IG5ld1ZlcnNpb24pCiAgICAgaWYgKG1fY2xv
c2VQZW5kaW5nKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8SURCQW55PiBuZXdWZXJz
aW9uQW55ID0gbmV3VmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24g
PyBJREJBbnk6OmNyZWF0ZU51bGwoKSA6IElEQkFueTo6Y3JlYXRlKG5ld1ZlcnNpb24pOwotICAg
IGVucXVldWVFdmVudChJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OmNyZWF0ZShJREJBbnk6OmNyZWF0
ZShvbGRWZXJzaW9uKSwgbmV3VmVyc2lvbkFueS5yZWxlYXNlKCksIGV2ZW50TmFtZXMoKS52ZXJz
aW9uY2hhbmdlRXZlbnQpKTsKKyAgICBlbnF1ZXVlRXZlbnQoSURCVmVyc2lvbkNoYW5nZUV2ZW50
OjpjcmVhdGUob2xkVmVyc2lvbiwgbmV3VmVyc2lvbiwgbmV3VmVyc2lvbk51bGxuZXNzKSk7CiB9
CiAKIHZvaWQgSURCRGF0YWJhc2U6OmVucXVldWVFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVu
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCmlu
ZGV4IDJhNDZlNDYuLjkwMjUzMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2UuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBJ
bXBsZW1lbnQgdGhlIElETAogICAgIGNvbnN0IFN0cmluZyBuYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9tZXRhZGF0YS5uYW1lOyB9Ci0gICAgUGFzc1JlZlB0cjxJREJBbnk+IHZlcnNpb24oKSBjb25z
dDsKKyAgICB1aW50NjRfdCB2ZXJzaW9uKCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxET01TdHJp
bmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7CiAKICAgICBQYXNzUmVmUHRyPElEQk9i
amVjdFN0b3JlPiBjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IERp
Y3Rpb25hcnkmLCBFeGNlcHRpb25Db2RlJik7CkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAg
ICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHZlcnNpb25jaGFuZ2UpOwogCiAgICAg
Ly8gSURCRGF0YWJhc2VDYWxsYmFja3MKLSAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdl
KGludDY0X3Qgb2xkVmVyc2lvbiwgaW50NjRfdCBuZXdWZXJzaW9uKTsKKyAgICB2aXJ0dWFsIHZv
aWQgb25WZXJzaW9uQ2hhbmdlKHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNp
b24sIEluZGV4ZWREQjo6VmVyc2lvbk51bGxuZXNzIG5ld1ZlcnNpb25OdWxsbmVzcyk7CiAgICAg
dmlydHVhbCB2b2lkIG9uQWJvcnQoaW50NjRfdCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9y
Pik7CiAgICAgdmlydHVhbCB2b2lkIG9uQ29tcGxldGUoaW50NjRfdCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmlkbAppbmRleCAyYzVjYzg2
Li5kNjAzOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2UuaWRsCkBAIC0yOSwzMCArMjksMjAgQEAKICAgICBBY3RpdmVET01PYmplY3QsCiAg
ICAgRXZlbnRUYXJnZXQsCiAgICAgSlNOb1N0YXRpY1RhYmxlcwotXSBpbnRlcmZhY2UgSURCRGF0
YWJhc2UgeworXSBpbnRlcmZhY2UgSURCRGF0YWJhc2UgOiBFdmVudFRhcmdldCB7CiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJ
REJBbnkgdmVyc2lvbjsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsb25n
IHZlcnNpb247CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZ0xpc3Qgb2JqZWN0U3Rv
cmVOYW1lczsKIAotICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWJvcnQ7Ci0gICAgYXR0
cmlidXRlIEV2ZW50TGlzdGVuZXIgb25lcnJvcjsKLSAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5l
ciBvbnZlcnNpb25jaGFuZ2U7Ci0KICAgICBbQ3VzdG9tLCBSYWlzZXNFeGNlcHRpb25dIElEQk9i
amVjdFN0b3JlIGNyZWF0ZU9iamVjdFN0b3JlKERPTVN0cmluZyBuYW1lLCBvcHRpb25hbCBEaWN0
aW9uYXJ5IG9wdGlvbnMpOwogICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgZGVsZXRlT2JqZWN0
U3RvcmUoRE9NU3RyaW5nIG5hbWUpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBSYWlzZXNFeGNlcHRpb25dIElEQlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKERPTVN0cmlu
Z0xpc3Qgc3RvcmVOYW1lcywgW0RlZmF1bHQ9TnVsbFN0cmluZ10gb3B0aW9uYWwgRE9NU3RyaW5n
IG1vZGUpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNl
cHRpb25dIElEQlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKHNlcXVlbmNlPERPTVN0cmluZz4gc3Rv
cmVOYW1lcywgW0RlZmF1bHQ9TnVsbFN0cmluZ10gb3B0aW9uYWwgRE9NU3RyaW5nIG1vZGUpOwog
ICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIElE
QlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKERPTVN0cmluZyBzdG9yZU5hbWUsIFtEZWZhdWx0PU51
bGxTdHJpbmddIG9wdGlvbmFsIERPTVN0cmluZyBtb2RlKTsKLQorICAgIFtDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIElEQlRyYW5zYWN0aW9uIHRyYW5z
YWN0aW9uKHNlcXVlbmNlPERPTVN0cmluZz4gc3RvcmVOYW1lcywgW0RlZmF1bHQ9TnVsbFN0cmlu
Z10gb3B0aW9uYWwgRE9NU3RyaW5nIG1vZGUpOwogICAgIHZvaWQgY2xvc2UoKTsKIAotICAgIC8v
IEV2ZW50VGFyZ2V0IGludGVyZmFjZQotICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihET01TdHJp
bmcgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRMaXN0ZW5lciBsaXN0ZW5l
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiB1c2VDYXB0dXJl
KTsKLSAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nIHR5cGUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Ci0gICAgW1Jh
aXNlc0V4Y2VwdGlvbl0gYm9vbGVhbiBkaXNwYXRjaEV2ZW50KEV2ZW50IGV2dCk7CisgICAgYXR0
cmlidXRlIEV2ZW50TGlzdGVuZXIgb25hYm9ydDsKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5l
ciBvbmVycm9yOworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9udmVyc2lvbmNoYW5nZTsK
KwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VDYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQ2FsbGJhY2tzLmgKaW5kZXggZmMyNDJlMC4uNzc3MGFiZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNr
cy5oCkBAIC0yOSwyMCArMjksMjUgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAog
I2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKKyNpbmNsdWRlICJJbmRleGVkREIuaCIKICNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIElEQkRhdGFiYXNlOworCiBjbGFzcyBJ
REJEYXRhYmFzZUNhbGxiYWNrcyA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkRhdGFiYXNlQ2FsbGJh
Y2tzPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCRGF0YWJhc2VDYWxsYmFja3MoKSB7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBvbkZvcmNlZENsb3NlKCkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBvblZlcnNpb25DaGFuZ2UoaW50NjRfdCBvbGRWZXJzaW9uLCBpbnQ2NF90IG5ld1ZlcnNpb24p
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKHVpbnQ2NF90IG9sZFZlcnNp
b24sIHVpbnQ2NF90IG5ld1ZlcnNpb24sIEluZGV4ZWREQjo6VmVyc2lvbk51bGxuZXNzIG5ld1Zl
cnNpb25OdWxsbmVzcykgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIG9uQWJvcnQoaW50NjRfdCB0
cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIG9uQ29tcGxldGUoaW50NjRfdCB0cmFuc2FjdGlvbklkKSA9IDA7CisKKyAgICB2
aXJ0dWFsIHZvaWQgY29ubmVjdChJREJEYXRhYmFzZSopID0gMDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwCmluZGV4IDQyYWY3YTIuLjU4N2M0
YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFi
YXNlQ2FsbGJhY2tzSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcApAQCAtNTIsMTAgKzUyLDEwIEBAIHZvaWQg
SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpvbkZvcmNlZENsb3NlKCkKICAgICAgICAgbV9kYXRh
YmFzZS0+Zm9yY2VDbG9zZSgpOwogfQogCi12b2lkIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6
b25WZXJzaW9uQ2hhbmdlKGludDY0X3Qgb2xkVmVyc2lvbiwgaW50NjRfdCBuZXdWZXJzaW9uKQor
dm9pZCBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6Om9uVmVyc2lvbkNoYW5nZSh1aW50NjRfdCBv
bGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uLCBJbmRleGVkREI6OlZlcnNpb25OdWxsbmVz
cyBuZXdWZXJzaW9uTnVsbG5lc3MpCiB7CiAgICAgaWYgKG1fZGF0YWJhc2UpCi0gICAgICAgIG1f
ZGF0YWJhc2UtPm9uVmVyc2lvbkNoYW5nZShvbGRWZXJzaW9uLCBuZXdWZXJzaW9uKTsKKyAgICAg
ICAgbV9kYXRhYmFzZS0+b25WZXJzaW9uQ2hhbmdlKG9sZFZlcnNpb24sIG5ld1ZlcnNpb24sIG5l
d1ZlcnNpb25OdWxsbmVzcyk7CiB9CiAKIHZvaWQgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpj
b25uZWN0KElEQkRhdGFiYXNlKiBkYXRhYmFzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKaW5kZXgg
NWE3OGIzNy4uMDgwMDUyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgKQEAgLTQzLDEyICs0Mywx
MiBAQCBwdWJsaWM6CiAKICAgICAvLyBJREJEYXRhYmFzZUNhbGxiYWNrcwogICAgIHZpcnR1YWwg
dm9pZCBvbkZvcmNlZENsb3NlKCk7Ci0gICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShp
bnQ2NF90IG9sZFZlcnNpb24sIGludDY0X3QgbmV3VmVyc2lvbik7CisgICAgdmlydHVhbCB2b2lk
IG9uVmVyc2lvbkNoYW5nZSh1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9u
LCBJbmRleGVkREI6OlZlcnNpb25OdWxsbmVzcyBuZXdWZXJzaW9uTnVsbG5lc3MpOwogCiAgICAg
dmlydHVhbCB2b2lkIG9uQWJvcnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElE
QkRhdGFiYXNlRXJyb3I+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25Db21wbGV0ZShpbnQ2NF90IHRy
YW5zYWN0aW9uSWQpOwogCi0gICAgdm9pZCBjb25uZWN0KElEQkRhdGFiYXNlKik7CisgICAgdmly
dHVhbCB2b2lkIGNvbm5lY3QoSURCRGF0YWJhc2UqKTsKIAogcHJpdmF0ZToKICAgICBJREJEYXRh
YmFzZUNhbGxiYWNrc0ltcGwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeS5jcHAKaW5kZXggZWE4MjAwNy4uYzRmYjBkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKQEAgLTExMyw2ICsxMTMs
MTIgQEAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJGYWN0b3J5OjpnZXREYXRhYmFzZU5hbWVz
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnQKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAor
UGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJGYWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCit7CisgICAgSURCX1RSQUNFKCJJREJGYWN0b3J5OjpvcGVuIik7CisgICAgcmV0dXJuIG9w
ZW5JbnRlcm5hbChjb250ZXh0LCBuYW1lLCAwLCBJbmRleGVkREI6Ok51bGxWZXJzaW9uLCBlYyk7
Cit9CisKIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURCRmFjdG9yeTo6b3BlbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIHVuc2lnbmVk
IGxvbmcgbG9uZyB2ZXJzaW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0Uo
IklEQkZhY3Rvcnk6Om9wZW4iKTsKQEAgLTEyMCwxMyArMTI2LDEzIEBAIFBhc3NSZWZQdHI8SURC
T3BlbkRCUmVxdWVzdD4gSURCRmFjdG9yeTo6b3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBjCiAgICAgICAgIGVjID0gVHlwZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAg
ICB9Ci0gICAgcmV0dXJuIG9wZW5JbnRlcm5hbChjb250ZXh0LCBuYW1lLCB2ZXJzaW9uLCBlYyk7
CisgICAgcmV0dXJuIG9wZW5JbnRlcm5hbChjb250ZXh0LCBuYW1lLCB2ZXJzaW9uLCBJbmRleGVk
REI6Ok5vbk51bGxWZXJzaW9uLCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVz
dD4gSURCRmFjdG9yeTo6b3BlbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBFeGNlcHRpb25Db2RlJiBl
YykKK1Bhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURCRmFjdG9yeTo6b3BlbkludGVybmFs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgdWlu
dDY0X3QgdmVyc2lvbiwgSW5kZXhlZERCOjpWZXJzaW9uTnVsbG5lc3MgdmVyc2lvbk51bGxuZXNz
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1F
bnVtZXJhdGlvbigiV2ViQ29yZS5JbmRleGVkREIuRnJvbnRFbmRBUElDYWxscyIsIElEQk9wZW5D
YWxsLCBJREJNZXRob2RzTWF4KTsKLSAgICBBU1NFUlQodmVyc2lvbiA+PSAxIHx8IHZlcnNpb24g
PT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKTsKKyAgICBBU1NFUlQodmVyc2lv
biA+PSAxIHx8IHZlcnNpb25OdWxsbmVzcyA9PSBJbmRleGVkREI6Ok51bGxWZXJzaW9uKTsKICAg
ICBpZiAobmFtZS5pc051bGwoKSkgewogICAgICAgICBlYyA9IFR5cGVFcnJvcjsKICAgICAgICAg
cmV0dXJuIDA7CkBAIC0xMzgsMTkgKzE0NCwxMyBAQCBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVl
c3Q+IElEQkZhY3Rvcnk6Om9wZW5JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjbwog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsPiBkYXRhYmFzZUNhbGxiYWNrcyA9IElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6Y3Jl
YXRlKCk7CisgICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNr
cyA9IElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6Y3JlYXRlKCk7CiAgICAgaW50NjRfdCB0cmFu
c2FjdGlvbklkID0gSURCRGF0YWJhc2U6Om5leHRUcmFuc2FjdGlvbklkKCk7Ci0gICAgUmVmUHRy
PElEQk9wZW5EQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJPcGVuREJSZXF1ZXN0OjpjcmVhdGUoY29u
dGV4dCwgZGF0YWJhc2VDYWxsYmFja3MsIHRyYW5zYWN0aW9uSWQsIHZlcnNpb24pOworICAgIFJl
ZlB0cjxJREJPcGVuREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRl
KGNvbnRleHQsIGRhdGFiYXNlQ2FsbGJhY2tzLCB0cmFuc2FjdGlvbklkLCB2ZXJzaW9uLCB2ZXJz
aW9uTnVsbG5lc3MpOwogICAgIG1fYmFja2VuZC0+b3BlbihuYW1lLCB2ZXJzaW9uLCB0cmFuc2Fj
dGlvbklkLCByZXF1ZXN0LCBkYXRhYmFzZUNhbGxiYWNrcywgY29udGV4dC0+c2VjdXJpdHlPcmln
aW4oKSwgY29udGV4dCwgZ2V0SW5kZXhlZERCRGF0YWJhc2VQYXRoKGNvbnRleHQpKTsKICAgICBy
ZXR1cm4gcmVxdWVzdDsKIH0KIAotUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJGYWN0
b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgSURCX1RSQUNFKCJJREJGYWN0b3J5Ojpv
cGVuIik7Ci0gICAgcmV0dXJuIG9wZW5JbnRlcm5hbChjb250ZXh0LCBuYW1lLCBJREJEYXRhYmFz
ZU1ldGFkYXRhOjpOb0ludFZlcnNpb24sIGVjKTsKLX0KLQogUGFzc1JlZlB0cjxJREJPcGVuREJS
ZXF1ZXN0PiBJREJGYWN0b3J5OjpkZWxldGVEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IElEQl9UUkFDRSgiSURCRmFjdG9yeTo6ZGVsZXRlRGF0YWJhc2UiKTsKQEAgLTE2Niw3ICsxNjYs
NyBAQCBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQkZhY3Rvcnk6OmRlbGV0ZURhdGFi
YXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAot
ICAgIFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCT3BlbkRCUmVxdWVzdDo6
Y3JlYXRlKGNvbnRleHQsIDAsIDAsIElEQkRhdGFiYXNlTWV0YWRhdGE6OkRlZmF1bHRJbnRWZXJz
aW9uKTsKKyAgICBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gcmVxdWVzdCA9IElEQk9wZW5EQlJl
cXVlc3Q6OmNyZWF0ZShjb250ZXh0LCAwLCAwLCAwLCBJbmRleGVkREI6Ok51bGxWZXJzaW9uKTsK
ICAgICBtX2JhY2tlbmQtPmRlbGV0ZURhdGFiYXNlKG5hbWUsIHJlcXVlc3QsIGNvbnRleHQtPnNl
Y3VyaXR5T3JpZ2luKCksIGNvbnRleHQsIGdldEluZGV4ZWREQkRhdGFiYXNlUGF0aChjb250ZXh0
KSk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5LmgKaW5kZXggNDFlMjM4NS4uOTA2NWQ4OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaApAQCAtNjgsNyArNjgsNyBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIElEQkZhY3RvcnkoSURCRmFjdG9yeUJhY2tlbmRJbnRl
cmZhY2UqKTsKIAotICAgIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gb3BlbkludGVybmFs
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVy
c2lvbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4g
b3BlbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUs
IHVpbnQ2NF90IHZlcnNpb24sIEluZGV4ZWREQjo6VmVyc2lvbk51bGxuZXNzLCBFeGNlcHRpb25D
b2RlJik7CiAKICAgICBSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U+IG1fYmFja2Vu
ZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJG
YWN0b3J5LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rvcnku
aWRsCmluZGV4IDkwMTY4YTUuLjg5NmQ2MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaWRsCkBAIC0yOCwxMSArMjgsOCBAQAogICAgIEpTTm9T
dGF0aWNUYWJsZXMsCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQogXSBpbnRlcmZhY2Ug
SURCRmFjdG9yeSB7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEltcGxl
bWVudGVkQXM9Z2V0RGF0YWJhc2VOYW1lcywgUmFpc2VzRXhjZXB0aW9uXSBJREJSZXF1ZXN0IHdl
YmtpdEdldERhdGFiYXNlTmFtZXMoKTsKLQogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25D
b250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIElEQk9wZW5EQlJlcXVlc3Qgb3BlbihET01TdHJpbmcg
bmFtZSwgW0VuZm9yY2VSYW5nZV0gb3B0aW9uYWwgdW5zaWduZWQgbG9uZyBsb25nIHZlcnNpb24p
OwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25d
IElEQk9wZW5EQlJlcXVlc3QgZGVsZXRlRGF0YWJhc2UoRE9NU3RyaW5nIG5hbWUpOwotCiAgICAg
W0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gc2hvcnQg
Y21wKGFueSBmaXJzdCwgYW55IHNlY29uZCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGwKaW5kZXggY2RhY2ZlNi4uYmEwYjBhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmlkbApAQCAtMzEsOCAr
MzEsOCBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgSURCT2JqZWN0U3RvcmUgb2JqZWN0U3RvcmU7CiAgICAgW0ltcGxlbWVu
dGVkQXM9a2V5UGF0aEFueV0gcmVhZG9ubHkgYXR0cmlidXRlIElEQkFueSBrZXlQYXRoOwotICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHVuaXF1ZTsKICAgICByZWFkb25seSBhdHRyaWJ1
dGUgYm9vbGVhbiBtdWx0aUVudHJ5OworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHVu
aXF1ZTsKIAogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNl
cHRpb25dIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2Us
IG9wdGlvbmFsIERPTVN0cmluZyBkaXJlY3Rpb24pOwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihhbnkg
a2V5LCBvcHRpb25hbCBET01TdHJpbmcgZGlyZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmlkbAppbmRleCBjNjBkNzQwLi4wZmVjMzFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5n
ZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2Uu
aWRsCkBAIC0zNCw4ICszNCw4IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gdXBw
ZXJPcGVuOwogCiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4
Y2VwdGlvbl0gc3RhdGljIElEQktleVJhbmdlIG9ubHkoYW55IHZhbHVlKTsKLSAgICBbQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBzdGF0aWMgSURCS2V5
UmFuZ2UgbG93ZXJCb3VuZChhbnkgYm91bmQsIG9wdGlvbmFsIGJvb2xlYW4gb3Blbik7Ci0gICAg
W0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gc3RhdGlj
IElEQktleVJhbmdlIHVwcGVyQm91bmQoYW55IGJvdW5kLCBvcHRpb25hbCBib29sZWFuIG9wZW4p
OworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25d
IHN0YXRpYyBJREJLZXlSYW5nZSBsb3dlckJvdW5kKGFueSBsb3dlciwgb3B0aW9uYWwgYm9vbGVh
biBvcGVuKTsKKyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhj
ZXB0aW9uXSBzdGF0aWMgSURCS2V5UmFuZ2UgdXBwZXJCb3VuZChhbnkgdXBwZXIsIG9wdGlvbmFs
IGJvb2xlYW4gb3Blbik7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJh
aXNlc0V4Y2VwdGlvbl0gc3RhdGljIElEQktleVJhbmdlIGJvdW5kKGFueSBsb3dlciwgYW55IHVw
cGVyLCBvcHRpb25hbCBib29sZWFuIGxvd2VyT3Blbiwgb3B0aW9uYWwgYm9vbGVhbiB1cHBlck9w
ZW4pOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCTWV0YWRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFk
YXRhLmgKaW5kZXggYzNiMzMzNC4uZDM2M2EzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5oCkBAIC03OSwzMSArNzksMzcgQEAgc3RydWN0IElE
Qk9iamVjdFN0b3JlTWV0YWRhdGEgewogfTsKIAogc3RydWN0IElEQkRhdGFiYXNlTWV0YWRhdGEg
ewotICAgIC8vIEZJWE1FOiBUaGVzZSBjYW4gcHJvYmFibHkgYmUgY29sbGFwc2VkIGludG8gMC4K
KworI2lmIFVTRShMRVZFTERCKQorICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgb25seSBoZXJlIHRv
IHN1cHBvcnQgdGhlIGxldmVsZGIgYmFja2VuZCB3aGljaCBpbmNvcnJlY3RseSBoYW5kbGVzIHZl
cnNpb25pbmcuCisgICAgLy8gT25jZSBsZXZlbGRiIHN1cHBvcnRzIGEgc2luZ2xlLCB1aW50NjRf
dCB2ZXJzaW9uIGFuZCB0aHJvd3Mgb3V0IHRoZSBvbGQgc3RyaW5nIHZlcnNpb24sIHRoZXNlCisg
ICAgLy8gc2hvdWxkIGJlIGdvdHRlbiByaWQgb2YuCiAgICAgZW51bSB7CiAgICAgICAgIE5vSW50
VmVyc2lvbiA9IC0xLAogICAgICAgICBEZWZhdWx0SW50VmVyc2lvbiA9IDAKICAgICB9OworI2Vu
ZGlmIC8vIFVTRShMRVZFTERCKQogCiAgICAgdHlwZWRlZiBIYXNoTWFwPGludDY0X3QsIElEQk9i
amVjdFN0b3JlTWV0YWRhdGE+IE9iamVjdFN0b3JlTWFwOwogCiAgICAgSURCRGF0YWJhc2VNZXRh
ZGF0YSgpCi0gICAgICAgIDogaW50VmVyc2lvbihOb0ludFZlcnNpb24pCisgICAgICAgIDogaWQo
MCkKKyAgICAgICAgLCB2ZXJzaW9uKDApCisgICAgICAgICwgbWF4T2JqZWN0U3RvcmVJZCgwKQog
ICAgIHsKICAgICB9Ci0gICAgSURCRGF0YWJhc2VNZXRhZGF0YShjb25zdCBTdHJpbmcmIG5hbWUs
IGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgaW50NjRfdCBpbnRWZXJzaW9uLCBp
bnQ2NF90IG1heE9iamVjdFN0b3JlSWQpCisKKyAgICBJREJEYXRhYmFzZU1ldGFkYXRhKGNvbnN0
IFN0cmluZyYgbmFtZSwgaW50NjRfdCBpZCwgdWludDY0X3QgdmVyc2lvbiwgaW50NjRfdCBtYXhP
YmplY3RTdG9yZUlkKQogICAgICAgICA6IG5hbWUobmFtZSkKICAgICAgICAgLCBpZChpZCkKICAg
ICAgICAgLCB2ZXJzaW9uKHZlcnNpb24pCi0gICAgICAgICwgaW50VmVyc2lvbihpbnRWZXJzaW9u
KQogICAgICAgICAsIG1heE9iamVjdFN0b3JlSWQobWF4T2JqZWN0U3RvcmVJZCkKICAgICB7CiAg
ICAgfQogCiAgICAgU3RyaW5nIG5hbWU7CiAgICAgaW50NjRfdCBpZDsKLSAgICBTdHJpbmcgdmVy
c2lvbjsKLSAgICBpbnQ2NF90IGludFZlcnNpb247CisgICAgdWludDY0X3QgdmVyc2lvbjsKICAg
ICBpbnQ2NF90IG1heE9iamVjdFN0b3JlSWQ7CiAKICAgICBPYmplY3RTdG9yZU1hcCBvYmplY3RT
dG9yZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
YmplY3RTdG9yZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmpl
Y3RTdG9yZS5pZGwKaW5kZXggYzcyYTkxYi4uNDYzYjlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbApAQCAtMzgsMTIgKzM4
LDExIEBACiAgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBSYWlzZXNFeGNlcHRpb25dIElEQlJl
cXVlc3QgYWRkKGFueSB2YWx1ZSwgb3B0aW9uYWwgYW55IGtleSk7CiAgICAgW0NhbGxXaXRoPVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIEltcGxlbWVudGVkQXM9ZGVsZXRlRnVuY3Rpb24sIFJhaXNl
c0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBkZWxldGUoSURCS2V5UmFuZ2U/IGtleVJhbmdlKTsKICAg
ICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSW1wbGVtZW50ZWRBcz1kZWxldGVG
dW5jdGlvbiwgUmFpc2VzRXhjZXB0aW9uXSBJREJSZXF1ZXN0IGRlbGV0ZShhbnkga2V5KTsKLSAg
ICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBJREJS
ZXF1ZXN0IGNsZWFyKCk7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJh
aXNlc0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBnZXQoSURCS2V5UmFuZ2U/IGtleSk7CiAgICAgW0Nh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gSURCUmVxdWVz
dCBnZXQoYW55IGtleSk7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJh
aXNlc0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBjbGVhcigpOwogICAgIFtDYWxsV2l0aD1TY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihv
cHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UsIG9wdGlvbmFsIERPTVN0cmluZyBkaXJlY3Rpb24p
OwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25d
IElEQlJlcXVlc3Qgb3BlbkN1cnNvcihhbnkga2V5LCBvcHRpb25hbCBET01TdHJpbmcgZGlyZWN0
aW9uKTsKLQogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBDdXN0b20sIFJh
aXNlc0V4Y2VwdGlvbl0gSURCSW5kZXggY3JlYXRlSW5kZXgoRE9NU3RyaW5nIG5hbWUsIHNlcXVl
bmNlPERPTVN0cmluZz4ga2V5UGF0aCwgb3B0aW9uYWwgRGljdGlvbmFyeSBvcHRpb25zKTsKICAg
ICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQ3VzdG9tLCBSYWlzZXNFeGNlcHRp
b25dIElEQkluZGV4IGNyZWF0ZUluZGV4KERPTVN0cmluZyBuYW1lLCBET01TdHJpbmcga2V5UGF0
aCwgb3B0aW9uYWwgRGljdGlvbmFyeSBvcHRpb25zKTsKICAgICBbUmFpc2VzRXhjZXB0aW9uXSBJ
REJJbmRleCBpbmRleChET01TdHJpbmcgbmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCmluZGV4IDU2ZTBmMTYuLjll
MmYwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9w
ZW5EQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9wZW5EQlJlcXVlc3QuY3BwCkBAIC0zNywxOCArMzcsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1QYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQk9wZW5EQlJlcXVlc3Q6OmNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzSW1wbD4gY2FsbGJhY2tzLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0
X3QgdmVyc2lvbikKK1Bhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURCT3BlbkRCUmVxdWVz
dDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURC
RGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcywgaW50NjRfdCB0cmFuc2FjdGlvbklkLCB1aW50
NjRfdCB2ZXJzaW9uLCBJbmRleGVkREI6OlZlcnNpb25OdWxsbmVzcyB2ZXJzaW9uTnVsbG5lc3Mp
CiB7Ci0gICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IHJlcXVlc3QoYWRvcHRSZWYobmV3IElE
Qk9wZW5EQlJlcXVlc3QoY29udGV4dCwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbklkLCB2ZXJzaW9u
KSkpOworICAgIFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiByZXF1ZXN0KGFkb3B0UmVmKG5ldyBJ
REJPcGVuREJSZXF1ZXN0KGNvbnRleHQsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb25JZCwgdmVyc2lv
biwgdmVyc2lvbk51bGxuZXNzKSkpOwogICAgIHJlcXVlc3QtPnN1c3BlbmRJZk5lZWRlZCgpOwog
ICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAotSURCT3BlbkRCUmVxdWVzdDo6SURC
T3BlbkRCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRy
PElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gY2FsbGJhY2tzLCBpbnQ2NF90IHRyYW5zYWN0aW9u
SWQsIGludDY0X3QgdmVyc2lvbikKK0lEQk9wZW5EQlJlcXVlc3Q6OklEQk9wZW5EQlJlcXVlc3Qo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNh
bGxiYWNrcz4gY2FsbGJhY2tzLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIHVpbnQ2NF90IHZlcnNp
b24sIEluZGV4ZWREQjo6VmVyc2lvbk51bGxuZXNzIHZlcnNpb25OdWxsbmVzcykKICAgICA6IElE
QlJlcXVlc3QoY29udGV4dCwgSURCQW55OjpjcmVhdGVOdWxsKCksIElEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZTo6Tm9ybWFsVGFzaywgMCkKICAgICAsIG1fZGF0YWJhc2VDYWxsYmFja3MoY2Fs
bGJhY2tzKQogICAgICwgbV90cmFuc2FjdGlvbklkKHRyYW5zYWN0aW9uSWQpCiAgICAgLCBtX3Zl
cnNpb24odmVyc2lvbikKKyAgICAsIG1fdmVyc2lvbk51bGxuZXNzKHZlcnNpb25OdWxsbmVzcykK
IHsKICAgICBBU1NFUlQoIW1fcmVzdWx0KTsKIH0KQEAgLTYyLDE2ICs2MywxNiBAQCBFdmVudFRh
cmdldEludGVyZmFjZSBJREJPcGVuREJSZXF1ZXN0OjpldmVudFRhcmdldEludGVyZmFjZSgpIGNv
bnN0CiAgICAgcmV0dXJuIElEQk9wZW5EQlJlcXVlc3RFdmVudFRhcmdldEludGVyZmFjZVR5cGU7
CiB9CiAKLXZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25CbG9ja2VkKGludDY0X3Qgb2xkVmVyc2lv
bikKK3ZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25CbG9ja2VkKHVpbnQ2NF90IG9sZFZlcnNpb24p
CiB7CiAgICAgSURCX1RSQUNFKCJJREJPcGVuREJSZXF1ZXN0OjpvbkJsb2NrZWQoKSIpOwogICAg
IGlmICghc2hvdWxkRW5xdWV1ZUV2ZW50KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBSZWZQdHI8
SURCQW55PiBuZXdWZXJzaW9uQW55ID0gKG1fdmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRh
OjpEZWZhdWx0SW50VmVyc2lvbikgPyBJREJBbnk6OmNyZWF0ZU51bGwoKSA6IElEQkFueTo6Y3Jl
YXRlKG1fdmVyc2lvbik7Ci0gICAgZW5xdWV1ZUV2ZW50KElEQlZlcnNpb25DaGFuZ2VFdmVudDo6
Y3JlYXRlKElEQkFueTo6Y3JlYXRlKG9sZFZlcnNpb24pLCBuZXdWZXJzaW9uQW55LnJlbGVhc2Uo
KSwgZXZlbnROYW1lcygpLmJsb2NrZWRFdmVudCkpOworICAgIAorICAgIGVucXVldWVFdmVudChJ
REJWZXJzaW9uQ2hhbmdlRXZlbnQ6OmNyZWF0ZShvbGRWZXJzaW9uLCBtX3ZlcnNpb24sIG1fdmVy
c2lvbk51bGxuZXNzLCBldmVudE5hbWVzKCkuYmxvY2tlZEV2ZW50KSk7CiB9CiAKLXZvaWQgSURC
T3BlbkRCUmVxdWVzdDo6b25VcGdyYWRlTmVlZGVkKGludDY0X3Qgb2xkVmVyc2lvbiwgUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IHBycERhdGFiYXNlQmFja2VuZCwgY29u
c3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0YWRhdGEpCit2b2lkIElEQk9wZW5EQlJlcXVlc3Q6
Om9uVXBncmFkZU5lZWRlZCh1aW50NjRfdCBvbGRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQmFja2VuZEludGVyZmFjZT4gcHJwRGF0YWJhc2VCYWNrZW5kLCBjb25zdCBJREJEYXRhYmFz
ZU1ldGFkYXRhJiBtZXRhZGF0YSkKIHsKICAgICBJREJfVFJBQ0UoIklEQk9wZW5EQlJlcXVlc3Q6
Om9uVXBncmFkZU5lZWRlZCgpIik7CiAgICAgaWYgKG1fY29udGV4dFN0b3BwZWQgfHwgIXNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSkgewpAQCAtOTIsMTkgKzkzLDE1IEBAIHZvaWQgSURCT3BlbkRC
UmVxdWVzdDo6b25VcGdyYWRlTmVlZGVkKGludDY0X3Qgb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzCiAgICAgbV9kYXRhYmFzZUNhbGxiYWNrcy0+Y29ubmVjdChpZGJEYXRhYmFzZS5n
ZXQoKSk7CiAgICAgbV9kYXRhYmFzZUNhbGxiYWNrcyA9IDA7CiAKLSAgICBpZiAob2xkVmVyc2lv
biA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24pIHsKLSAgICAgICAgLy8gVGhp
cyBkYXRhYmFzZSBoYXNuJ3QgaGFkIGFuIGludGVnZXIgdmVyc2lvbiBiZWZvcmUuCi0gICAgICAg
IG9sZFZlcnNpb24gPSBJREJEYXRhYmFzZU1ldGFkYXRhOjpEZWZhdWx0SW50VmVyc2lvbjsKLSAg
ICB9CiAgICAgSURCRGF0YWJhc2VNZXRhZGF0YSBvbGRNZXRhZGF0YShtZXRhZGF0YSk7Ci0gICAg
b2xkTWV0YWRhdGEuaW50VmVyc2lvbiA9IG9sZFZlcnNpb247CisgICAgb2xkTWV0YWRhdGEudmVy
c2lvbiA9IG9sZFZlcnNpb247CiAKICAgICBtX3RyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb246
OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fdHJhbnNhY3Rpb25JZCwgaWRiRGF0
YWJhc2UuZ2V0KCksIHRoaXMsIG9sZE1ldGFkYXRhKTsKICAgICBtX3Jlc3VsdCA9IElEQkFueTo6
Y3JlYXRlKGlkYkRhdGFiYXNlLnJlbGVhc2UoKSk7CiAKLSAgICBpZiAobV92ZXJzaW9uID09IElE
QkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbikKKyAgICBpZiAobV92ZXJzaW9uTnVsbG5l
c3MgPT0gSW5kZXhlZERCOjpOdWxsVmVyc2lvbikKICAgICAgICAgbV92ZXJzaW9uID0gMTsKLSAg
ICBlbnF1ZXVlRXZlbnQoSURCVmVyc2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUoSURCQW55OjpjcmVh
dGUob2xkVmVyc2lvbiksIElEQkFueTo6Y3JlYXRlKG1fdmVyc2lvbiksIGV2ZW50TmFtZXMoKS51
cGdyYWRlbmVlZGVkRXZlbnQpKTsKKyAgICBlbnF1ZXVlRXZlbnQoSURCVmVyc2lvbkNoYW5nZUV2
ZW50OjpjcmVhdGUob2xkVmVyc2lvbiwgbV92ZXJzaW9uLCBtX3ZlcnNpb25OdWxsbmVzcywgZXZl
bnROYW1lcygpLnVwZ3JhZGVuZWVkZWRFdmVudCkpOwogfQogCiB2b2lkIElEQk9wZW5EQlJlcXVl
c3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gcHJw
QmFja2VuZCwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0YWRhdGEpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmgKaW5kZXgg
MmZjZWQ5OC4uOTYwNDU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaApAQCAtMjksMjAgKzI5LDIxIEBACiAjaWYgRU5BQkxF
KElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRlICJJREJSZXF1ZXN0LmgiCisjaW5jbHVkZSAi
SW5kZXhlZERCLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgSURCRGF0YWJhc2VD
YWxsYmFja3NJbXBsOworY2xhc3MgSURCRGF0YWJhc2VDYWxsYmFja3M7CiAKIGNsYXNzIElEQk9w
ZW5EQlJlcXVlc3QgOiBwdWJsaWMgSURCUmVxdWVzdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4sIGludDY0X3QgdHJhbnNhY3Rp
b25JZCwgaW50NjRfdCB2ZXJzaW9uKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVuREJS
ZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VDYWxsYmFja3M+LCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIHVpbnQ2NF90IHZlcnNpb24s
IEluZGV4ZWREQjo6VmVyc2lvbk51bGxuZXNzKTsKICAgICB2aXJ0dWFsIH5JREJPcGVuREJSZXF1
ZXN0KCk7CiAKICAgICB1c2luZyBJREJSZXF1ZXN0OjpvblN1Y2Nlc3M7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgb25CbG9ja2VkKGludDY0X3QgZXhpc3RpbmdWZXJzaW9uKSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIHZvaWQgb25VcGdyYWRlTmVlZGVkKGludDY0X3Qgb2xkVmVyc2lvbiwgUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+LCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRh
JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZCh1aW50NjRfdCBleGlzdGlu
Z1ZlcnNpb24pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBvblVwZ3JhZGVOZWVkZWQodWlu
dDY0X3Qgb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+
LCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lk
IG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4sIGNvbnN0
IElEQkRhdGFiYXNlTWV0YWRhdGEmKSBPVkVSUklERTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CkBA
IC01NiwxMSArNTcsMTIgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbnF1
ZXVlRXZlbnQoKSBjb25zdCBPVkVSUklERTsKIAogcHJpdmF0ZToKLSAgICBJREJPcGVuREJSZXF1
ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJh
Y2tzSW1wbD4sIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCB2ZXJzaW9uKTsKKyAgICBJ
REJPcGVuREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPiwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCB1aW50NjRfdCB2ZXJzaW9u
LCBJbmRleGVkREI6OlZlcnNpb25OdWxsbmVzcyk7CiAKLSAgICBSZWZQdHI8SURCRGF0YWJhc2VD
YWxsYmFja3NJbXBsPiBtX2RhdGFiYXNlQ2FsbGJhY2tzOworICAgIFJlZlB0cjxJREJEYXRhYmFz
ZUNhbGxiYWNrcz4gbV9kYXRhYmFzZUNhbGxiYWNrczsKICAgICBjb25zdCBpbnQ2NF90IG1fdHJh
bnNhY3Rpb25JZDsKLSAgICBpbnQ2NF90IG1fdmVyc2lvbjsKKyAgICB1aW50NjRfdCBtX3ZlcnNp
b247CisgICAgSW5kZXhlZERCOjpWZXJzaW9uTnVsbG5lc3MgbV92ZXJzaW9uTnVsbG5lc3M7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4IDQ3ZjU1ZmYuLjFkOWZlNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCkBAIC0xMjAs
MTUgKzEyMCw2IEBAIHVuc2lnbmVkIHNob3J0IElEQlJlcXVlc3Q6OmVycm9yQ29kZShFeGNlcHRp
b25Db2RlJiBlYykgY29uc3QKICAgICByZXR1cm4gbV9lcnJvckNvZGU7CiB9CiAKLVN0cmluZyBJ
REJSZXF1ZXN0Ojp3ZWJraXRFcnJvck1lc3NhZ2UoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Ci17
Ci0gICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBET05FKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJh
c2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yOwotICAgICAgICByZXR1cm4gU3RyaW5nKCk7
Ci0gICAgfQotICAgIHJldHVybiBtX2Vycm9yTWVzc2FnZTsKLX0KLQogUGFzc1JlZlB0cjxJREJB
bnk+IElEQlJlcXVlc3Q6OnNvdXJjZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc291cmNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCmluZGV4IGU1
Y2NjYjQuLjI1ZjI4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJSZXF1ZXN0LmgKQEAgLTU5LDcgKzU5LDYgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SURC
QW55PiByZXN1bHQoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIHVuc2lnbmVkIHNob3J0IGVy
cm9yQ29kZShFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxET01FcnJvcj4g
ZXJyb3IoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwotICAgIFN0cmluZyB3ZWJraXRFcnJvck1lc3Nh
Z2UoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2Uo
KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbigpIGNv
bnN0OwogICAgIHZvaWQgcHJldmVudFByb3BhZ2F0aW9uKCkgeyBtX3ByZXZlbnRQcm9wYWdhdGlv
biA9IHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlJlcXVlc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVx
dWVzdC5pZGwKaW5kZXggMDA2ZmMxNC4uMTU3NWI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5pZGwKQEAgLTMyLDI3ICszMiwxMyBAQAogICAg
IEFjdGl2ZURPTU9iamVjdCwKICAgICBFdmVudFRhcmdldCwKICAgICBKU05vU3RhdGljVGFibGVz
Ci1dIGludGVyZmFjZSBJREJSZXF1ZXN0IHsKK10gaW50ZXJmYWNlIElEQlJlcXVlc3QgOiBFdmVu
dFRhcmdldCB7CiAgICAgW0dldHRlclJhaXNlc0V4Y2VwdGlvbl0gcmVhZG9ubHkgYXR0cmlidXRl
IElEQkFueSByZXN1bHQ7CiAgICAgW0dldHRlclJhaXNlc0V4Y2VwdGlvbl0gcmVhZG9ubHkgYXR0
cmlidXRlIERPTUVycm9yIGVycm9yOwotICAgIFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPVVu
ZGVmaW5lZCwgR2V0dGVyUmFpc2VzRXhjZXB0aW9uXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIHdlYmtpdEVycm9yTWVzc2FnZTsKLQogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJBbnkg
c291cmNlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJUcmFuc2FjdGlvbiB0cmFuc2FjdGlv
bjsKLQotICAgIC8vIFN0YXRlcwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgcmVh
ZHlTdGF0ZTsKIAotICAgIC8vIEV2ZW50cwogICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
c3VjY2VzczsKICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVycm9yOwotCi0gICAgLy8g
RXZlbnRUYXJnZXQgaW50ZXJmYWNlCi0gICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKERPTVN0cmlu
ZyB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudExpc3RlbmVyIGxpc3RlbmVy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBib29sZWFuIHVzZUNhcHR1cmUp
OwotICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihET01TdHJpbmcgdHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiB1c2VDYXB0dXJlKTsKLSAgICBbUmFp
c2VzRXhjZXB0aW9uXSBib29sZWFuIGRpc3BhdGNoRXZlbnQoRXZlbnQgZXZ0KTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAK
aW5kZXggMDBiZGE0Yy4uMmRmYjhjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtMTM4LDExICsxMzgsNiBAQCB2b2lk
IElEQlRyYW5zYWN0aW9uOjpzZXRFcnJvcihQYXNzUmVmUHRyPERPTUVycm9yPiBlcnJvciwgY29u
c3QgU3RyaW5nJiBlcnJvck1lcwogICAgIH0KIH0KIAotU3RyaW5nIElEQlRyYW5zYWN0aW9uOjp3
ZWJraXRFcnJvck1lc3NhZ2UoKSBjb25zdAotewotICAgIHJldHVybiBtX2Vycm9yTWVzc2FnZTsK
LX0KLQogUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURCVHJhbnNhY3Rpb246Om9iamVjdFN0
b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG1f
c3RhdGUgPT0gRmluaXNoZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5oCmluZGV4IDg5NzAxNTQuLmQxODU5ZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaApAQCAtOTcs
NyArOTcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBvYmplY3RTdG9yZURlbGV0ZWQoY29uc3QgU3Ry
aW5nJik7CiAgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCk7CiAgICAgdm9pZCBzZXRFcnJvcihQYXNz
UmVmUHRyPERPTUVycm9yPiwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOwotICAgIFN0cmlu
ZyB3ZWJraXRFcnJvck1lc3NhZ2UoKSBjb25zdDsKIAogICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIoYWJvcnQpOwogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
Y29tcGxldGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb24uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uaWRsCmluZGV4IDY0N2VmZTEuLjhlYWM5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5pZGwKQEAgLTI5LDI4
ICsyOSwxNSBAQAogICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBFdmVudFRhcmdldCwKICAgICBK
U05vU3RhdGljVGFibGVzCi1dIGludGVyZmFjZSBJREJUcmFuc2FjdGlvbiB7Ci0KLSAgICAvLyBQ
cm9wZXJ0aWVzCitdIGludGVyZmFjZSBJREJUcmFuc2FjdGlvbiA6IEV2ZW50VGFyZ2V0IHsKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG1vZGU7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIElEQkRhdGFiYXNlIGRiOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01FcnJvciBlcnJv
cjsKLSAgICBbVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1VbmRlZmluZWRdIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgd2Via2l0RXJyb3JNZXNzYWdlOwogCi0gICAgLy8gTWV0aG9kcwog
ICAgIFtSYWlzZXNFeGNlcHRpb25dIElEQk9iamVjdFN0b3JlIG9iamVjdFN0b3JlIChET01TdHJp
bmcgbmFtZSk7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBhYm9ydCAoKTsKIAotICAgIC8v
IEV2ZW50cwogICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWJvcnQ7CiAgICAgYXR0cmli
dXRlIEV2ZW50TGlzdGVuZXIgb25jb21wbGV0ZTsKICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5l
ciBvbmVycm9yOwotICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQotICAgIHZvaWQgYWRkRXZl
bnRMaXN0ZW5lcihET01TdHJpbmcgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRXZl
bnRMaXN0ZW5lciBsaXN0ZW5lciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwg
Ym9vbGVhbiB1c2VDYXB0dXJlKTsKLSAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoRE9NU3Ry
aW5nIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50TGlzdGVuZXIgbGlz
dGVuZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gdXNl
Q2FwdHVyZSk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gYm9vbGVhbiBkaXNwYXRjaEV2ZW50KEV2
ZW50IGV2dCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAKaW5kZXggMGM4NjFhZi4uOTRmM2MwMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNo
YW5nZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJW
ZXJzaW9uQ2hhbmdlRXZlbnQuY3BwCkBAIC0yOCwyMCArMjgsMTMgQEAKIAogI2lmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQogCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIklE
QkFueS5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8SURCVmVyc2lvbkNo
YW5nZUV2ZW50PiBJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OmNyZWF0ZShQYXNzUmVmUHRyPElEQkFu
eT4gb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJBbnk+IG5ld1ZlcnNpb24sIGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlKQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCVmVyc2lv
bkNoYW5nZUV2ZW50KG9sZFZlcnNpb24sIG5ld1ZlcnNpb24sIGV2ZW50VHlwZSkpOwotfQotCi1J
REJWZXJzaW9uQ2hhbmdlRXZlbnQ6OklEQlZlcnNpb25DaGFuZ2VFdmVudChQYXNzUmVmUHRyPElE
QkFueT4gb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJBbnk+IG5ld1ZlcnNpb24sIGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlKQorSURCVmVyc2lvbkNoYW5nZUV2ZW50OjpJREJWZXJzaW9u
Q2hhbmdlRXZlbnQodW5zaWduZWQgbG9uZyBsb25nIG9sZFZlcnNpb24sIHVuc2lnbmVkIGxvbmcg
bG9uZyBuZXdWZXJzaW9uLCBJbmRleGVkREI6OlZlcnNpb25OdWxsbmVzcyBuZXdWZXJzaW9uTnVs
bG5lc3MsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKQogICAgIDogRXZlbnQoZXZlbnRU
eXBlLCBmYWxzZSAvKmNhbkJ1YmJsZSovLCBmYWxzZSAvKmNhbmNlbGFibGUqLykKICAgICAsIG1f
b2xkVmVyc2lvbihvbGRWZXJzaW9uKQogICAgICwgbV9uZXdWZXJzaW9uKG5ld1ZlcnNpb24pCisg
ICAgLCBtX25ld1ZlcnNpb25OdWxsbmVzcyhuZXdWZXJzaW9uTnVsbG5lc3MpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFu
Z2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNo
YW5nZUV2ZW50LmgKaW5kZXggZDA4NGViMi4uOTQ4MGNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmgKQEAg
LTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUg
IkV2ZW50LmgiCi0jaW5jbHVkZSAiSURCQW55LmgiCisjaW5jbHVkZSAiSW5kZXhlZERCLmgiCiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0zOCwxOSArMzgsMjQgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBJREJWZXJzaW9uQ2hhbmdlRXZlbnQgOiBwdWJsaWMgRXZlbnQg
ewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlZlcnNpb25DaGFuZ2VFdmVudD4g
Y3JlYXRlKFBhc3NSZWZQdHI8SURCQW55PiBvbGRWZXJzaW9uID0gSURCQW55OjpjcmVhdGVOdWxs
KCksIFBhc3NSZWZQdHI8SURCQW55PiBuZXdWZXJzaW9uID0gSURCQW55OjpjcmVhdGVOdWxsKCks
IGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlID0gQXRvbWljU3RyaW5nKCkpOworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPElEQlZlcnNpb25DaGFuZ2VFdmVudD4gY3JlYXRlKHVuc2lnbmVkIGxv
bmcgbG9uZyBvbGRWZXJzaW9uID0gMCwgdW5zaWduZWQgbG9uZyBsb25nIG5ld1ZlcnNpb24gPSAw
LCBJbmRleGVkREI6OlZlcnNpb25OdWxsbmVzcyBuZXdWZXJzaW9uTnVsbG5lc3MgPSBJbmRleGVk
REI6Ok51bGxWZXJzaW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSA9IEF0b21pY1N0
cmluZygpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJREJWZXJzaW9uQ2hh
bmdlRXZlbnQob2xkVmVyc2lvbiwgbmV3VmVyc2lvbiwgbmV3VmVyc2lvbk51bGxuZXNzLCBldmVu
dFR5cGUpKTsKKyAgICB9CisKICAgICB2aXJ0dWFsIH5JREJWZXJzaW9uQ2hhbmdlRXZlbnQoKTsK
IAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJBbnk+IG9sZFZlcnNpb24oKSB7IHJldHVybiBt
X29sZFZlcnNpb247IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQW55PiBuZXdWZXJzaW9u
KCkgeyByZXR1cm4gbV9uZXdWZXJzaW9uOyB9CisgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGxv
bmcgb2xkVmVyc2lvbigpIHsgcmV0dXJuIG1fb2xkVmVyc2lvbjsgfQorICAgIHZpcnR1YWwgdW5z
aWduZWQgbG9uZyBsb25nIG5ld1ZlcnNpb24oYm9vbCYgaXNOdWxsKSB7IGlzTnVsbCA9IChtX25l
d1ZlcnNpb25OdWxsbmVzcyA9PSBJbmRleGVkREI6Ok51bGxWZXJzaW9uKTsgcmV0dXJuIG1fbmV3
VmVyc2lvbjsgfQogCiAgICAgdmlydHVhbCBFdmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgp
IGNvbnN0OwogCiBwcml2YXRlOgotICAgIElEQlZlcnNpb25DaGFuZ2VFdmVudChQYXNzUmVmUHRy
PElEQkFueT4gb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJBbnk+IG5ld1ZlcnNpb24sIGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKKyAgICBJREJWZXJzaW9uQ2hhbmdlRXZlbnQodW5z
aWduZWQgbG9uZyBsb25nIG9sZFZlcnNpb24sIHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdWZXJzaW9u
LCBJbmRleGVkREI6OlZlcnNpb25OdWxsbmVzcyBuZXdWZXJzaW9uTnVsbG5lc3MsIGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKIAotICAgIFJlZlB0cjxJREJBbnk+IG1fb2xkVmVyc2lv
bjsKLSAgICBSZWZQdHI8SURCQW55PiBtX25ld1ZlcnNpb247CisgICAgdW5zaWduZWQgbG9uZyBs
b25nIG1fb2xkVmVyc2lvbjsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbV9uZXdWZXJzaW9uOwor
ICAgIEluZGV4ZWREQjo6VmVyc2lvbk51bGxuZXNzIG1fbmV3VmVyc2lvbk51bGxuZXNzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5pZGwKaW5kZXggZTkyMTky
OC4uOGQxMWM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVmVyc2lvbkNoYW5nZUV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaWRsCkBAIC0yNyw2ICsyNyw2IEBACiAgICAg
Q29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRSwKICAgICBKU05vU3RhdGljVGFibGVzCiBdIGlu
dGVyZmFjZSBJREJWZXJzaW9uQ2hhbmdlRXZlbnQgOiBFdmVudCB7Ci0gICAgcmVhZG9ubHkgYXR0
cmlidXRlIElEQkFueSBvbGRWZXJzaW9uOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJBbnkg
bmV3VmVyc2lvbjsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsb25nIG9s
ZFZlcnNpb247CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZz8gbmV3
VmVyc2lvbjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JbmRleGVkREIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWRE
Qi5oCmluZGV4IDJlODRmYzcuLmNiN2U4ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0luZGV4ZWREQi5oCkBAIC01MCw2ICs1MCwxMSBAQCBlbnVtIEN1cnNvclR5cGUg
ewogICAgIEN1cnNvcktleU9ubHkKIH07CiAKK2VudW0gVmVyc2lvbk51bGxuZXNzIHsKKyAgICBO
dWxsVmVyc2lvbiwKKyAgICBOb25OdWxsVmVyc2lvbgorfTsKKwogfSAvLyBuYW1lc3BhY2UgSW5k
ZXhlZERCCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9y
ZUxldmVsREIuY3BwCmluZGV4IDUyNTA1NDkuLjc4N2U3MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJCYWNr
aW5nU3RvcmVMZXZlbERCLmNwcApAQCAtNTEwLDcgKzUxMCw5IEBAIGJvb2wgSURCQmFja2luZ1N0
b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCRGF0YWJh
c2VNZXRhCiAgICAgaWYgKCFmb3VuZCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBvayA9
IGdldFN0cmluZyhtX2RiLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUobWV0YWRh
dGEtPmlkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VyVmVyc2lvbiksIG1ldGFkYXRhLT52ZXJz
aW9uLCBmb3VuZCk7CisgICAgLy8gRklYTUU6IFRoZSBzdHJpbmcgdmVyc2lvbiBpcyBubyBsb25n
ZXIgc3VwcG9ydGVkLCBzbyB0aGUgbGV2ZWxEQiBwb3J0cyBzaG91bGQgY29uc2lkZXIgcmVmYWN0
b3Jpbmcgb2ZmIG9mIGl0LgorICAgIFN0cmluZyBzdHJpbmdWZXJzaW9uOworICAgIG9rID0gZ2V0
U3RyaW5nKG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShtZXRhZGF0YS0+
aWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJWZXJzaW9uKSwgc3RyaW5nVmVyc2lvbiwgZm91
bmQpOwogICAgIGlmICghb2spIHsKICAgICAgICAgSU5URVJOQUxfUkVBRF9FUlJPUihHZXRJREJE
YXRhYmFzZU1ldGFEYXRhKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTIwLDcgKzUyMiw4
IEBAIGJvb2wgSURCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0
cmluZyYgbmFtZSwgSURCRGF0YWJhc2VNZXRhCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAKLSAgICBvayA9IGdldFZhckludChtX2RiLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5Ojpl
bmNvZGUobWV0YWRhdGEtPmlkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VySW50VmVyc2lvbiks
IG1ldGFkYXRhLT5pbnRWZXJzaW9uLCBmb3VuZCk7CisgICAgaW50NjRfdCB2ZXJzaW9uOworICAg
IG9rID0gZ2V0VmFySW50KG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZSht
ZXRhZGF0YS0+aWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJJbnRWZXJzaW9uKSwgdmVyc2lv
biwgZm91bmQpOwogICAgIGlmICghb2spIHsKICAgICAgICAgSU5URVJOQUxfUkVBRF9FUlJPUihH
ZXRJREJEYXRhYmFzZU1ldGFEYXRhKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTMwLDgg
KzUzMywxMiBAQCBib29sIElEQkJhY2tpbmdTdG9yZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShj
b25zdCBTdHJpbmcmIG5hbWUsIElEQkRhdGFiYXNlTWV0YQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgaWYgKG1ldGFkYXRhLT5pbnRWZXJzaW9uID09IElEQkRhdGFiYXNlTWV0
YWRhdGE6OkRlZmF1bHRJbnRWZXJzaW9uKQotICAgICAgICBtZXRhZGF0YS0+aW50VmVyc2lvbiA9
IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbjsKKyAgICAvLyBGSVhNRTogVGhlIHZl
cnNpb25pbmcgc2VtYW50aWNzIGhhdmUgY2hhbmdlZCBzaW5jZSB0aGlzIG9yaWdpbmFsIGNvZGUg
d2FzIHdyaXR0ZW4sIGFuZCB3aGF0IHdhcyBvbmNlIGEgbmVnYXRpdmUgbnVtYmVyCisgICAgLy8g
c3RvcmVkIGluIHRoZSBkYXRhYmFzZSBpcyBubyBsb25nZXIgYSB2YWxpZCB2ZXJzaW9uLgorICAg
IC8vIElmIHRoZSBtYWdpYyBuZWdhdGl2ZSB2YWx1ZSBpcyByZXRyaWV2ZWQgZnJvbSB0aGUgZGF0
YWJhc2UKKyAgICBpZiAodmVyc2lvbiA8IDApCisgICAgICAgIHZlcnNpb24gPSAwOworICAgIG1l
dGFkYXRhLT52ZXJzaW9uID0gdmVyc2lvbjsKIAogICAgIG9rID0gZ2V0TWF4T2JqZWN0U3RvcmVJ
ZChtX2RiLmdldCgpLCBtZXRhZGF0YS0+aWQsIG1ldGFkYXRhLT5tYXhPYmplY3RTdG9yZUlkKTsK
ICAgICBpZiAoIW9rKSB7CkBAIC01NjksNiArNTc2LDcgQEAgV0FSTl9VTlVTRURfUkVUVVJOIHN0
YXRpYyBib29sIGdldE5ld0RhdGFiYXNlSWQoTGV2ZWxEQkRhdGFiYXNlKiBkYiwgaW50NjRfdCYg
bmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAorLy8gRklYTUU6IFRoZSB2ZXJzaW9uIHNlbWFudGlj
cyBoYXZlIGNoYW5nZWQuIFN0cmluZyB2ZXJzaW9ucyBubyBsb25nZXIgZXhpc3QsIGFuZCB0aGUg
aW50ZWdlciB2ZXJzaW9uIGlzIG5vdyBhIHVpbnQ2NF90CiBib29sIElEQkJhY2tpbmdTdG9yZTo6
Y3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmlu
ZyYgdmVyc2lvbiwgaW50NjRfdCBpbnRWZXJzaW9uLCBpbnQ2NF90JiByb3dJZCkKIHsKICAgICBi
b29sIG9rID0gZ2V0TmV3RGF0YWJhc2VJZChtX2RiLmdldCgpLCByb3dJZCk7CkBAIC0xODA0LDcg
KzE4MTIsNyBAQCBib29sIEluZGV4Q3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3coKQogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIG9iamVjdFN0b3JlQ3Vyc29yT3B0aW9ucyhMZXZlbERCVHJh
bnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0
U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJbmRleGVkREI6OkN1cnNvckRpcmVj
dGlvbiBkaXJlY3Rpb24sIElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yOjpDdXJzb3JPcHRpb25zJiBj
dXJzb3JPcHRpb25zKQorc3RhdGljIGJvb2wgb2JqZWN0U3RvcmVDdXJzb3JPcHRpb25zKExldmVs
REJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29y
RGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCQmFja2luZ1N0b3JlOjpDdXJzb3I6OkN1cnNvck9wdGlv
bnMmIGN1cnNvck9wdGlvbnMpCiB7CiAgICAgY3Vyc29yT3B0aW9ucy5kYXRhYmFzZUlkID0gZGF0
YWJhc2VJZDsKICAgICBjdXJzb3JPcHRpb25zLm9iamVjdFN0b3JlSWQgPSBvYmplY3RTdG9yZUlk
OwpAQCAtMTg1NCw3ICsxODYyLDcgQEAgYm9vbCBvYmplY3RTdG9yZUN1cnNvck9wdGlvbnMoTGV2
ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUkKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotYm9vbCBpbmRleEN1cnNvck9wdGlvbnMoTGV2ZWxEQlRyYW5zYWN0aW9u
KiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQs
IGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJbmRleGVkREI6OkN1
cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yOjpDdXJzb3JP
cHRpb25zJiBjdXJzb3JPcHRpb25zKQorc3RhdGljIGJvb2wgaW5kZXhDdXJzb3JPcHRpb25zKExl
dmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRf
dCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiByYW5n
ZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJCYWNraW5nU3RvcmU6
OkN1cnNvcjo6Q3Vyc29yT3B0aW9ucyYgY3Vyc29yT3B0aW9ucykKIHsKICAgICBBU1NFUlQodHJh
bnNhY3Rpb24pOwogICAgIGlmICghS2V5UHJlZml4Ojp2YWxpZElkcyhkYXRhYmFzZUlkLCBvYmpl
Y3RTdG9yZUlkLCBpbmRleElkKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2xldmVsZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkxldmVsREJDb2RpbmcuY3BwCmluZGV4IDA0ZTQy
NTkuLjAwOGNiMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2xldmVsZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvbGV2ZWxkYi9JREJMZXZlbERCQ29kaW5nLmNwcApAQCAtNTgwLDcgKzU4MCw3
IEBAIHN0YXRpYyBJREJLZXk6OlR5cGUga2V5VHlwZUJ5dGVUb0tleVR5cGUodW5zaWduZWQgY2hh
ciB0eXBlKQogICAgIHJldHVybiBJREJLZXk6OkludmFsaWRUeXBlOwogfQogCi1pbnQgY29tcGFy
ZUVuY29kZWRJREJLZXlzKGNvbnN0IGNoYXIqJiBwdHJBLCBjb25zdCBjaGFyKiBsaW1pdEEsIGNv
bnN0IGNoYXIqJiBwdHJCLCBjb25zdCBjaGFyKiBsaW1pdEIsIGJvb2wmIG9rKQorc3RhdGljIGlu
dCBjb21wYXJlRW5jb2RlZElEQktleXMoY29uc3QgY2hhciomIHB0ckEsIGNvbnN0IGNoYXIqIGxp
bWl0QSwgY29uc3QgY2hhciomIHB0ckIsIGNvbnN0IGNoYXIqIGxpbWl0QiwgYm9vbCYgb2spCiB7
CiAgICAgb2sgPSB0cnVlOwogICAgIEFTU0VSVCgmcHRyQSAhPSAmcHRyQik7Cg==
</data>
<flag name="review"
          id="235101"
          type_id="1"
          status="+"
          setter="ap"
    />
    <flag name="commit-queue"
          id="235104"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212845</attachid>
            <date>2013-09-27 15:10:39 -0700</date>
            <delta_ts>2013-09-27 15:47:43 -0700</delta_ts>
            <desc>Patch v3 - Give LevelDB ewses another shot</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>54910</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNGRiYjhhLi4wMDIxOTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTYg
QEAKKzIwMTMtMDktMjcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIEluZGV4ZWREQiBJREwgUmVmYWN0b3JpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE5OTYKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4
ZXkgUHJvc2t1cnlha292LgorCisgICAgICAgIFRoaXMgaW5jbHVkZXM6CisgICAgICAgIDEgLSBM
ZXZlcmFnaW5nIEV2ZW50VGFyZ2V0LmlkbCBpbmhlcml0YW5jZQorICAgICAgICAyIC0gUmVtb3Zp
bmcgY29tbWVudHMKKyAgICAgICAgMyAtIFJlb3JkZXJpbmcgdG8gbWF0Y2ggdGhlIHNwZWMncyBJ
RExzCisgICAgICAgIDQgLSBSZW1vdmluZyBub25zdGFuZGFyZCwgV2ViS2l0LXNwZWNpZmljIG1l
dGhvZHMKKyAgICAgICAgNSAtIFVwZGF0aW5nIGludGVyZmFjZXMgdG8gbWF0Y2ggdGhlIHNwZWMg
KHZlcnNpb25zIGFyZSBvbmx5IHVpbnQ2NF90J3Mgbm93Li4uKQorICAgICAgICA2IC0gVXBkYXRp
bmcgaW1wbGVtZW50YXRpb24gY29kZSBhcyBuZWVkZWQgKHZlcnNpb25zIGFyZSBvbmx5IHVpbnQ2
NF90J3Mgbm93Li4uKQorCisgICAgICAgIElETCBjaGFuZ2VzOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvci5pZGw6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaWRs
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5pZGw6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuaWRsOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQu
aWRsOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSW5kZXhlZERCLmg6IEFkZCBuZXcg
ZW51bSB0byByZXByZXNlbnQgdmVyc2lvbiBudWxsbmVzcy4KKworICAgICAgICBBZGFwdCB0byBu
ZXcgSURMcywgYW5kIGFsc28gcmVmYWN0b3IgcmVwcmVzZW50YXRpb24gb2YgaW5pdGlhbCwgbnVs
bCB2ZXJzaW9uaW5nOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5o
OgorICAgICAgICAoV2ViQ29yZTo6SURCQ2FsbGJhY2tzOjpvbkJsb2NrZWQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2FsbGJhY2tzOjpvblVwZ3JhZGVOZWVkZWQpOgorCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2U6OnZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6Om9uVmVyc2lv
bkNoYW5nZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaDoKKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmg6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6b25WZXJzaW9uQ2hhbmdl
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwu
aDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRmFjdG9yeTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0
b3J5OjpvcGVuSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeTo6ZGVsZXRl
RGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaDoKKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhOjpJREJEYXRhYmFzZU1ldGFkYXRhKToKKworICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9w
ZW5EQlJlcXVlc3Q6OklEQk9wZW5EQlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCT3Bl
bkRCUmVxdWVzdDo6b25CbG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVl
c3Q6Om9uVXBncmFkZU5lZWRlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3Bl
bkRCUmVxdWVzdC5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5j
cHA6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oOgorCisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVmVy
c2lvbkNoYW5nZUV2ZW50OjpJREJWZXJzaW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
SURCVmVyc2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVmVy
c2lvbkNoYW5nZUV2ZW50OjpvbGRWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlZlcnNp
b25DaGFuZ2VFdmVudDo6bmV3VmVyc2lvbik6CisKKyAgICAgICAgS2VlcCBsZXZlbGRiIGJ1aWxk
aW5nIHdpdGggbWluaW1hbCBhZGFwdGF0aW9ucyB0byB0aGUgbmV3IElETHMsCisgICAgICAgIGJ1
dCBub3RlIHRoYXQgdGhlIExldmVsREIgaW1wbGVtZW50YXRpb24gaXMgbm93IGluY29tcGF0aWJs
ZSB3aXRoIHRoZSBzcGVjOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURC
QmFja2luZ1N0b3JlTGV2ZWxEQi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3Rv
cmU6OmdldElEQkRhdGFiYXNlTWV0YURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6b2JqZWN0U3Rv
cmVDdXJzb3JPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OmluZGV4Q3Vyc29yT3B0aW9ucyk6
CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZExldmVsREIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxE
Qjo6SURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZUJhY2tlbmRMZXZlbERCOjpvcGVuSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kTGV2ZWxEQjo6VmVyc2lvbkNoYW5nZU9wZXJhdGlvbjo6cGVyZm9ybSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpwcm9jZXNzUGVu
ZGluZ0NhbGxzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZExldmVsREI6
Om9wZW5Db25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZExl
dmVsREI6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpkZWxldGVEYXRhYmFzZUZpbmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZExldmVsREI6OlZlcnNpb25DaGFu
Z2VBYm9ydE9wZXJhdGlvbjo6cGVyZm9ybSk6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9sZXZlbGRiL0lEQkxldmVsREJDb2RpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2
ZWxEQkNvZGluZzo6Y29tcGFyZUVuY29kZWRJREJLZXlzKToKKwogMjAxMy0wOS0yNiAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFyayBJREJEYXRhYmFzZSAi
RklOQUwiIG5vdyB0aGF0IGh0dHA6Ly93ZWJraXQub3JnL2IvMTIxNzQ3IGlzIGZpeGVkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDYWxsYmFja3MuaAppbmRleCBk
YTdkZTA3Li45ZGFhM2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDYWxsYmFja3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJDYWxsYmFja3MuaApAQCAtNjgsOSArNjgsOSBAQCBwdWJsaWM6CiAgICAgLy8gRnJvbSBJ
REJDdXJzb3IuYWR2YW5jZSgpL2NvbnRpbnVlKCkKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNz
V2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiBrZXlzLCBjb25zdCBW
ZWN0b3I8UmVmUHRyPElEQktleT4gPiYgcHJpbWFyeUtleXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8
U2hhcmVkQnVmZmVyPiA+JiB2YWx1ZXMpID0gMDsKICAgICAvLyBGcm9tIElEQkZhY3Rvcnkub3Bl
bigpL2RlbGV0ZURhdGFiYXNlKCkKLSAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKGludDY0X3Qg
LyogZXhpc3RpbmdWZXJzaW9uICovKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdmly
dHVhbCB2b2lkIG9uQmxvY2tlZCh1aW50NjRfdCAvKiBleGlzdGluZ1ZlcnNpb24gKi8pIHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICAvLyBGcm9tIElEQkZhY3Rvcnkub3BlbigpCi0gICAg
dmlydHVhbCB2b2lkIG9uVXBncmFkZU5lZWRlZChpbnQ2NF90IC8qIG9sZFZlcnNpb24gKi8sIFBh
c3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiwgY29uc3QgSURCRGF0YWJhc2VN
ZXRhZGF0YSYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgb25V
cGdyYWRlTmVlZGVkKHVpbnQ2NF90IC8qIG9sZFZlcnNpb24gKi8sIFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYpIHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0
YSYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaWRsCmluZGV4IDk1NTQwN2EuLjUwNDNlYzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmlkbApAQCAt
MjcsMTEgKzI3LDEwIEBACiAgICAgQ29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRSwKICAgICBK
U05vU3RhdGljVGFibGVzCiBdIGludGVyZmFjZSBJREJDdXJzb3IgewotCisgICAgcmVhZG9ubHkg
YXR0cmlidXRlIElEQkFueSBzb3VyY2U7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyBkaXJlY3Rpb247CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGFueSBrZXk7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGFueSBwcmltYXJ5S2V5OwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJB
bnkgc291cmNlOwogCiAgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBSYWlzZXNFeGNlcHRpb25d
IElEQlJlcXVlc3QgdXBkYXRlKGFueSB2YWx1ZSk7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9p
ZCBhZHZhbmNlKFtFbmZvcmNlUmFuZ2VdIHVuc2lnbmVkIGxvbmcgY291bnQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCmluZGV4IDhjNGU1
NDkuLjg3Y2ExMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZS5jcHAKQEAgLTEzMSwxMiArMTMxLDkgQEAgUGFzc1JlZlB0cjxET01TdHJpbmdM
aXN0PiBJREJEYXRhYmFzZTo6b2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0CiAgICAgcmV0dXJuIG9i
amVjdFN0b3JlTmFtZXMucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPElEQkFueT4gSURCRGF0
YWJhc2U6OnZlcnNpb24oKSBjb25zdAordWludDY0X3QgSURCRGF0YWJhc2U6OnZlcnNpb24oKSBj
b25zdAogewotICAgIGludDY0X3QgaW50VmVyc2lvbiA9IG1fbWV0YWRhdGEuaW50VmVyc2lvbjsK
LSAgICBpZiAoaW50VmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24p
Ci0gICAgICAgIHJldHVybiBJREJBbnk6OmNyZWF0ZVN0cmluZyhtX21ldGFkYXRhLnZlcnNpb24p
OwotICAgIHJldHVybiBJREJBbnk6OmNyZWF0ZShpbnRWZXJzaW9uKTsKKyAgICByZXR1cm4gbV9t
ZXRhZGF0YS52ZXJzaW9uOwogfQogCiBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBJREJEYXRh
YmFzZTo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBEaWN0aW9u
YXJ5JiBvcHRpb25zLCBFeGNlcHRpb25Db2RlJiBlYykKQEAgLTMwMyw3ICszMDAsNyBAQCB2b2lk
IElEQkRhdGFiYXNlOjpjbG9zZUNvbm5lY3Rpb24oKQogICAgIH0KIH0KIAotdm9pZCBJREJEYXRh
YmFzZTo6b25WZXJzaW9uQ2hhbmdlKGludDY0X3Qgb2xkVmVyc2lvbiwgaW50NjRfdCBuZXdWZXJz
aW9uKQordm9pZCBJREJEYXRhYmFzZTo6b25WZXJzaW9uQ2hhbmdlKHVpbnQ2NF90IG9sZFZlcnNp
b24sIHVpbnQ2NF90IG5ld1ZlcnNpb24sIEluZGV4ZWREQjo6VmVyc2lvbk51bGxuZXNzIG5ld1Zl
cnNpb25OdWxsbmVzcykKIHsKICAgICBJREJfVFJBQ0UoIklEQkRhdGFiYXNlOjpvblZlcnNpb25D
aGFuZ2UiKTsKICAgICBpZiAobV9jb250ZXh0U3RvcHBlZCB8fCAhc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKQpAQCAtMzEyLDggKzMwOSw3IEBAIHZvaWQgSURCRGF0YWJhc2U6Om9uVmVyc2lvbkNo
YW5nZShpbnQ2NF90IG9sZFZlcnNpb24sIGludDY0X3QgbmV3VmVyc2lvbikKICAgICBpZiAobV9j
bG9zZVBlbmRpbmcpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxJREJBbnk+IG5ld1Zl
cnNpb25BbnkgPSBuZXdWZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lv
biA/IElEQkFueTo6Y3JlYXRlTnVsbCgpIDogSURCQW55OjpjcmVhdGUobmV3VmVyc2lvbik7Ci0g
ICAgZW5xdWV1ZUV2ZW50KElEQlZlcnNpb25DaGFuZ2VFdmVudDo6Y3JlYXRlKElEQkFueTo6Y3Jl
YXRlKG9sZFZlcnNpb24pLCBuZXdWZXJzaW9uQW55LnJlbGVhc2UoKSwgZXZlbnROYW1lcygpLnZl
cnNpb25jaGFuZ2VFdmVudCkpOworICAgIGVucXVldWVFdmVudChJREJWZXJzaW9uQ2hhbmdlRXZl
bnQ6OmNyZWF0ZShvbGRWZXJzaW9uLCBuZXdWZXJzaW9uLCBuZXdWZXJzaW9uTnVsbG5lc3MpKTsK
IH0KIAogdm9pZCBJREJEYXRhYmFzZTo6ZW5xdWV1ZUV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2
ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgK
aW5kZXggMmE0NmU0Ni4uOTAyNTMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZS5oCkBAIC02MCw3ICs2MCw3IEBAIHB1YmxpYzoKIAogICAgIC8v
IEltcGxlbWVudCB0aGUgSURMCiAgICAgY29uc3QgU3RyaW5nIG5hbWUoKSBjb25zdCB7IHJldHVy
biBtX21ldGFkYXRhLm5hbWU7IH0KLSAgICBQYXNzUmVmUHRyPElEQkFueT4gdmVyc2lvbigpIGNv
bnN0OworICAgIHVpbnQ2NF90IHZlcnNpb24oKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPERPTVN0
cmluZ0xpc3Q+IG9iamVjdFN0b3JlTmFtZXMoKSBjb25zdDsKIAogICAgIFBhc3NSZWZQdHI8SURC
T2JqZWN0U3RvcmU+IGNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
RGljdGlvbmFyeSYsIEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTc2LDcgKzc2LDcgQEAgcHVibGljOgog
ICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIodmVyc2lvbmNoYW5nZSk7CiAKICAg
ICAvLyBJREJEYXRhYmFzZUNhbGxiYWNrcwotICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFu
Z2UoaW50NjRfdCBvbGRWZXJzaW9uLCBpbnQ2NF90IG5ld1ZlcnNpb24pOworICAgIHZpcnR1YWwg
dm9pZCBvblZlcnNpb25DaGFuZ2UodWludDY0X3Qgb2xkVmVyc2lvbiwgdWludDY0X3QgbmV3VmVy
c2lvbiwgSW5kZXhlZERCOjpWZXJzaW9uTnVsbG5lc3MgbmV3VmVyc2lvbk51bGxuZXNzKTsKICAg
ICB2aXJ0dWFsIHZvaWQgb25BYm9ydChpbnQ2NF90LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJy
b3I+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25Db21wbGV0ZShpbnQ2NF90KTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaWRsIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaWRsCmluZGV4IDJjNWNj
ODYuLmQ2MDM4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZS5pZGwKQEAgLTI5LDMwICsyOSwyMCBAQAogICAgIEFjdGl2ZURPTU9iamVjdCwK
ICAgICBFdmVudFRhcmdldCwKICAgICBKU05vU3RhdGljVGFibGVzCi1dIGludGVyZmFjZSBJREJE
YXRhYmFzZSB7CitdIGludGVyZmFjZSBJREJEYXRhYmFzZSA6IEV2ZW50VGFyZ2V0IHsKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRl
IElEQkFueSB2ZXJzaW9uOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxv
bmcgdmVyc2lvbjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nTGlzdCBvYmplY3RT
dG9yZU5hbWVzOwogCi0gICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25hYm9ydDsKLSAgICBh
dHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVycm9yOwotICAgIGF0dHJpYnV0ZSBFdmVudExpc3Rl
bmVyIG9udmVyc2lvbmNoYW5nZTsKLQogICAgIFtDdXN0b20sIFJhaXNlc0V4Y2VwdGlvbl0gSURC
T2JqZWN0U3RvcmUgY3JlYXRlT2JqZWN0U3RvcmUoRE9NU3RyaW5nIG5hbWUsIG9wdGlvbmFsIERp
Y3Rpb25hcnkgb3B0aW9ucyk7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBkZWxldGVPYmpl
Y3RTdG9yZShET01TdHJpbmcgbmFtZSk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gSURCVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oRE9NU3Ry
aW5nTGlzdCBzdG9yZU5hbWVzLCBbRGVmYXVsdD1OdWxsU3RyaW5nXSBvcHRpb25hbCBET01TdHJp
bmcgbW9kZSk7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4
Y2VwdGlvbl0gSURCVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oc2VxdWVuY2U8RE9NU3RyaW5nPiBz
dG9yZU5hbWVzLCBbRGVmYXVsdD1OdWxsU3RyaW5nXSBvcHRpb25hbCBET01TdHJpbmcgbW9kZSk7
CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0g
SURCVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb24oRE9NU3RyaW5nIHN0b3JlTmFtZSwgW0RlZmF1bHQ9
TnVsbFN0cmluZ10gb3B0aW9uYWwgRE9NU3RyaW5nIG1vZGUpOwotCisgICAgW0NhbGxXaXRoPVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gSURCVHJhbnNhY3Rpb24gdHJh
bnNhY3Rpb24oc2VxdWVuY2U8RE9NU3RyaW5nPiBzdG9yZU5hbWVzLCBbRGVmYXVsdD1OdWxsU3Ry
aW5nXSBvcHRpb25hbCBET01TdHJpbmcgbW9kZSk7CiAgICAgdm9pZCBjbG9zZSgpOwogCi0gICAg
Ly8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCi0gICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKERPTVN0
cmluZyB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudExpc3RlbmVyIGxpc3Rl
bmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBib29sZWFuIHVzZUNhcHR1
cmUpOwotICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihET01TdHJpbmcgdHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiB1c2VDYXB0dXJlKTsKLSAgICBb
UmFpc2VzRXhjZXB0aW9uXSBib29sZWFuIGRpc3BhdGNoRXZlbnQoRXZlbnQgZXZ0KTsKKyAgICBh
dHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmFib3J0OworICAgIGF0dHJpYnV0ZSBFdmVudExpc3Rl
bmVyIG9uZXJyb3I7CisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb252ZXJzaW9uY2hhbmdl
OworCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VDYWxsYmFja3MuaAppbmRleCBmYzI0MmUwLi43NzcwYWJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJh
Y2tzLmgKQEAgLTI5LDIwICsyOSwyNSBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQog
CiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFcnJvci5oIgorI2luY2x1ZGUgIkluZGV4ZWREQi5oIgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgSURCRGF0YWJhc2U7CisKIGNsYXNz
IElEQkRhdGFiYXNlQ2FsbGJhY2tzIDogcHVibGljIFJlZkNvdW50ZWQ8SURCRGF0YWJhc2VDYWxs
YmFja3M+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJEYXRhYmFzZUNhbGxiYWNrcygpIHsg
fQogCiAgICAgdmlydHVhbCB2b2lkIG9uRm9yY2VkQ2xvc2UoKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIG9uVmVyc2lvbkNoYW5nZShpbnQ2NF90IG9sZFZlcnNpb24sIGludDY0X3QgbmV3VmVyc2lv
bikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UodWludDY0X3Qgb2xkVmVy
c2lvbiwgdWludDY0X3QgbmV3VmVyc2lvbiwgSW5kZXhlZERCOjpWZXJzaW9uTnVsbG5lc3MgbmV3
VmVyc2lvbk51bGxuZXNzKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgb25BYm9ydChpbnQ2NF90
IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgb25Db21wbGV0ZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQpID0gMDsKKworICAg
IHZpcnR1YWwgdm9pZCBjb25uZWN0KElEQkRhdGFiYXNlKikgPSAwOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAKaW5kZXggNDJhZjdhMi4uNTg3
YzRhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0
YWJhc2VDYWxsYmFja3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwCkBAIC01MiwxMCArNTIsMTAgQEAgdm9p
ZCBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6Om9uRm9yY2VkQ2xvc2UoKQogICAgICAgICBtX2Rh
dGFiYXNlLT5mb3JjZUNsb3NlKCk7CiB9CiAKLXZvaWQgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBs
OjpvblZlcnNpb25DaGFuZ2UoaW50NjRfdCBvbGRWZXJzaW9uLCBpbnQ2NF90IG5ld1ZlcnNpb24p
Cit2b2lkIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6b25WZXJzaW9uQ2hhbmdlKHVpbnQ2NF90
IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNpb24sIEluZGV4ZWREQjo6VmVyc2lvbk51bGxu
ZXNzIG5ld1ZlcnNpb25OdWxsbmVzcykKIHsKICAgICBpZiAobV9kYXRhYmFzZSkKLSAgICAgICAg
bV9kYXRhYmFzZS0+b25WZXJzaW9uQ2hhbmdlKG9sZFZlcnNpb24sIG5ld1ZlcnNpb24pOworICAg
ICAgICBtX2RhdGFiYXNlLT5vblZlcnNpb25DaGFuZ2Uob2xkVmVyc2lvbiwgbmV3VmVyc2lvbiwg
bmV3VmVyc2lvbk51bGxuZXNzKTsKIH0KIAogdm9pZCBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6
OmNvbm5lY3QoSURCRGF0YWJhc2UqIGRhdGFiYXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaAppbmRl
eCA1YTc4YjM3Li40ZmQ3NTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaApAQCAtMzYsMTkgKzM2
LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCRGF0YWJhc2U7CiAKLWNsYXNz
IElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCA6IHB1YmxpYyBJREJEYXRhYmFzZUNhbGxiYWNrcyB7
CitjbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwgRklOQUwgOiBwdWJsaWMgSURCRGF0YWJh
c2VDYWxsYmFja3MgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkRhdGFiYXNl
Q2FsbGJhY2tzSW1wbD4gY3JlYXRlKCk7Ci0gICAgdmlydHVhbCB+SURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsKCk7CisgICAgdmlydHVhbCB+SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsKCkgT1ZFUlJJ
REU7CiAKICAgICAvLyBJREJEYXRhYmFzZUNhbGxiYWNrcwotICAgIHZpcnR1YWwgdm9pZCBvbkZv
cmNlZENsb3NlKCk7Ci0gICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZShpbnQ2NF90IG9s
ZFZlcnNpb24sIGludDY0X3QgbmV3VmVyc2lvbik7CisgICAgdmlydHVhbCB2b2lkIG9uRm9yY2Vk
Q2xvc2UoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKHVpbnQ2
NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNpb24sIEluZGV4ZWREQjo6VmVyc2lvbk51
bGxuZXNzIG5ld1ZlcnNpb25OdWxsbmVzcykgT1ZFUlJJREU7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
b25BYm9ydChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJv
cj4pOwotICAgIHZpcnR1YWwgdm9pZCBvbkNvbXBsZXRlKGludDY0X3QgdHJhbnNhY3Rpb25JZCk7
CisgICAgdmlydHVhbCB2b2lkIG9uQWJvcnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVm
UHRyPElEQkRhdGFiYXNlRXJyb3I+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgb25Db21w
bGV0ZShpbnQ2NF90IHRyYW5zYWN0aW9uSWQpIE9WRVJSSURFOwogCi0gICAgdm9pZCBjb25uZWN0
KElEQkRhdGFiYXNlKik7CisgICAgdmlydHVhbCB2b2lkIGNvbm5lY3QoSURCRGF0YWJhc2UqKSBP
VkVSUklERTsKIAogcHJpdmF0ZToKICAgICBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAKaW5kZXgg
ZWE4MjAwNy4uYzRmYjBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeS5jcHAKQEAgLTExMyw2ICsxMTMsMTIgQEAgUGFzc1JlZlB0cjxJREJSZXF1
ZXN0PiBJREJGYWN0b3J5OjpnZXREYXRhYmFzZU5hbWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnQKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAorUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1
ZXN0PiBJREJGYWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgSURCX1RSQUNFKCJJ
REJGYWN0b3J5OjpvcGVuIik7CisgICAgcmV0dXJuIG9wZW5JbnRlcm5hbChjb250ZXh0LCBuYW1l
LCAwLCBJbmRleGVkREI6Ok51bGxWZXJzaW9uLCBlYyk7Cit9CisKIFBhc3NSZWZQdHI8SURCT3Bl
bkRCUmVxdWVzdD4gSURCRmFjdG9yeTo6b3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIHVuc2lnbmVkIGxvbmcgbG9uZyB2ZXJzaW9uLCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBJREJfVFJBQ0UoIklEQkZhY3Rvcnk6Om9wZW4iKTsKQEAg
LTEyMCwxMyArMTI2LDEzIEBAIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURCRmFjdG9y
eTo6b3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjCiAgICAgICAgIGVjID0g
VHlwZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgcmV0dXJuIG9wZW5JbnRl
cm5hbChjb250ZXh0LCBuYW1lLCB2ZXJzaW9uLCBlYyk7CisgICAgcmV0dXJuIG9wZW5JbnRlcm5h
bChjb250ZXh0LCBuYW1lLCB2ZXJzaW9uLCBJbmRleGVkREI6Ok5vbk51bGxWZXJzaW9uLCBlYyk7
CiB9CiAKLVBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURCRmFjdG9yeTo6b3BlbkludGVy
bmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
aW50NjRfdCB2ZXJzaW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK1Bhc3NSZWZQdHI8SURCT3BlbkRC
UmVxdWVzdD4gSURCRmFjdG9yeTo6b3BlbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgdWludDY0X3QgdmVyc2lvbiwgSW5kZXhlZERC
OjpWZXJzaW9uTnVsbG5lc3MgdmVyc2lvbk51bGxuZXNzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlvbigiV2ViQ29yZS5JbmRl
eGVkREIuRnJvbnRFbmRBUElDYWxscyIsIElEQk9wZW5DYWxsLCBJREJNZXRob2RzTWF4KTsKLSAg
ICBBU1NFUlQodmVyc2lvbiA+PSAxIHx8IHZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6
Tm9JbnRWZXJzaW9uKTsKKyAgICBBU1NFUlQodmVyc2lvbiA+PSAxIHx8IHZlcnNpb25OdWxsbmVz
cyA9PSBJbmRleGVkREI6Ok51bGxWZXJzaW9uKTsKICAgICBpZiAobmFtZS5pc051bGwoKSkgewog
ICAgICAgICBlYyA9IFR5cGVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMzgsMTkgKzE0
NCwxMyBAQCBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9wZW5JbnRl
cm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjbwogICAgICAgICByZXR1cm4gMDsKICAgICB9
CiAKLSAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBkYXRhYmFzZUNhbGxiYWNr
cyA9IElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6Y3JlYXRlKCk7CisgICAgUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPiBkYXRhYmFzZUNhbGxiYWNrcyA9IElEQkRhdGFiYXNlQ2FsbGJhY2tz
SW1wbDo6Y3JlYXRlKCk7CiAgICAgaW50NjRfdCB0cmFuc2FjdGlvbklkID0gSURCRGF0YWJhc2U6
Om5leHRUcmFuc2FjdGlvbklkKCk7Ci0gICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IHJlcXVl
c3QgPSBJREJPcGVuREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgZGF0YWJhc2VDYWxsYmFja3Ms
IHRyYW5zYWN0aW9uSWQsIHZlcnNpb24pOworICAgIFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBy
ZXF1ZXN0ID0gSURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIGRhdGFiYXNlQ2FsbGJh
Y2tzLCB0cmFuc2FjdGlvbklkLCB2ZXJzaW9uLCB2ZXJzaW9uTnVsbG5lc3MpOwogICAgIG1fYmFj
a2VuZC0+b3BlbihuYW1lLCB2ZXJzaW9uLCB0cmFuc2FjdGlvbklkLCByZXF1ZXN0LCBkYXRhYmFz
ZUNhbGxiYWNrcywgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgY29udGV4dCwgZ2V0SW5kZXhl
ZERCRGF0YWJhc2VQYXRoKGNvbnRleHQpKTsKICAgICByZXR1cm4gcmVxdWVzdDsKIH0KIAotUGFz
c1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJGYWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMp
Ci17Ci0gICAgSURCX1RSQUNFKCJJREJGYWN0b3J5OjpvcGVuIik7Ci0gICAgcmV0dXJuIG9wZW5J
bnRlcm5hbChjb250ZXh0LCBuYW1lLCBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24s
IGVjKTsKLX0KLQogUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJGYWN0b3J5OjpkZWxl
dGVEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCRmFjdG9yeTo6
ZGVsZXRlRGF0YWJhc2UiKTsKQEAgLTE2Niw3ICsxNjYsNyBAQCBQYXNzUmVmUHRyPElEQk9wZW5E
QlJlcXVlc3Q+IElEQkZhY3Rvcnk6OmRlbGV0ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFJlZlB0cjxJREJPcGVuREJSZXF1
ZXN0PiByZXF1ZXN0ID0gSURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIDAsIDAsIElE
QkRhdGFiYXNlTWV0YWRhdGE6OkRlZmF1bHRJbnRWZXJzaW9uKTsKKyAgICBSZWZQdHI8SURCT3Bl
bkRCUmVxdWVzdD4gcmVxdWVzdCA9IElEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCAw
LCAwLCAwLCBJbmRleGVkREI6Ok51bGxWZXJzaW9uKTsKICAgICBtX2JhY2tlbmQtPmRlbGV0ZURh
dGFiYXNlKG5hbWUsIHJlcXVlc3QsIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2luKCksIGNvbnRleHQs
IGdldEluZGV4ZWREQkRhdGFiYXNlUGF0aChjb250ZXh0KSk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0
b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmgKaW5k
ZXggNDFlMjM4NS4uOTA2NWQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkZhY3RvcnkuaApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IElEQkZhY3RvcnkoSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UqKTsKIAotICAgIFBhc3NSZWZQ
dHI8SURCT3BlbkRCUmVxdWVzdD4gb3BlbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gb3BlbkludGVybmFsKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG5hbWUsIHVpbnQ2NF90IHZlcnNpb24sIEluZGV4
ZWREQjo6VmVyc2lvbk51bGxuZXNzLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICBSZWZQdHI8SURC
RmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U+IG1fYmFja2VuZDsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaWRsCmluZGV4IDkwMTY4YTUuLjg5NmQ2
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rv
cnkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rvcnku
aWRsCkBAIC0yOCwxMSArMjgsOCBAQAogICAgIEpTTm9TdGF0aWNUYWJsZXMsCiAgICAgSW1wbGVt
ZW50YXRpb25MYWNrc1ZUYWJsZQogXSBpbnRlcmZhY2UgSURCRmFjdG9yeSB7Ci0gICAgW0NhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEltcGxlbWVudGVkQXM9Z2V0RGF0YWJhc2VOYW1l
cywgUmFpc2VzRXhjZXB0aW9uXSBJREJSZXF1ZXN0IHdlYmtpdEdldERhdGFiYXNlTmFtZXMoKTsK
LQogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25d
IElEQk9wZW5EQlJlcXVlc3Qgb3BlbihET01TdHJpbmcgbmFtZSwgW0VuZm9yY2VSYW5nZV0gb3B0
aW9uYWwgdW5zaWduZWQgbG9uZyBsb25nIHZlcnNpb24pOwogICAgIFtDYWxsV2l0aD1TY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIElEQk9wZW5EQlJlcXVlc3QgZGVsZXRl
RGF0YWJhc2UoRE9NU3RyaW5nIG5hbWUpOwotCiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gc2hvcnQgY21wKGFueSBmaXJzdCwgYW55IHNlY29u
ZCk7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJJbmRleC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5p
ZGwKaW5kZXggY2RhY2ZlNi4uYmEwYjBhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCSW5kZXguaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkluZGV4LmlkbApAQCAtMzEsOCArMzEsOCBAQAogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSURCT2JqZWN0
U3RvcmUgb2JqZWN0U3RvcmU7CiAgICAgW0ltcGxlbWVudGVkQXM9a2V5UGF0aEFueV0gcmVhZG9u
bHkgYXR0cmlidXRlIElEQkFueSBrZXlQYXRoOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29s
ZWFuIHVuaXF1ZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBtdWx0aUVudHJ5Owor
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHVuaXF1ZTsKIAogICAgIFtDYWxsV2l0aD1T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIElEQlJlcXVlc3Qgb3BlbkN1
cnNvcihvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UsIG9wdGlvbmFsIERPTVN0cmluZyBkaXJl
Y3Rpb24pOwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNl
cHRpb25dIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihhbnkga2V5LCBvcHRpb25hbCBET01TdHJpbmcg
ZGlyZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQktleVJhbmdlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktl
eVJhbmdlLmlkbAppbmRleCBjNjBkNzQwLi4wZmVjMzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2UuaWRsCkBAIC0zNCw4ICszNCw4IEBACiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gdXBwZXJPcGVuOwogCiAgICAgW0NhbGxXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gc3RhdGljIElEQktleVJh
bmdlIG9ubHkoYW55IHZhbHVlKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgUmFpc2VzRXhjZXB0aW9uXSBzdGF0aWMgSURCS2V5UmFuZ2UgbG93ZXJCb3VuZChhbnkgYm91
bmQsIG9wdGlvbmFsIGJvb2xlYW4gb3Blbik7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gc3RhdGljIElEQktleVJhbmdlIHVwcGVyQm91bmQo
YW55IGJvdW5kLCBvcHRpb25hbCBib29sZWFuIG9wZW4pOworICAgIFtDYWxsV2l0aD1TY3JpcHRF
eGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIHN0YXRpYyBJREJLZXlSYW5nZSBsb3dl
ckJvdW5kKGFueSBsb3dlciwgb3B0aW9uYWwgYm9vbGVhbiBvcGVuKTsKKyAgICBbQ2FsbFdpdGg9
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBzdGF0aWMgSURCS2V5UmFu
Z2UgdXBwZXJCb3VuZChhbnkgdXBwZXIsIG9wdGlvbmFsIGJvb2xlYW4gb3Blbik7CiAgICAgW0Nh
bGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gc3RhdGljIElE
QktleVJhbmdlIGJvdW5kKGFueSBsb3dlciwgYW55IHVwcGVyLCBvcHRpb25hbCBib29sZWFuIGxv
d2VyT3Blbiwgb3B0aW9uYWwgYm9vbGVhbiB1cHBlck9wZW4pOwogfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmgKaW5kZXggYzNiMzMzNC4uNWQz
NmY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0
YWRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0
YS5oCkBAIC03OSwzMSArNzksNDAgQEAgc3RydWN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgewog
fTsKIAogc3RydWN0IElEQkRhdGFiYXNlTWV0YWRhdGEgewotICAgIC8vIEZJWE1FOiBUaGVzZSBj
YW4gcHJvYmFibHkgYmUgY29sbGFwc2VkIGludG8gMC4KKworI2lmIFVTRShMRVZFTERCKQorICAg
IC8vIEZJWE1FOiBUaGVzZSBhcmUgb25seSBoZXJlIHRvIHN1cHBvcnQgdGhlIExldmVsREIgYmFj
a2VuZCB3aGljaCBpbmNvcnJlY3RseSBoYW5kbGVzIHZlcnNpb25pbmcuCisgICAgLy8gT25jZSBM
ZXZlbERCIHN1cHBvcnRzIGEgc2luZ2xlLCB1aW50NjRfdCB2ZXJzaW9uIGFuZCB0aHJvd3Mgb3V0
IHRoZSBvbGQgc3RyaW5nIHZlcnNpb24sIHRoZXNlCisgICAgLy8gc2hvdWxkIGJlIGdvdHRlbiBy
aWQgb2YuCisgICAgLy8gQWxzbywgIk5vSW50VmVyc2lvbiIgdXNlZCB0byBiZSBhIG1hZ2ljIG51
bWJlciBvZiAtMSwgd2hpY2ggZG9lc24ndCB3b3JrIHdpdGggdGhlIG5ldyB1bnNpZ25lZCB0eXBl
LgorICAgIC8vIENoYW5naW5nIHRoZSB2YWx1ZSB0byBJTlQ2NF9NQVggaGVyZSBzZWVtcyBsaWtl
IGEgcmVhc29uYWJsZSB0ZW1wb3JhcnkgZml4IGFzIHRoZSBjdXJyZW50IExldmVsREIKKyAgICAv
LyBhbHJlYWR5IGNhbm5vdCByZXByZXNlbnQgdmFsaWQgdmVyc2lvbiBudW1iZXJzIGJldHdlZW4g
SU5UNjRfTUFYIGFuZCBVSU5UNjRfTUFYLgogICAgIGVudW0gewotICAgICAgICBOb0ludFZlcnNp
b24gPSAtMSwKKyAgICAgICAgTm9JbnRWZXJzaW9uID0gSU5UNjRfTUFYLAogICAgICAgICBEZWZh
dWx0SW50VmVyc2lvbiA9IDAKICAgICB9OworI2VuZGlmIC8vIFVTRShMRVZFTERCKQogCiAgICAg
dHlwZWRlZiBIYXNoTWFwPGludDY0X3QsIElEQk9iamVjdFN0b3JlTWV0YWRhdGE+IE9iamVjdFN0
b3JlTWFwOwogCiAgICAgSURCRGF0YWJhc2VNZXRhZGF0YSgpCi0gICAgICAgIDogaW50VmVyc2lv
bihOb0ludFZlcnNpb24pCisgICAgICAgIDogaWQoMCkKKyAgICAgICAgLCB2ZXJzaW9uKDApCisg
ICAgICAgICwgbWF4T2JqZWN0U3RvcmVJZCgwKQogICAgIHsKICAgICB9Ci0gICAgSURCRGF0YWJh
c2VNZXRhZGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYg
dmVyc2lvbiwgaW50NjRfdCBpbnRWZXJzaW9uLCBpbnQ2NF90IG1heE9iamVjdFN0b3JlSWQpCisK
KyAgICBJREJEYXRhYmFzZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCBpZCwg
dWludDY0X3QgdmVyc2lvbiwgaW50NjRfdCBtYXhPYmplY3RTdG9yZUlkKQogICAgICAgICA6IG5h
bWUobmFtZSkKICAgICAgICAgLCBpZChpZCkKICAgICAgICAgLCB2ZXJzaW9uKHZlcnNpb24pCi0g
ICAgICAgICwgaW50VmVyc2lvbihpbnRWZXJzaW9uKQogICAgICAgICAsIG1heE9iamVjdFN0b3Jl
SWQobWF4T2JqZWN0U3RvcmVJZCkKICAgICB7CiAgICAgfQogCiAgICAgU3RyaW5nIG5hbWU7CiAg
ICAgaW50NjRfdCBpZDsKLSAgICBTdHJpbmcgdmVyc2lvbjsKLSAgICBpbnQ2NF90IGludFZlcnNp
b247CisgICAgdWludDY0X3QgdmVyc2lvbjsKICAgICBpbnQ2NF90IG1heE9iamVjdFN0b3JlSWQ7
CiAKICAgICBPYmplY3RTdG9yZU1hcCBvYmplY3RTdG9yZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5pZGwKaW5kZXggYzcyYTkxYi4u
NDYzYjlmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
T2JqZWN0U3RvcmUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk9iamVjdFN0b3JlLmlkbApAQCAtMzgsMTIgKzM4LDExIEBACiAgICAgW0NhbGxXaXRoPVNjcmlw
dFN0YXRlLCBSYWlzZXNFeGNlcHRpb25dIElEQlJlcXVlc3QgYWRkKGFueSB2YWx1ZSwgb3B0aW9u
YWwgYW55IGtleSk7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEltcGxl
bWVudGVkQXM9ZGVsZXRlRnVuY3Rpb24sIFJhaXNlc0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBkZWxl
dGUoSURCS2V5UmFuZ2U/IGtleVJhbmdlKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgSW1wbGVtZW50ZWRBcz1kZWxldGVGdW5jdGlvbiwgUmFpc2VzRXhjZXB0aW9uXSBJ
REJSZXF1ZXN0IGRlbGV0ZShhbnkga2V5KTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBJREJSZXF1ZXN0IGNsZWFyKCk7CiAgICAgW0NhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBn
ZXQoSURCS2V5UmFuZ2U/IGtleSk7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIFJhaXNlc0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBnZXQoYW55IGtleSk7CisgICAgW0NhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBj
bGVhcigpOwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNl
cHRpb25dIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2Us
IG9wdGlvbmFsIERPTVN0cmluZyBkaXJlY3Rpb24pOwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihhbnkg
a2V5LCBvcHRpb25hbCBET01TdHJpbmcgZGlyZWN0aW9uKTsKLQogICAgIFtDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBDdXN0b20sIFJhaXNlc0V4Y2VwdGlvbl0gSURCSW5kZXggY3Jl
YXRlSW5kZXgoRE9NU3RyaW5nIG5hbWUsIHNlcXVlbmNlPERPTVN0cmluZz4ga2V5UGF0aCwgb3B0
aW9uYWwgRGljdGlvbmFyeSBvcHRpb25zKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgQ3VzdG9tLCBSYWlzZXNFeGNlcHRpb25dIElEQkluZGV4IGNyZWF0ZUluZGV4KERP
TVN0cmluZyBuYW1lLCBET01TdHJpbmcga2V5UGF0aCwgb3B0aW9uYWwgRGljdGlvbmFyeSBvcHRp
b25zKTsKICAgICBbUmFpc2VzRXhjZXB0aW9uXSBJREJJbmRleCBpbmRleChET01TdHJpbmcgbmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVu
REJSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5E
QlJlcXVlc3QuY3BwCmluZGV4IDU2ZTBmMTYuLjllMmYwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCkBAIC0zNywx
OCArMzcsMTkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPElEQk9wZW5E
QlJlcXVlc3Q+IElEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gY2FsbGJhY2tz
LCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3QgdmVyc2lvbikKK1Bhc3NSZWZQdHI8SURC
T3BlbkRCUmVxdWVzdD4gSURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNr
cywgaW50NjRfdCB0cmFuc2FjdGlvbklkLCB1aW50NjRfdCB2ZXJzaW9uLCBJbmRleGVkREI6OlZl
cnNpb25OdWxsbmVzcyB2ZXJzaW9uTnVsbG5lc3MpCiB7Ci0gICAgUmVmUHRyPElEQk9wZW5EQlJl
cXVlc3Q+IHJlcXVlc3QoYWRvcHRSZWYobmV3IElEQk9wZW5EQlJlcXVlc3QoY29udGV4dCwgY2Fs
bGJhY2tzLCB0cmFuc2FjdGlvbklkLCB2ZXJzaW9uKSkpOworICAgIFJlZlB0cjxJREJPcGVuREJS
ZXF1ZXN0PiByZXF1ZXN0KGFkb3B0UmVmKG5ldyBJREJPcGVuREJSZXF1ZXN0KGNvbnRleHQsIGNh
bGxiYWNrcywgdHJhbnNhY3Rpb25JZCwgdmVyc2lvbiwgdmVyc2lvbk51bGxuZXNzKSkpOwogICAg
IHJlcXVlc3QtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2Uo
KTsKIH0KIAotSURCT3BlbkRCUmVxdWVzdDo6SURCT3BlbkRCUmVxdWVzdChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4g
Y2FsbGJhY2tzLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3QgdmVyc2lvbikKK0lEQk9w
ZW5EQlJlcXVlc3Q6OklEQk9wZW5EQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzLCBpbnQ2NF90
IHRyYW5zYWN0aW9uSWQsIHVpbnQ2NF90IHZlcnNpb24sIEluZGV4ZWREQjo6VmVyc2lvbk51bGxu
ZXNzIHZlcnNpb25OdWxsbmVzcykKICAgICA6IElEQlJlcXVlc3QoY29udGV4dCwgSURCQW55Ojpj
cmVhdGVOdWxsKCksIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6Tm9ybWFsVGFzaywgMCkK
ICAgICAsIG1fZGF0YWJhc2VDYWxsYmFja3MoY2FsbGJhY2tzKQogICAgICwgbV90cmFuc2FjdGlv
bklkKHRyYW5zYWN0aW9uSWQpCiAgICAgLCBtX3ZlcnNpb24odmVyc2lvbikKKyAgICAsIG1fdmVy
c2lvbk51bGxuZXNzKHZlcnNpb25OdWxsbmVzcykKIHsKICAgICBBU1NFUlQoIW1fcmVzdWx0KTsK
IH0KQEAgLTYyLDE2ICs2MywxNiBAQCBFdmVudFRhcmdldEludGVyZmFjZSBJREJPcGVuREJSZXF1
ZXN0OjpldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0CiAgICAgcmV0dXJuIElEQk9wZW5EQlJl
cXVlc3RFdmVudFRhcmdldEludGVyZmFjZVR5cGU7CiB9CiAKLXZvaWQgSURCT3BlbkRCUmVxdWVz
dDo6b25CbG9ja2VkKGludDY0X3Qgb2xkVmVyc2lvbikKK3ZvaWQgSURCT3BlbkRCUmVxdWVzdDo6
b25CbG9ja2VkKHVpbnQ2NF90IG9sZFZlcnNpb24pCiB7CiAgICAgSURCX1RSQUNFKCJJREJPcGVu
REJSZXF1ZXN0OjpvbkJsb2NrZWQoKSIpOwogICAgIGlmICghc2hvdWxkRW5xdWV1ZUV2ZW50KCkp
CiAgICAgICAgIHJldHVybjsKLSAgICBSZWZQdHI8SURCQW55PiBuZXdWZXJzaW9uQW55ID0gKG1f
dmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpEZWZhdWx0SW50VmVyc2lvbikgPyBJREJB
bnk6OmNyZWF0ZU51bGwoKSA6IElEQkFueTo6Y3JlYXRlKG1fdmVyc2lvbik7Ci0gICAgZW5xdWV1
ZUV2ZW50KElEQlZlcnNpb25DaGFuZ2VFdmVudDo6Y3JlYXRlKElEQkFueTo6Y3JlYXRlKG9sZFZl
cnNpb24pLCBuZXdWZXJzaW9uQW55LnJlbGVhc2UoKSwgZXZlbnROYW1lcygpLmJsb2NrZWRFdmVu
dCkpOworICAgIAorICAgIGVucXVldWVFdmVudChJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OmNyZWF0
ZShvbGRWZXJzaW9uLCBtX3ZlcnNpb24sIG1fdmVyc2lvbk51bGxuZXNzLCBldmVudE5hbWVzKCku
YmxvY2tlZEV2ZW50KSk7CiB9CiAKLXZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRlTmVl
ZGVkKGludDY0X3Qgb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U+IHBycERhdGFiYXNlQmFja2VuZCwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0
YWRhdGEpCit2b2lkIElEQk9wZW5EQlJlcXVlc3Q6Om9uVXBncmFkZU5lZWRlZCh1aW50NjRfdCBv
bGRWZXJzaW9uLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gcHJwRGF0
YWJhc2VCYWNrZW5kLCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0YSkKIHsKICAg
ICBJREJfVFJBQ0UoIklEQk9wZW5EQlJlcXVlc3Q6Om9uVXBncmFkZU5lZWRlZCgpIik7CiAgICAg
aWYgKG1fY29udGV4dFN0b3BwZWQgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgewpAQCAt
OTIsMTkgKzkzLDE1IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRlTmVlZGVkKGlu
dDY0X3Qgb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzCiAgICAgbV9kYXRhYmFzZUNh
bGxiYWNrcy0+Y29ubmVjdChpZGJEYXRhYmFzZS5nZXQoKSk7CiAgICAgbV9kYXRhYmFzZUNhbGxi
YWNrcyA9IDA7CiAKLSAgICBpZiAob2xkVmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpO
b0ludFZlcnNpb24pIHsKLSAgICAgICAgLy8gVGhpcyBkYXRhYmFzZSBoYXNuJ3QgaGFkIGFuIGlu
dGVnZXIgdmVyc2lvbiBiZWZvcmUuCi0gICAgICAgIG9sZFZlcnNpb24gPSBJREJEYXRhYmFzZU1l
dGFkYXRhOjpEZWZhdWx0SW50VmVyc2lvbjsKLSAgICB9CiAgICAgSURCRGF0YWJhc2VNZXRhZGF0
YSBvbGRNZXRhZGF0YShtZXRhZGF0YSk7Ci0gICAgb2xkTWV0YWRhdGEuaW50VmVyc2lvbiA9IG9s
ZFZlcnNpb247CisgICAgb2xkTWV0YWRhdGEudmVyc2lvbiA9IG9sZFZlcnNpb247CiAKICAgICBt
X3RyYW5zYWN0aW9uID0gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIG1fdHJhbnNhY3Rpb25JZCwgaWRiRGF0YWJhc2UuZ2V0KCksIHRoaXMsIG9sZE1ldGFk
YXRhKTsKICAgICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKGlkYkRhdGFiYXNlLnJlbGVhc2Uo
KSk7CiAKLSAgICBpZiAobV92ZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVy
c2lvbikKKyAgICBpZiAobV92ZXJzaW9uTnVsbG5lc3MgPT0gSW5kZXhlZERCOjpOdWxsVmVyc2lv
bikKICAgICAgICAgbV92ZXJzaW9uID0gMTsKLSAgICBlbnF1ZXVlRXZlbnQoSURCVmVyc2lvbkNo
YW5nZUV2ZW50OjpjcmVhdGUoSURCQW55OjpjcmVhdGUob2xkVmVyc2lvbiksIElEQkFueTo6Y3Jl
YXRlKG1fdmVyc2lvbiksIGV2ZW50TmFtZXMoKS51cGdyYWRlbmVlZGVkRXZlbnQpKTsKKyAgICBl
bnF1ZXVlRXZlbnQoSURCVmVyc2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUob2xkVmVyc2lvbiwgbV92
ZXJzaW9uLCBtX3ZlcnNpb25OdWxsbmVzcywgZXZlbnROYW1lcygpLnVwZ3JhZGVuZWVkZWRFdmVu
dCkpOwogfQogCiB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gcHJwQmFja2VuZCwgY29uc3QgSURCRGF0YWJhc2VN
ZXRhZGF0YSYgbWV0YWRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmgKaW5kZXggMmZjZWQ5OC4uOTYwNDU5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaApA
QCAtMjksMjAgKzI5LDIxIEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNs
dWRlICJJREJSZXF1ZXN0LmgiCisjaW5jbHVkZSAiSW5kZXhlZERCLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotY2xhc3MgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOworY2xhc3MgSURCRGF0
YWJhc2VDYWxsYmFja3M7CiAKIGNsYXNzIElEQk9wZW5EQlJlcXVlc3QgOiBwdWJsaWMgSURCUmVx
dWVzdCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2Fs
bGJhY2tzSW1wbD4sIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCB2ZXJzaW9uKTsKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBpbnQ2NF90IHRy
YW5zYWN0aW9uSWQsIHVpbnQ2NF90IHZlcnNpb24sIEluZGV4ZWREQjo6VmVyc2lvbk51bGxuZXNz
KTsKICAgICB2aXJ0dWFsIH5JREJPcGVuREJSZXF1ZXN0KCk7CiAKICAgICB1c2luZyBJREJSZXF1
ZXN0OjpvblN1Y2Nlc3M7CiAKLSAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKGludDY0X3QgZXhp
c3RpbmdWZXJzaW9uKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgb25VcGdyYWRlTmVlZGVk
KGludDY0X3Qgb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2U+LCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIG9uQmxvY2tlZCh1aW50NjRfdCBleGlzdGluZ1ZlcnNpb24pIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBvblVwZ3JhZGVOZWVkZWQodWludDY0X3Qgb2xkVmVyc2lvbiwgUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+LCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRh
JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZT4sIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmKSBPVkVS
UklERTsKIAogICAgIC8vIEV2ZW50VGFyZ2V0CkBAIC01NiwxMSArNTcsMTIgQEAgcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRFbnF1ZXVlRXZlbnQoKSBjb25zdCBPVkVSUklERTsK
IAogcHJpdmF0ZToKLSAgICBJREJPcGVuREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4sIGludDY0X3QgdHJhbnNhY3Rp
b25JZCwgaW50NjRfdCB2ZXJzaW9uKTsKKyAgICBJREJPcGVuREJSZXF1ZXN0KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgaW50NjRfdCB0
cmFuc2FjdGlvbklkLCB1aW50NjRfdCB2ZXJzaW9uLCBJbmRleGVkREI6OlZlcnNpb25OdWxsbmVz
cyk7CiAKLSAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBtX2RhdGFiYXNlQ2Fs
bGJhY2tzOworICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gbV9kYXRhYmFzZUNhbGxi
YWNrczsKICAgICBjb25zdCBpbnQ2NF90IG1fdHJhbnNhY3Rpb25JZDsKLSAgICBpbnQ2NF90IG1f
dmVyc2lvbjsKKyAgICB1aW50NjRfdCBtX3ZlcnNpb247CisgICAgSW5kZXhlZERCOjpWZXJzaW9u
TnVsbG5lc3MgbV92ZXJzaW9uTnVsbG5lc3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCmlu
ZGV4IDQ3ZjU1ZmYuLjFkOWZlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlJlcXVlc3QuY3BwCkBAIC0xMjAsMTUgKzEyMCw2IEBAIHVuc2lnbmVkIHNob3J0
IElEQlJlcXVlc3Q6OmVycm9yQ29kZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAgICByZXR1
cm4gbV9lcnJvckNvZGU7CiB9CiAKLVN0cmluZyBJREJSZXF1ZXN0Ojp3ZWJraXRFcnJvck1lc3Nh
Z2UoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Ci17Ci0gICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBE
T05FKSB7Ci0gICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVy
cm9yOwotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgfQotICAgIHJldHVybiBtX2Vycm9y
TWVzc2FnZTsKLX0KLQogUGFzc1JlZlB0cjxJREJBbnk+IElEQlJlcXVlc3Q6OnNvdXJjZSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5oCmluZGV4IGU1Y2NjYjQuLjI1ZjI4MzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKQEAgLTU5LDcgKzU5LDYg
QEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SURCQW55PiByZXN1bHQoRXhjZXB0aW9uQ29kZSYp
IGNvbnN0OwogICAgIHVuc2lnbmVkIHNob3J0IGVycm9yQ29kZShFeGNlcHRpb25Db2RlJikgY29u
c3Q7CiAgICAgUGFzc1JlZlB0cjxET01FcnJvcj4gZXJyb3IoRXhjZXB0aW9uQ29kZSYpIGNvbnN0
OwotICAgIFN0cmluZyB3ZWJraXRFcnJvck1lc3NhZ2UoRXhjZXB0aW9uQ29kZSYpIGNvbnN0Owog
ICAgIFBhc3NSZWZQdHI8SURCQW55PiBzb3VyY2UoKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPElE
QlRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbigpIGNvbnN0OwogICAgIHZvaWQgcHJldmVudFByb3Bh
Z2F0aW9uKCkgeyBtX3ByZXZlbnRQcm9wYWdhdGlvbiA9IHRydWU7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5pZGwKaW5kZXggMDA2ZmMxNC4uMTU3
NWI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVx
dWVzdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVz
dC5pZGwKQEAgLTMyLDI3ICszMiwxMyBAQAogICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBFdmVu
dFRhcmdldCwKICAgICBKU05vU3RhdGljVGFibGVzCi1dIGludGVyZmFjZSBJREJSZXF1ZXN0IHsK
K10gaW50ZXJmYWNlIElEQlJlcXVlc3QgOiBFdmVudFRhcmdldCB7CiAgICAgW0dldHRlclJhaXNl
c0V4Y2VwdGlvbl0gcmVhZG9ubHkgYXR0cmlidXRlIElEQkFueSByZXN1bHQ7CiAgICAgW0dldHRl
clJhaXNlc0V4Y2VwdGlvbl0gcmVhZG9ubHkgYXR0cmlidXRlIERPTUVycm9yIGVycm9yOwotICAg
IFtUcmVhdFJldHVybmVkTnVsbFN0cmluZ0FzPVVuZGVmaW5lZCwgR2V0dGVyUmFpc2VzRXhjZXB0
aW9uXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHdlYmtpdEVycm9yTWVzc2FnZTsKLQog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJBbnkgc291cmNlOwogICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBJREJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbjsKLQotICAgIC8vIFN0YXRlcwogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgcmVhZHlTdGF0ZTsKIAotICAgIC8vIEV2ZW50cwog
ICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uc3VjY2VzczsKICAgICBhdHRyaWJ1dGUgRXZl
bnRMaXN0ZW5lciBvbmVycm9yOwotCi0gICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCi0gICAg
dm9pZCBhZGRFdmVudExpc3RlbmVyKERPTVN0cmluZyB0eXBlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICBvcHRpb25hbCBib29sZWFuIHVzZUNhcHR1cmUpOwotICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0
ZW5lcihET01TdHJpbmcgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRM
aXN0ZW5lciBsaXN0ZW5lciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwg
Ym9vbGVhbiB1c2VDYXB0dXJlKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBib29sZWFuIGRpc3Bh
dGNoRXZlbnQoRXZlbnQgZXZ0KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggMDBiZGE0Yy4uMmRmYjhjYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmNwcApAQCAtMTM4LDExICsxMzgsNiBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpzZXRFcnJvcihQ
YXNzUmVmUHRyPERPTUVycm9yPiBlcnJvciwgY29uc3QgU3RyaW5nJiBlcnJvck1lcwogICAgIH0K
IH0KIAotU3RyaW5nIElEQlRyYW5zYWN0aW9uOjp3ZWJraXRFcnJvck1lc3NhZ2UoKSBjb25zdAot
ewotICAgIHJldHVybiBtX2Vycm9yTWVzc2FnZTsKLX0KLQogUGFzc1JlZlB0cjxJREJPYmplY3RT
dG9yZT4gSURCVHJhbnNhY3Rpb246Om9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG1fc3RhdGUgPT0gRmluaXNoZWQpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCmluZGV4
IDg5NzAxNTQuLmQxODU5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb24uaApAQCAtOTcsNyArOTcsNiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBvYmplY3RTdG9yZURlbGV0ZWQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRBY3RpdmUo
Ym9vbCk7CiAgICAgdm9pZCBzZXRFcnJvcihQYXNzUmVmUHRyPERPTUVycm9yPiwgY29uc3QgU3Ry
aW5nJiBlcnJvck1lc3NhZ2UpOwotICAgIFN0cmluZyB3ZWJraXRFcnJvck1lc3NhZ2UoKSBjb25z
dDsKIAogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWJvcnQpOwogICAgIERF
RklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoY29tcGxldGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaWRsCmluZGV4IDY0N2Vm
ZTEuLjhlYWM5YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5pZGwKQEAgLTI5LDI4ICsyOSwxNSBAQAogICAgIEFjdGl2ZURPTU9i
amVjdCwKICAgICBFdmVudFRhcmdldCwKICAgICBKU05vU3RhdGljVGFibGVzCi1dIGludGVyZmFj
ZSBJREJUcmFuc2FjdGlvbiB7Ci0KLSAgICAvLyBQcm9wZXJ0aWVzCitdIGludGVyZmFjZSBJREJU
cmFuc2FjdGlvbiA6IEV2ZW50VGFyZ2V0IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIG1vZGU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIElEQkRhdGFiYXNlIGRiOwogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01FcnJvciBlcnJvcjsKLSAgICBbVHJlYXRSZXR1cm5lZE51bGxT
dHJpbmdBcz1VbmRlZmluZWRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgd2Via2l0RXJy
b3JNZXNzYWdlOwogCi0gICAgLy8gTWV0aG9kcwogICAgIFtSYWlzZXNFeGNlcHRpb25dIElEQk9i
amVjdFN0b3JlIG9iamVjdFN0b3JlIChET01TdHJpbmcgbmFtZSk7CiAgICAgW1JhaXNlc0V4Y2Vw
dGlvbl0gdm9pZCBhYm9ydCAoKTsKIAotICAgIC8vIEV2ZW50cwogICAgIGF0dHJpYnV0ZSBFdmVu
dExpc3RlbmVyIG9uYWJvcnQ7CiAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jb21wbGV0
ZTsKICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVycm9yOwotICAgIC8vIEV2ZW50VGFy
Z2V0IGludGVyZmFjZQotICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihET01TdHJpbmcgdHlwZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiB1c2VDYXB0dXJlKTsKLSAgICB2
b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nIHR5cGUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Ci0gICAgW1JhaXNlc0V4Y2Vw
dGlvbl0gYm9vbGVhbiBkaXNwYXRjaEV2ZW50KEV2ZW50IGV2dCk7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVu
dC5jcHAKaW5kZXggMGM4NjFhZi4uOTRmM2MwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwCkBAIC0y
OCwyMCArMjgsMTMgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCi0jaW5jbHVk
ZSAiRXZlbnROYW1lcy5oIgotI2luY2x1ZGUgIklEQkFueS5oIgotCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVBhc3NSZWZQdHI8SURCVmVyc2lvbkNoYW5nZUV2ZW50PiBJREJWZXJzaW9uQ2hhbmdl
RXZlbnQ6OmNyZWF0ZShQYXNzUmVmUHRyPElEQkFueT4gb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJ
REJBbnk+IG5ld1ZlcnNpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKQotewotICAg
IHJldHVybiBhZG9wdFJlZihuZXcgSURCVmVyc2lvbkNoYW5nZUV2ZW50KG9sZFZlcnNpb24sIG5l
d1ZlcnNpb24sIGV2ZW50VHlwZSkpOwotfQotCi1JREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OklEQlZl
cnNpb25DaGFuZ2VFdmVudChQYXNzUmVmUHRyPElEQkFueT4gb2xkVmVyc2lvbiwgUGFzc1JlZlB0
cjxJREJBbnk+IG5ld1ZlcnNpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKQorSURC
VmVyc2lvbkNoYW5nZUV2ZW50OjpJREJWZXJzaW9uQ2hhbmdlRXZlbnQodW5zaWduZWQgbG9uZyBs
b25nIG9sZFZlcnNpb24sIHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdWZXJzaW9uLCBJbmRleGVkREI6
OlZlcnNpb25OdWxsbmVzcyBuZXdWZXJzaW9uTnVsbG5lc3MsIGNvbnN0IEF0b21pY1N0cmluZyYg
ZXZlbnRUeXBlKQogICAgIDogRXZlbnQoZXZlbnRUeXBlLCBmYWxzZSAvKmNhbkJ1YmJsZSovLCBm
YWxzZSAvKmNhbmNlbGFibGUqLykKICAgICAsIG1fb2xkVmVyc2lvbihvbGRWZXJzaW9uKQogICAg
ICwgbV9uZXdWZXJzaW9uKG5ld1ZlcnNpb24pCisgICAgLCBtX25ld1ZlcnNpb25OdWxsbmVzcyhu
ZXdWZXJzaW9uTnVsbG5lc3MpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmgKaW5kZXggZDA4NGViMi4u
OTQ4MGNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VmVyc2lvbkNoYW5nZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUo
SU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIkV2ZW50LmgiCi0jaW5jbHVkZSAiSURCQW55
LmgiCisjaW5jbHVkZSAiSW5kZXhlZERCLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CkBAIC0zOCwxOSArMzgsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJWZXJz
aW9uQ2hhbmdlRXZlbnQgOiBwdWJsaWMgRXZlbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPElEQlZlcnNpb25DaGFuZ2VFdmVudD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQW55PiBv
bGRWZXJzaW9uID0gSURCQW55OjpjcmVhdGVOdWxsKCksIFBhc3NSZWZQdHI8SURCQW55PiBuZXdW
ZXJzaW9uID0gSURCQW55OjpjcmVhdGVOdWxsKCksIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlID0gQXRvbWljU3RyaW5nKCkpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlZlcnNpb25D
aGFuZ2VFdmVudD4gY3JlYXRlKHVuc2lnbmVkIGxvbmcgbG9uZyBvbGRWZXJzaW9uID0gMCwgdW5z
aWduZWQgbG9uZyBsb25nIG5ld1ZlcnNpb24gPSAwLCBJbmRleGVkREI6OlZlcnNpb25OdWxsbmVz
cyBuZXdWZXJzaW9uTnVsbG5lc3MgPSBJbmRleGVkREI6Ok51bGxWZXJzaW9uLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSA9IEF0b21pY1N0cmluZygpKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBJREJWZXJzaW9uQ2hhbmdlRXZlbnQob2xkVmVyc2lvbiwgbmV3VmVy
c2lvbiwgbmV3VmVyc2lvbk51bGxuZXNzLCBldmVudFR5cGUpKTsKKyAgICB9CisKICAgICB2aXJ0
dWFsIH5JREJWZXJzaW9uQ2hhbmdlRXZlbnQoKTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJ
REJBbnk+IG9sZFZlcnNpb24oKSB7IHJldHVybiBtX29sZFZlcnNpb247IH0KLSAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8SURCQW55PiBuZXdWZXJzaW9uKCkgeyByZXR1cm4gbV9uZXdWZXJzaW9uOyB9
CisgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGxvbmcgb2xkVmVyc2lvbigpIHsgcmV0dXJuIG1f
b2xkVmVyc2lvbjsgfQorICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIG5ld1ZlcnNpb24o
Ym9vbCYgaXNOdWxsKSB7IGlzTnVsbCA9IChtX25ld1ZlcnNpb25OdWxsbmVzcyA9PSBJbmRleGVk
REI6Ok51bGxWZXJzaW9uKTsgcmV0dXJuIG1fbmV3VmVyc2lvbjsgfQogCiAgICAgdmlydHVhbCBF
dmVudEludGVyZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIElE
QlZlcnNpb25DaGFuZ2VFdmVudChQYXNzUmVmUHRyPElEQkFueT4gb2xkVmVyc2lvbiwgUGFzc1Jl
ZlB0cjxJREJBbnk+IG5ld1ZlcnNpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsK
KyAgICBJREJWZXJzaW9uQ2hhbmdlRXZlbnQodW5zaWduZWQgbG9uZyBsb25nIG9sZFZlcnNpb24s
IHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdWZXJzaW9uLCBJbmRleGVkREI6OlZlcnNpb25OdWxsbmVz
cyBuZXdWZXJzaW9uTnVsbG5lc3MsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKIAot
ICAgIFJlZlB0cjxJREJBbnk+IG1fb2xkVmVyc2lvbjsKLSAgICBSZWZQdHI8SURCQW55PiBtX25l
d1ZlcnNpb247CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG1fb2xkVmVyc2lvbjsKKyAgICB1bnNp
Z25lZCBsb25nIGxvbmcgbV9uZXdWZXJzaW9uOworICAgIEluZGV4ZWREQjo6VmVyc2lvbk51bGxu
ZXNzIG1fbmV3VmVyc2lvbk51bGxuZXNzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNo
YW5nZUV2ZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNp
b25DaGFuZ2VFdmVudC5pZGwKaW5kZXggZTkyMTkyOC4uOGQxMWM4YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZl
bnQuaWRsCkBAIC0yNyw2ICsyNyw2IEBACiAgICAgQ29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFT
RSwKICAgICBKU05vU3RhdGljVGFibGVzCiBdIGludGVyZmFjZSBJREJWZXJzaW9uQ2hhbmdlRXZl
bnQgOiBFdmVudCB7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIElEQkFueSBvbGRWZXJzaW9uOwot
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJBbnkgbmV3VmVyc2lvbjsKKyAgICByZWFkb25seSBh
dHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsb25nIG9sZFZlcnNpb247CisgICAgcmVhZG9ubHkgYXR0
cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZz8gbmV3VmVyc2lvbjsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JbmRleGVkREIuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oCmluZGV4IDJlODRmYzcuLmNiN2U4ZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oCkBAIC01
MCw2ICs1MCwxMSBAQCBlbnVtIEN1cnNvclR5cGUgewogICAgIEN1cnNvcktleU9ubHkKIH07CiAK
K2VudW0gVmVyc2lvbk51bGxuZXNzIHsKKyAgICBOdWxsVmVyc2lvbiwKKyAgICBOb25OdWxsVmVy
c2lvbgorfTsKKwogfSAvLyBuYW1lc3BhY2UgSW5kZXhlZERCCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVs
ZGIvSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIuY3BwCmluZGV4IDUyNTA1NDku
LmU1ZjRjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xl
dmVsZGIvSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJCYWNraW5nU3RvcmVMZXZlbERCLmNwcApAQCAtNTEw
LDcgKzUxMCw5IEBAIGJvb2wgSURCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRh
KGNvbnN0IFN0cmluZyYgbmFtZSwgSURCRGF0YWJhc2VNZXRhCiAgICAgaWYgKCFmb3VuZCkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBvayA9IGdldFN0cmluZyhtX2RiLmdldCgpLCBEYXRh
YmFzZU1ldGFEYXRhS2V5OjplbmNvZGUobWV0YWRhdGEtPmlkLCBEYXRhYmFzZU1ldGFEYXRhS2V5
OjpVc2VyVmVyc2lvbiksIG1ldGFkYXRhLT52ZXJzaW9uLCBmb3VuZCk7CisgICAgLy8gRklYTUU6
IFRoZSBzdHJpbmcgdmVyc2lvbiBpcyBubyBsb25nZXIgc3VwcG9ydGVkLCBzbyB0aGUgbGV2ZWxE
QiBwb3J0cyBzaG91bGQgY29uc2lkZXIgcmVmYWN0b3Jpbmcgb2ZmIG9mIGl0LgorICAgIFN0cmlu
ZyBzdHJpbmdWZXJzaW9uOworICAgIG9rID0gZ2V0U3RyaW5nKG1fZGIuZ2V0KCksIERhdGFiYXNl
TWV0YURhdGFLZXk6OmVuY29kZShtZXRhZGF0YS0+aWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVz
ZXJWZXJzaW9uKSwgc3RyaW5nVmVyc2lvbiwgZm91bmQpOwogICAgIGlmICghb2spIHsKICAgICAg
ICAgSU5URVJOQUxfUkVBRF9FUlJPUihHZXRJREJEYXRhYmFzZU1ldGFEYXRhKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtNTIwLDcgKzUyMiw4IEBAIGJvb2wgSURCQmFja2luZ1N0b3JlOjpn
ZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCRGF0YWJhc2VNZXRh
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBvayA9IGdldFZhckludChtX2Ri
LmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUobWV0YWRhdGEtPmlkLCBEYXRhYmFz
ZU1ldGFEYXRhS2V5OjpVc2VySW50VmVyc2lvbiksIG1ldGFkYXRhLT5pbnRWZXJzaW9uLCBmb3Vu
ZCk7CisgICAgaW50NjRfdCB2ZXJzaW9uOworICAgIG9rID0gZ2V0VmFySW50KG1fZGIuZ2V0KCks
IERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShtZXRhZGF0YS0+aWQsIERhdGFiYXNlTWV0YURh
dGFLZXk6OlVzZXJJbnRWZXJzaW9uKSwgdmVyc2lvbiwgZm91bmQpOwogICAgIGlmICghb2spIHsK
ICAgICAgICAgSU5URVJOQUxfUkVBRF9FUlJPUihHZXRJREJEYXRhYmFzZU1ldGFEYXRhKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTMwLDggKzUzMywxMSBAQCBib29sIElEQkJhY2tpbmdT
dG9yZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIElEQkRhdGFi
YXNlTWV0YQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKG1ldGFkYXRh
LT5pbnRWZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6OkRlZmF1bHRJbnRWZXJzaW9uKQot
ICAgICAgICBtZXRhZGF0YS0+aW50VmVyc2lvbiA9IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50
VmVyc2lvbjsKKyAgICAvLyBGSVhNRTogVGhlIHZlcnNpb25pbmcgc2VtYW50aWNzIGhhdmUgY2hh
bmdlZCBzaW5jZSB0aGlzIG9yaWdpbmFsIGNvZGUgd2FzIHdyaXR0ZW4sIGFuZCB3aGF0IHdhcyBv
bmNlIGEgbmVnYXRpdmUgbnVtYmVyCisgICAgLy8gc3RvcmVkIGluIHRoZSBkYXRhYmFzZSBpcyBu
byBsb25nZXIgYSB2YWxpZCB2ZXJzaW9uLgorICAgIGlmICh2ZXJzaW9uIDwgMCkKKyAgICAgICAg
dmVyc2lvbiA9IDA7CisgICAgbWV0YWRhdGEtPnZlcnNpb24gPSB2ZXJzaW9uOwogCiAgICAgb2sg
PSBnZXRNYXhPYmplY3RTdG9yZUlkKG1fZGIuZ2V0KCksIG1ldGFkYXRhLT5pZCwgbWV0YWRhdGEt
Pm1heE9iamVjdFN0b3JlSWQpOwogICAgIGlmICghb2spIHsKQEAgLTU2OSw2ICs1NzUsNyBAQCBX
QVJOX1VOVVNFRF9SRVRVUk4gc3RhdGljIGJvb2wgZ2V0TmV3RGF0YWJhc2VJZChMZXZlbERCRGF0
YWJhc2UqIGRiLCBpbnQ2NF90JiBuZQogICAgIHJldHVybiB0cnVlOwogfQogCisvLyBGSVhNRTog
VGhlIHZlcnNpb24gc2VtYW50aWNzIGhhdmUgY2hhbmdlZC4gU3RyaW5nIHZlcnNpb25zIG5vIGxv
bmdlciBleGlzdCwgYW5kIHRoZSBpbnRlZ2VyIHZlcnNpb24gaXMgbm93IGEgdWludDY0X3QKIGJv
b2wgSURCQmFja2luZ1N0b3JlOjpjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBpbnQ2NF90IGludFZlcnNpb24sIGludDY0
X3QmIHJvd0lkKQogewogICAgIGJvb2wgb2sgPSBnZXROZXdEYXRhYmFzZUlkKG1fZGIuZ2V0KCks
IHJvd0lkKTsKQEAgLTE4MDQsNyArMTgxMSw3IEBAIGJvb2wgSW5kZXhDdXJzb3JJbXBsOjpsb2Fk
Q3VycmVudFJvdygpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgb2JqZWN0U3RvcmVDdXJz
b3JPcHRpb25zKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJh
c2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIElu
ZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCQmFja2luZ1N0b3JlOjpDdXJz
b3I6OkN1cnNvck9wdGlvbnMmIGN1cnNvck9wdGlvbnMpCitzdGF0aWMgYm9vbCBvYmplY3RTdG9y
ZUN1cnNvck9wdGlvbnMoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBk
YXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiByYW5n
ZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJCYWNraW5nU3RvcmU6
OkN1cnNvcjo6Q3Vyc29yT3B0aW9ucyYgY3Vyc29yT3B0aW9ucykKIHsKICAgICBjdXJzb3JPcHRp
b25zLmRhdGFiYXNlSWQgPSBkYXRhYmFzZUlkOwogICAgIGN1cnNvck9wdGlvbnMub2JqZWN0U3Rv
cmVJZCA9IG9iamVjdFN0b3JlSWQ7CkBAIC0xODU0LDcgKzE4NjEsNyBAQCBib29sIG9iamVjdFN0
b3JlQ3Vyc29yT3B0aW9ucyhMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90
IGRhdGFiYXNlSQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIGluZGV4Q3Vyc29yT3B0aW9u
cyhMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGlu
dDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSog
cmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCQmFja2luZ1N0
b3JlOjpDdXJzb3I6OkN1cnNvck9wdGlvbnMmIGN1cnNvck9wdGlvbnMpCitzdGF0aWMgYm9vbCBp
bmRleEN1cnNvck9wdGlvbnMoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRf
dCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29u
c3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rp
b24sIElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yOjpDdXJzb3JPcHRpb25zJiBjdXJzb3JPcHRpb25z
KQogewogICAgIEFTU0VSVCh0cmFuc2FjdGlvbik7CiAgICAgaWYgKCFLZXlQcmVmaXg6OnZhbGlk
SWRzKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJEYXRhYmFzZUJhY2tlbmRM
ZXZlbERCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURC
RGF0YWJhc2VCYWNrZW5kTGV2ZWxEQi5jcHAKaW5kZXggOWQ5OWRhZC4uMTE5OTQ3MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJEYXRhYmFz
ZUJhY2tlbmRMZXZlbERCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9sZXZlbGRiL0lEQkRhdGFiYXNlQmFja2VuZExldmVsREIuY3BwCkBAIC00NzMsMTMgKzQ3Myw5
IEBAIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQj4gSURCRGF0YWJhc2VCYWNr
ZW5kTGV2ZWxEQjo6Y3JlYXRlKGNvbnN0IFN0CiAgICAgcmV0dXJuIGJhY2tlbmQucmVsZWFzZSgp
OwogfQogCi1uYW1lc3BhY2UgewotY29uc3QgY2hhciogTm9TdHJpbmdWZXJzaW9uID0gIiI7Ci19
Ci0KIElEQkRhdGFiYXNlQmFja2VuZExldmVsREI6OklEQkRhdGFiYXNlQmFja2VuZExldmVsREIo
Y29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgSURCRmFj
dG9yeUJhY2tlbmRMZXZlbERCKiBmYWN0b3J5LCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZp
ZXIpCiAgICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCi0gICAgLCBtX21ldGFkYXRh
KG5hbWUsIEludmFsaWRJZCwgTm9TdHJpbmdWZXJzaW9uLCBJREJEYXRhYmFzZU1ldGFkYXRhOjpO
b0ludFZlcnNpb24sIEludmFsaWRJZCkKKyAgICAsIG1fbWV0YWRhdGEobmFtZSwgSW52YWxpZElk
LCAwLCBJbnZhbGlkSWQpCiAgICAgLCBtX2lkZW50aWZpZXIodW5pcXVlSWRlbnRpZmllcikKICAg
ICAsIG1fZmFjdG9yeShmYWN0b3J5KQogICAgICwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yKElE
QlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCOjpjcmVhdGUoKSkKQEAgLTUzOCw3ICs1MzQs
NyBAQCBib29sIElEQkRhdGFiYXNlQmFja2VuZExldmVsREI6Om9wZW5JbnRlcm5hbCgpCiAgICAg
aWYgKHN1Y2Nlc3MpCiAgICAgICAgIHJldHVybiBtX2JhY2tpbmdTdG9yZS0+Z2V0T2JqZWN0U3Rv
cmVzKG1fbWV0YWRhdGEuaWQsICZtX21ldGFkYXRhLm9iamVjdFN0b3Jlcyk7CiAKLSAgICByZXR1
cm4gbV9iYWNraW5nU3RvcmUtPmNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEobV9tZXRhZGF0YS5u
YW1lLCBtX21ldGFkYXRhLnZlcnNpb24sIG1fbWV0YWRhdGEuaW50VmVyc2lvbiwgbV9tZXRhZGF0
YS5pZCk7CisgICAgcmV0dXJuIG1fYmFja2luZ1N0b3JlLT5jcmVhdGVJREJEYXRhYmFzZU1ldGFE
YXRhKG1fbWV0YWRhdGEubmFtZSwgU3RyaW5nOjpudW1iZXIobV9tZXRhZGF0YS52ZXJzaW9uKSwg
bV9tZXRhZGF0YS52ZXJzaW9uLCBtX21ldGFkYXRhLmlkKTsKIH0KIAogSURCRGF0YWJhc2VCYWNr
ZW5kTGV2ZWxEQjo6fklEQkRhdGFiYXNlQmFja2VuZExldmVsREIoKQpAQCAtMTA3MiwxMCArMTA2
OCwxMiBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZExldmVsREI6OlZlcnNpb25DaGFuZ2VPcGVy
YXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3Rpb25CYQogewogICAgIElEQl9UUkFDRSgiVmVyc2lv
bkNoYW5nZU9wZXJhdGlvbiIpOwogICAgIGludDY0X3QgZGF0YWJhc2VJZCA9IG1fZGF0YWJhc2Ut
PmlkKCk7Ci0gICAgaW50NjRfdCBvbGRWZXJzaW9uID0gbV9kYXRhYmFzZS0+bV9tZXRhZGF0YS5p
bnRWZXJzaW9uOwotICAgIEFTU0VSVChtX3ZlcnNpb24gPiBvbGRWZXJzaW9uKTsKLSAgICBtX2Rh
dGFiYXNlLT5tX21ldGFkYXRhLmludFZlcnNpb24gPSBtX3ZlcnNpb247Ci0gICAgaWYgKCFtX2Rh
dGFiYXNlLT5tX2JhY2tpbmdTdG9yZS0+dXBkYXRlSURCRGF0YWJhc2VJbnRWZXJzaW9uKHRyYW5z
YWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBkYXRhYmFzZUlkLCBtX2RhdGFiYXNl
LT5tX21ldGFkYXRhLmludFZlcnNpb24pKSB7CisgICAgdWludDY0X3Qgb2xkVmVyc2lvbiA9IG1f
ZGF0YWJhc2UtPm1fbWV0YWRhdGEudmVyc2lvbjsKKworICAgIC8vIEZJWE1FOiBEYXRhYmFzZSB2
ZXJzaW9ucyBhcmUgbm93IG9mIHR5cGUgdWludDY0X3QsIGJ1dCB0aGlzIGNvZGUgZXhwZWN0ZWQg
aW50NjRfdC4KKyAgICBBU1NFUlQobV92ZXJzaW9uID4gKGludDY0X3Qpb2xkVmVyc2lvbik7Cisg
ICAgbV9kYXRhYmFzZS0+bV9tZXRhZGF0YS52ZXJzaW9uID0gbV92ZXJzaW9uOworICAgIGlmICgh
bV9kYXRhYmFzZS0+bV9iYWNraW5nU3RvcmUtPnVwZGF0ZUlEQkRhdGFiYXNlSW50VmVyc2lvbih0
cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgZGF0YWJhc2VJZCwgbV9kYXRh
YmFzZS0+bV9tZXRhZGF0YS52ZXJzaW9uKSkgewogICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VF
cnJvcj4gZXJyb3IgPSBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRp
b246OlVua25vd25FcnJvciwgIkVycm9yIHdyaXRpbmcgZGF0YSB0byBzdGFibGUgc3RvcmFnZSB3
aGVuIHVwZGF0aW5nIHZlcnNpb24uIik7CiAgICAgICAgIG1fY2FsbGJhY2tzLT5vbkVycm9yKGVy
cm9yKTsKICAgICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KGVycm9yKTsKQEAgLTExMzgsNyArMTEz
Niw4IEBAIHNpemVfdCBJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpjb25uZWN0aW9uQ291bnQo
KQogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpwcm9jZXNzUGVuZGluZ0NhbGxzKCkK
IHsKICAgICBpZiAobV9wZW5kaW5nU2Vjb25kSGFsZk9wZW4pIHsKLSAgICAgICAgQVNTRVJUKG1f
cGVuZGluZ1NlY29uZEhhbGZPcGVuLT52ZXJzaW9uKCkgPT0gbV9tZXRhZGF0YS5pbnRWZXJzaW9u
KTsKKyAgICAgICAgLy8gRklYTUU6IERhdGFiYXNlIHZlcnNpb25zIGFyZSBub3cgb2YgdHlwZSB1
aW50NjRfdCwgYnV0IHRoaXMgY29kZSBleHBlY3RlZCBpbnQ2NF90LgorICAgICAgICBBU1NFUlQo
bV9wZW5kaW5nU2Vjb25kSGFsZk9wZW4tPnZlcnNpb24oKSA9PSAoaW50NjRfdCltX21ldGFkYXRh
LnZlcnNpb24pOwogICAgICAgICBBU1NFUlQobV9tZXRhZGF0YS5pZCAhPSBJbnZhbGlkSWQpOwog
ICAgICAgICBtX3BlbmRpbmdTZWNvbmRIYWxmT3Blbi0+Y2FsbGJhY2tzKCktPm9uU3VjY2Vzcyh0
aGlzLCB0aGlzLT5tZXRhZGF0YSgpKTsKICAgICAgICAgbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW4u
cmVsZWFzZSgpOwpAQCAtMTE5NCw3ICsxMTkzLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRM
ZXZlbERCOjpvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGIK
ICAgICBpZiAobV9tZXRhZGF0YS5pZCA9PSBJbnZhbGlkSWQpIHsKICAgICAgICAgLy8gVGhlIGRh
dGFiYXNlIHdhcyBkZWxldGVkIHRoZW4gaW1tZWRpYXRlbHkgcmUtb3BlbmVkOyBvcGVuSW50ZXJu
YWwoKSByZWNyZWF0ZXMgaXQgaW4gdGhlIGJhY2tpbmcgc3RvcmUuCiAgICAgICAgIGlmIChvcGVu
SW50ZXJuYWwoKSkKLSAgICAgICAgICAgIEFTU0VSVChtX21ldGFkYXRhLmludFZlcnNpb24gPT0g
SURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKTsKKyAgICAgICAgICAgIEFTU0VSVCht
X21ldGFkYXRhLnZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKTsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZTsKICAgICAgICAgICAg
IFJlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvcjsKQEAgLTEyMDgsNyArMTIwNyw3IEBAIHZv
aWQgSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQjo6b3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IHBycENhbGxiCiAgICAgfQogCiAgICAgLy8gV2UgaW5mZXIgdGhhdCB0aGUg
ZGF0YWJhc2UgZGlkbid0IGV4aXN0IGZyb20gaXRzIGxhY2sgb2YgZWl0aGVyIHR5cGUgb2YgdmVy
c2lvbi4KLSAgICBib29sIGlzTmV3RGF0YWJhc2UgPSBtX21ldGFkYXRhLnZlcnNpb24gPT0gTm9T
dHJpbmdWZXJzaW9uICYmIG1fbWV0YWRhdGEuaW50VmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFk
YXRhOjpOb0ludFZlcnNpb247CisgICAgYm9vbCBpc05ld0RhdGFiYXNlID0gbV9tZXRhZGF0YS52
ZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbjsKIAogICAgIGlmICh2
ZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6OkRlZmF1bHRJbnRWZXJzaW9uKSB7CiAgICAg
ICAgIC8vIEZJWE1FOiB0aGlzIGNvbW1lbnRzIHdhcyByZWxhdGVkIHRvIENocm9taXVtIGNvZGUu
IEl0IG1heSBiZSBpbmNvcnJlY3QKQEAgLTEyMjksMTUgKzEyMjgsMjAgQEAgdm9pZCBJREJEYXRh
YmFzZUJhY2tlbmRMZXZlbERCOjpvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4gcHJwQ2FsbGIKICAgICAgICAgdmVyc2lvbiA9IDE7CiAgICAgfQogCi0gICAgaWYgKHZlcnNp
b24gPiBtX21ldGFkYXRhLmludFZlcnNpb24pIHsKKyAgICAvLyBGSVhNRTogRGF0YWJhc2UgdmVy
c2lvbnMgYXJlIG5vdyBvZiB0eXBlIHVpbnQ2NF90LCBidXQgdGhpcyBjb2RlIGV4cGVjdGVkIGlu
dDY0X3QuCisgICAgaWYgKHZlcnNpb24gPiAoaW50NjRfdCltX21ldGFkYXRhLnZlcnNpb24pIHsK
ICAgICAgICAgcnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGNhbGxiYWNrcywgZGF0YWJh
c2VDYWxsYmFja3MsIHRyYW5zYWN0aW9uSWQsIHZlcnNpb24pOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIGlmICh2ZXJzaW9uIDwgbV9tZXRhZGF0YS5pbnRWZXJzaW9uKSB7Ci0gICAgICAg
IGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VF
eGNlcHRpb246OlZlcnNpb25FcnJvciwgU3RyaW5nOjpmb3JtYXQoIlRoZSByZXF1ZXN0ZWQgdmVy
c2lvbiAoJWxsZCkgaXMgbGVzcyB0aGFuIHRoZSBleGlzdGluZyB2ZXJzaW9uICglbGxkKS4iLCBz
dGF0aWNfY2FzdDxsb25nIGxvbmc+KHZlcnNpb24pLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KG1f
bWV0YWRhdGEuaW50VmVyc2lvbikpKSk7CisKKyAgICAvLyBGSVhNRTogRGF0YWJhc2UgdmVyc2lv
bnMgYXJlIG5vdyBvZiB0eXBlIHVpbnQ2NF90LCBidXQgdGhpcyBjb2RlIGV4cGVjdGVkIGludDY0
X3QuCisgICAgaWYgKHZlcnNpb24gPCAoaW50NjRfdCltX21ldGFkYXRhLnZlcnNpb24pIHsKKyAg
ICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VmVyc2lvbkVycm9yLCBTdHJpbmc6OmZvcm1hdCgiVGhlIHJlcXVlc3Rl
ZCB2ZXJzaW9uICglbGxkKSBpcyBsZXNzIHRoYW4gdGhlIGV4aXN0aW5nIHZlcnNpb24gKCVsbGQp
LiIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4odmVyc2lvbiksIHN0YXRpY19jYXN0PGxvbmcgbG9u
Zz4obV9tZXRhZGF0YS52ZXJzaW9uKSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBB
U1NFUlQodmVyc2lvbiA9PSBtX21ldGFkYXRhLmludFZlcnNpb24pOworCisgICAgLy8gRklYTUU6
IERhdGFiYXNlIHZlcnNpb25zIGFyZSBub3cgb2YgdHlwZSB1aW50NjRfdCwgYnV0IHRoaXMgY29k
ZSBleHBlY3RlZCBpbnQ2NF90LgorICAgIEFTU0VSVCh2ZXJzaW9uID09IChpbnQ2NF90KW1fbWV0
YWRhdGEudmVyc2lvbik7CiAgICAgbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5hZGQoZGF0YWJhc2VD
YWxsYmFja3MpOwogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKHRoaXMsIHRoaXMtPm1ldGFkYXRh
KCkpOwogfQpAQCAtMTI1MCw3ICsxMjU0LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRMZXZl
bERCOjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxJREJDYWwKICAg
ICBmb3IgKERhdGFiYXNlQ2FsbGJhY2tzU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZGF0YWJh
c2VDYWxsYmFja3NTZXQuYmVnaW4oKTsgaXQgIT0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5lbmQo
KTsgKytpdCkgewogICAgICAgICAvLyBGcm9udCBlbmQgZW5zdXJlcyB0aGUgZXZlbnQgaXMgbm90
IGZpcmVkIGF0IGNvbm5lY3Rpb25zIHRoYXQgaGF2ZSBjbG9zZVBlbmRpbmcgc2V0LgogICAgICAg
ICBpZiAoKml0ICE9IGRhdGFiYXNlQ2FsbGJhY2tzKQotICAgICAgICAgICAgKCppdCktPm9uVmVy
c2lvbkNoYW5nZShtX21ldGFkYXRhLmludFZlcnNpb24sIHJlcXVlc3RlZFZlcnNpb24pOworICAg
ICAgICAgICAgKCppdCktPm9uVmVyc2lvbkNoYW5nZShtX21ldGFkYXRhLnZlcnNpb24sIHJlcXVl
c3RlZFZlcnNpb24sIEluZGV4ZWREQjo6TnVsbFZlcnNpb24pOwogICAgIH0KICAgICAvLyBUaGUg
c3BlYyBkaWN0YXRlcyB3ZSB3YWl0IHVudGlsIGFsbCB0aGUgdmVyc2lvbiBjaGFuZ2UgZXZlbnRz
IGFyZQogICAgIC8vIGRlbGl2ZXJlZCBhbmQgdGhlbiBjaGVjayBtX2RhdGFiYXNlQ2FsbGJhY2tz
LmVtcHR5KCkgYmVmb3JlIHByb2NlZWRpbmcKQEAgLTEyNjAsNyArMTI2NCw3IEBAIHZvaWQgSURC
RGF0YWJhc2VCYWNrZW5kTGV2ZWxEQjo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKFBh
c3NSZWZQdHI8SURCQ2FsCiAgICAgLy8gdGVsbHMgdXMgdGhhdCBhbGwgdGhlIGJsb2NrZWQgZXZl
bnRzIGhhdmUgYmVlbiBkZWxpdmVyZWQuIFNlZQogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MTEzMAogICAgIGlmIChjb25uZWN0aW9uQ291bnQoKSkKLSAg
ICAgICAgY2FsbGJhY2tzLT5vbkJsb2NrZWQobV9tZXRhZGF0YS5pbnRWZXJzaW9uKTsKKyAgICAg
ICAgY2FsbGJhY2tzLT5vbkJsb2NrZWQobV9tZXRhZGF0YS52ZXJzaW9uKTsKICAgICAvLyBGSVhN
RTogQWRkIHRlc3QgZm9yIG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi4KICAgICBp
ZiAobV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8IGNvbm5lY3Rpb25Db3VudCgp
KSB7CiAgICAgICAgIG1fcGVuZGluZ09wZW5DYWxscy5hcHBlbmQoUGVuZGluZ09wZW5DYWxsOjpj
cmVhdGUoY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgdHJhbnNhY3Rpb25JZCwgcmVxdWVz
dGVkVmVyc2lvbikpOwpAQCAtMTI3MSw3ICsxMjc1LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRMZXZlbERCOjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxJREJD
YWwKICAgICBjcmVhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkLCBkYXRhYmFzZUNhbGxiYWNr
cywgb2JqZWN0U3RvcmVJZHMsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKTsK
ICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQj4gdHJhbnNhY3Rpb24gPSBt
X3RyYW5zYWN0aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7CiAKLSAgICB0cmFuc2FjdGlvbi0+c2No
ZWR1bGVUYXNrKFZlcnNpb25DaGFuZ2VPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCB0cmFuc2FjdGlv
bklkLCByZXF1ZXN0ZWRWZXJzaW9uLCBjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKSwgVmVy
c2lvbkNoYW5nZUFib3J0T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbV9tZXRhZGF0YS52ZXJzaW9u
LCBtX21ldGFkYXRhLmludFZlcnNpb24pKTsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNr
KFZlcnNpb25DaGFuZ2VPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCB0cmFuc2FjdGlvbklkLCByZXF1
ZXN0ZWRWZXJzaW9uLCBjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKSwgVmVyc2lvbkNoYW5n
ZUFib3J0T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgU3RyaW5nOjpudW1iZXIobV9tZXRhZGF0YS52
ZXJzaW9uKSwgbV9tZXRhZGF0YS52ZXJzaW9uKSk7CiAKICAgICBBU1NFUlQoIW1fcGVuZGluZ1Nl
Y29uZEhhbGZPcGVuKTsKICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmFkZChkYXRhYmFzZUNh
bGxiYWNrcyk7CkBAIC0xMjgzLDEyICsxMjg3LDEyIEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5k
TGV2ZWxEQjo6ZGVsZXRlRGF0YWJhc2UoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxi
CiAgICAgaWYgKGlzRGVsZXRlRGF0YWJhc2VCbG9ja2VkKCkpIHsKICAgICAgICAgZm9yIChEYXRh
YmFzZUNhbGxiYWNrc1NldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNlQ2FsbGJhY2tz
U2V0LmJlZ2luKCk7IGl0ICE9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuZW5kKCk7ICsraXQpIHsK
ICAgICAgICAgICAgIC8vIEZyb250IGVuZCBlbnN1cmVzIHRoZSBldmVudCBpcyBub3QgZmlyZWQg
YXQgY29ubmVjdGlvbnMgdGhhdCBoYXZlIGNsb3NlUGVuZGluZyBzZXQuCi0gICAgICAgICAgICAo
Kml0KS0+b25WZXJzaW9uQ2hhbmdlKG1fbWV0YWRhdGEuaW50VmVyc2lvbiwgSURCRGF0YWJhc2VN
ZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKTsKKyAgICAgICAgICAgICgqaXQpLT5vblZlcnNpb25DaGFu
Z2UobV9tZXRhZGF0YS52ZXJzaW9uLCAwLCBJbmRleGVkREI6Ok51bGxWZXJzaW9uKTsKICAgICAg
ICAgfQogICAgICAgICAvLyBGSVhNRTogT25seSBmaXJlIG9uQmxvY2tlZCBpZiB0aGVyZSBhcmUg
b3BlbiBjb25uZWN0aW9ucyBhZnRlciB0aGUKICAgICAgICAgLy8gVmVyc2lvbkNoYW5nZUV2ZW50
cyBhcmUgcmVjZWl2ZWQsIG5vdCBqdXN0IHNldCB1cCB0byBmaXJlLgogICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMzAKLSAgICAgICAgY2FsbGJh
Y2tzLT5vbkJsb2NrZWQobV9tZXRhZGF0YS5pbnRWZXJzaW9uKTsKKyAgICAgICAgY2FsbGJhY2tz
LT5vbkJsb2NrZWQobV9tZXRhZGF0YS52ZXJzaW9uKTsKICAgICAgICAgbV9wZW5kaW5nRGVsZXRl
Q2FsbHMuYXBwZW5kKFBlbmRpbmdEZWxldGVDYWxsOjpjcmVhdGUoY2FsbGJhY2tzLnJlbGVhc2Uo
KSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTMwOCw5ICsxMzEyLDggQEAgdm9pZCBJ
REJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpkZWxldGVEYXRhYmFzZUZpbmFsKFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBjYWwKICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNl
RXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJu
YWwgZXJyb3IgZGVsZXRpbmcgZGF0YWJhc2UuIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIG1fbWV0YWRhdGEudmVyc2lvbiA9IE5vU3RyaW5nVmVyc2lvbjsKICAgICBtX21ldGFkYXRh
LmlkID0gSW52YWxpZElkOwotICAgIG1fbWV0YWRhdGEuaW50VmVyc2lvbiA9IElEQkRhdGFiYXNl
TWV0YWRhdGE6Ok5vSW50VmVyc2lvbjsKKyAgICBtX21ldGFkYXRhLnZlcnNpb24gPSBJREJEYXRh
YmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb247CiAgICAgbV9tZXRhZGF0YS5vYmplY3RTdG9yZXMu
Y2xlYXIoKTsKICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcygpOwogfQpAQCAtMTM3NSw4ICsxMzc4
LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpWZXJzaW9uQ2hhbmdlQWJvcnRP
cGVyYXRpb246OnBlcmZvcm0oSURCVHJhbnNhY3QKIHsKICAgICBJREJfVFJBQ0UoIlZlcnNpb25D
aGFuZ2VBYm9ydE9wZXJhdGlvbiIpOwogICAgIEFTU0VSVF9VTlVTRUQodHJhbnNhY3Rpb24sICF0
cmFuc2FjdGlvbik7Ci0gICAgbV9kYXRhYmFzZS0+bV9tZXRhZGF0YS52ZXJzaW9uID0gbV9wcmV2
aW91c1ZlcnNpb247Ci0gICAgbV9kYXRhYmFzZS0+bV9tZXRhZGF0YS5pbnRWZXJzaW9uID0gbV9w
cmV2aW91c0ludFZlcnNpb247CisgICAgbV9kYXRhYmFzZS0+bV9tZXRhZGF0YS52ZXJzaW9uID0g
bV9wcmV2aW91c0ludFZlcnNpb247CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCTGV2ZWxE
QkNvZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lE
QkxldmVsREJDb2RpbmcuY3BwCmluZGV4IDA0ZTQyNTkuLjAwOGNiMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCTGV2ZWxEQkNvZGluZy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJMZXZl
bERCQ29kaW5nLmNwcApAQCAtNTgwLDcgKzU4MCw3IEBAIHN0YXRpYyBJREJLZXk6OlR5cGUga2V5
VHlwZUJ5dGVUb0tleVR5cGUodW5zaWduZWQgY2hhciB0eXBlKQogICAgIHJldHVybiBJREJLZXk6
OkludmFsaWRUeXBlOwogfQogCi1pbnQgY29tcGFyZUVuY29kZWRJREJLZXlzKGNvbnN0IGNoYXIq
JiBwdHJBLCBjb25zdCBjaGFyKiBsaW1pdEEsIGNvbnN0IGNoYXIqJiBwdHJCLCBjb25zdCBjaGFy
KiBsaW1pdEIsIGJvb2wmIG9rKQorc3RhdGljIGludCBjb21wYXJlRW5jb2RlZElEQktleXMoY29u
c3QgY2hhciomIHB0ckEsIGNvbnN0IGNoYXIqIGxpbWl0QSwgY29uc3QgY2hhciomIHB0ckIsIGNv
bnN0IGNoYXIqIGxpbWl0QiwgYm9vbCYgb2spCiB7CiAgICAgb2sgPSB0cnVlOwogICAgIEFTU0VS
VCgmcHRyQSAhPSAmcHRyQik7Cg==
</data>
<flag name="commit-queue"
          id="235116"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212847</attachid>
            <date>2013-09-27 15:47:43 -0700</date>
            <delta_ts>2013-09-27 16:00:56 -0700</delta_ts>
            <desc>Patch v4 - Now with more stdint.h</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>55091</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NmIzY2UwLi5mNzc5NzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTYg
QEAKKzIwMTMtMDktMjcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIEluZGV4ZWREQiBJREwgUmVmYWN0b3JpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE5OTYKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4
ZXkgUHJvc2t1cnlha292LgorCisgICAgICAgIFRoaXMgaW5jbHVkZXM6CisgICAgICAgIDEgLSBM
ZXZlcmFnaW5nIEV2ZW50VGFyZ2V0LmlkbCBpbmhlcml0YW5jZQorICAgICAgICAyIC0gUmVtb3Zp
bmcgY29tbWVudHMKKyAgICAgICAgMyAtIFJlb3JkZXJpbmcgdG8gbWF0Y2ggdGhlIHNwZWMncyBJ
RExzCisgICAgICAgIDQgLSBSZW1vdmluZyBub25zdGFuZGFyZCwgV2ViS2l0LXNwZWNpZmljIG1l
dGhvZHMKKyAgICAgICAgNSAtIFVwZGF0aW5nIGludGVyZmFjZXMgdG8gbWF0Y2ggdGhlIHNwZWMg
KHZlcnNpb25zIGFyZSBvbmx5IHVpbnQ2NF90J3Mgbm93Li4uKQorICAgICAgICA2IC0gVXBkYXRp
bmcgaW1wbGVtZW50YXRpb24gY29kZSBhcyBuZWVkZWQgKHZlcnNpb25zIGFyZSBvbmx5IHVpbnQ2
NF90J3Mgbm93Li4uKQorCisgICAgICAgIElETCBjaGFuZ2VzOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvci5pZGw6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaWRs
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5pZGw6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuaWRsOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQu
aWRsOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSW5kZXhlZERCLmg6IEFkZCBuZXcg
ZW51bSB0byByZXByZXNlbnQgdmVyc2lvbiBudWxsbmVzcy4KKworICAgICAgICBBZGFwdCB0byBu
ZXcgSURMcywgYW5kIGFsc28gcmVmYWN0b3IgcmVwcmVzZW50YXRpb24gb2YgaW5pdGlhbCwgbnVs
bCB2ZXJzaW9uaW5nOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5o
OgorICAgICAgICAoV2ViQ29yZTo6SURCQ2FsbGJhY2tzOjpvbkJsb2NrZWQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2FsbGJhY2tzOjpvblVwZ3JhZGVOZWVkZWQpOgorCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2U6OnZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6Om9uVmVyc2lv
bkNoYW5nZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaDoKKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmg6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6b25WZXJzaW9uQ2hhbmdl
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwu
aDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRmFjdG9yeTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0
b3J5OjpvcGVuSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeTo6ZGVsZXRl
RGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaDoKKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhOjpJREJEYXRhYmFzZU1ldGFkYXRhKToKKworICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9w
ZW5EQlJlcXVlc3Q6OklEQk9wZW5EQlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCT3Bl
bkRCUmVxdWVzdDo6b25CbG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVl
c3Q6Om9uVXBncmFkZU5lZWRlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3Bl
bkRCUmVxdWVzdC5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5j
cHA6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oOgorCisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVmVy
c2lvbkNoYW5nZUV2ZW50OjpJREJWZXJzaW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
SURCVmVyc2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVmVy
c2lvbkNoYW5nZUV2ZW50OjpvbGRWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlZlcnNp
b25DaGFuZ2VFdmVudDo6bmV3VmVyc2lvbik6CisKKyAgICAgICAgS2VlcCBsZXZlbGRiIGJ1aWxk
aW5nIHdpdGggbWluaW1hbCBhZGFwdGF0aW9ucyB0byB0aGUgbmV3IElETHMsCisgICAgICAgIGJ1
dCBub3RlIHRoYXQgdGhlIExldmVsREIgaW1wbGVtZW50YXRpb24gaXMgbm93IGluY29tcGF0aWJs
ZSB3aXRoIHRoZSBzcGVjOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURC
QmFja2luZ1N0b3JlTGV2ZWxEQi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3Rv
cmU6OmdldElEQkRhdGFiYXNlTWV0YURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6b2JqZWN0U3Rv
cmVDdXJzb3JPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OmluZGV4Q3Vyc29yT3B0aW9ucyk6
CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZExldmVsREIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxE
Qjo6SURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZUJhY2tlbmRMZXZlbERCOjpvcGVuSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kTGV2ZWxEQjo6VmVyc2lvbkNoYW5nZU9wZXJhdGlvbjo6cGVyZm9ybSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpwcm9jZXNzUGVu
ZGluZ0NhbGxzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZExldmVsREI6
Om9wZW5Db25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZExl
dmVsREI6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpkZWxldGVEYXRhYmFzZUZpbmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZExldmVsREI6OlZlcnNpb25DaGFu
Z2VBYm9ydE9wZXJhdGlvbjo6cGVyZm9ybSk6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9sZXZlbGRiL0lEQkxldmVsREJDb2RpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2
ZWxEQkNvZGluZzo6Y29tcGFyZUVuY29kZWRJREJLZXlzKToKKwogMjAxMy0wOS0yNyAgVGhpYWdv
IGRlIEJhcnJvcyBMYWNlcmRhICA8dGhpYWdvLmxhY2VyZGFAb3BlbmJvc3NhLm9yZz4KIAogICAg
ICAgICBHZXQgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIgY29tcGlsaW5nIGFnYWluCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDYWxsYmFja3MuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oCmluZGV4IGRh
N2RlMDcuLjlkYWEzZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkNhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkNhbGxiYWNrcy5oCkBAIC02OCw5ICs2OCw5IEBAIHB1YmxpYzoKICAgICAvLyBGcm9tIElE
QkN1cnNvci5hZHZhbmNlKCkvY29udGludWUoKQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NX
aXRoUHJlZmV0Y2goY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mIGtleXMsIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8SURCS2V5PiA+JiBwcmltYXJ5S2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxT
aGFyZWRCdWZmZXI+ID4mIHZhbHVlcykgPSAwOwogICAgIC8vIEZyb20gSURCRmFjdG9yeS5vcGVu
KCkvZGVsZXRlRGF0YWJhc2UoKQotICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoaW50NjRfdCAv
KiBleGlzdGluZ1ZlcnNpb24gKi8pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgb25CbG9ja2VkKHVpbnQ2NF90IC8qIGV4aXN0aW5nVmVyc2lvbiAqLykgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIC8vIEZyb20gSURCRmFjdG9yeS5vcGVuKCkKLSAgICB2
aXJ0dWFsIHZvaWQgb25VcGdyYWRlTmVlZGVkKGludDY0X3QgLyogb2xkVmVyc2lvbiAqLywgUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+LCBjb25zdCBJREJEYXRhYmFzZU1l
dGFkYXRhJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBvblVw
Z3JhZGVOZWVkZWQodWludDY0X3QgLyogb2xkVmVyc2lvbiAqLywgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2U+LCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJikgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+LCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRh
JikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5pZGwKaW5kZXggOTU1NDA3YS4uNTA0M2VjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaWRsCkBAIC0y
NywxMSArMjcsMTAgQEAKICAgICBDb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFLAogICAgIEpT
Tm9TdGF0aWNUYWJsZXMKIF0gaW50ZXJmYWNlIElEQkN1cnNvciB7Ci0KKyAgICByZWFkb25seSBh
dHRyaWJ1dGUgSURCQW55IHNvdXJjZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGRpcmVjdGlvbjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYW55IGtleTsKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgYW55IHByaW1hcnlLZXk7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIElEQkFu
eSBzb3VyY2U7CiAKICAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIFJhaXNlc0V4Y2VwdGlvbl0g
SURCUmVxdWVzdCB1cGRhdGUoYW55IHZhbHVlKTsKICAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lk
IGFkdmFuY2UoW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKaW5kZXggOGM0ZTU0
OS4uODdjYTEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlLmNwcApAQCAtMTMxLDEyICsxMzEsOSBAQCBQYXNzUmVmUHRyPERPTVN0cmluZ0xp
c3Q+IElEQkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QKICAgICByZXR1cm4gb2Jq
ZWN0U3RvcmVOYW1lcy5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCQW55PiBJREJEYXRh
YmFzZTo6dmVyc2lvbigpIGNvbnN0Cit1aW50NjRfdCBJREJEYXRhYmFzZTo6dmVyc2lvbigpIGNv
bnN0CiB7Ci0gICAgaW50NjRfdCBpbnRWZXJzaW9uID0gbV9tZXRhZGF0YS5pbnRWZXJzaW9uOwot
ICAgIGlmIChpbnRWZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbikK
LSAgICAgICAgcmV0dXJuIElEQkFueTo6Y3JlYXRlU3RyaW5nKG1fbWV0YWRhdGEudmVyc2lvbik7
Ci0gICAgcmV0dXJuIElEQkFueTo6Y3JlYXRlKGludFZlcnNpb24pOworICAgIHJldHVybiBtX21l
dGFkYXRhLnZlcnNpb247CiB9CiAKIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IElEQkRhdGFi
YXNlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IERpY3Rpb25h
cnkmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzAzLDcgKzMwMCw3IEBAIHZvaWQg
SURCRGF0YWJhc2U6OmNsb3NlQ29ubmVjdGlvbigpCiAgICAgfQogfQogCi12b2lkIElEQkRhdGFi
YXNlOjpvblZlcnNpb25DaGFuZ2UoaW50NjRfdCBvbGRWZXJzaW9uLCBpbnQ2NF90IG5ld1ZlcnNp
b24pCit2b2lkIElEQkRhdGFiYXNlOjpvblZlcnNpb25DaGFuZ2UodWludDY0X3Qgb2xkVmVyc2lv
biwgdWludDY0X3QgbmV3VmVyc2lvbiwgSW5kZXhlZERCOjpWZXJzaW9uTnVsbG5lc3MgbmV3VmVy
c2lvbk51bGxuZXNzKQogewogICAgIElEQl9UUkFDRSgiSURCRGF0YWJhc2U6Om9uVmVyc2lvbkNo
YW5nZSIpOwogICAgIGlmIChtX2NvbnRleHRTdG9wcGVkIHx8ICFzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpCkBAIC0zMTIsOCArMzA5LDcgQEAgdm9pZCBJREJEYXRhYmFzZTo6b25WZXJzaW9uQ2hh
bmdlKGludDY0X3Qgb2xkVmVyc2lvbiwgaW50NjRfdCBuZXdWZXJzaW9uKQogICAgIGlmIChtX2Ns
b3NlUGVuZGluZykKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPElEQkFueT4gbmV3VmVy
c2lvbkFueSA9IG5ld1ZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9u
ID8gSURCQW55OjpjcmVhdGVOdWxsKCkgOiBJREJBbnk6OmNyZWF0ZShuZXdWZXJzaW9uKTsKLSAg
ICBlbnF1ZXVlRXZlbnQoSURCVmVyc2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUoSURCQW55OjpjcmVh
dGUob2xkVmVyc2lvbiksIG5ld1ZlcnNpb25BbnkucmVsZWFzZSgpLCBldmVudE5hbWVzKCkudmVy
c2lvbmNoYW5nZUV2ZW50KSk7CisgICAgZW5xdWV1ZUV2ZW50KElEQlZlcnNpb25DaGFuZ2VFdmVu
dDo6Y3JlYXRlKG9sZFZlcnNpb24sIG5ld1ZlcnNpb24sIG5ld1ZlcnNpb25OdWxsbmVzcykpOwog
fQogCiB2b2lkIElEQkRhdGFiYXNlOjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZl
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaApp
bmRleCAyYTQ2ZTQ2Li45MDI1MzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgLy8g
SW1wbGVtZW50IHRoZSBJREwKICAgICBjb25zdCBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWV0YWRhdGEubmFtZTsgfQotICAgIFBhc3NSZWZQdHI8SURCQW55PiB2ZXJzaW9uKCkgY29u
c3Q7CisgICAgdWludDY0X3QgdmVyc2lvbigpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8RE9NU3Ry
aW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0OwogCiAgICAgUGFzc1JlZlB0cjxJREJP
YmplY3RTdG9yZT4gY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBE
aWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAg
ICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih2ZXJzaW9uY2hhbmdlKTsKIAogICAg
IC8vIElEQkRhdGFiYXNlQ2FsbGJhY2tzCi0gICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5n
ZShpbnQ2NF90IG9sZFZlcnNpb24sIGludDY0X3QgbmV3VmVyc2lvbik7CisgICAgdmlydHVhbCB2
b2lkIG9uVmVyc2lvbkNoYW5nZSh1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJz
aW9uLCBJbmRleGVkREI6OlZlcnNpb25OdWxsbmVzcyBuZXdWZXJzaW9uTnVsbG5lc3MpOwogICAg
IHZpcnR1YWwgdm9pZCBvbkFib3J0KGludDY0X3QsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJv
cj4pOwogICAgIHZpcnR1YWwgdm9pZCBvbkNvbXBsZXRlKGludDY0X3QpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5pZGwKaW5kZXggMmM1Y2M4
Ni4uZDYwMzhmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlLmlkbApAQCAtMjksMzAgKzI5LDIwIEBACiAgICAgQWN0aXZlRE9NT2JqZWN0LAog
ICAgIEV2ZW50VGFyZ2V0LAogICAgIEpTTm9TdGF0aWNUYWJsZXMKLV0gaW50ZXJmYWNlIElEQkRh
dGFiYXNlIHsKK10gaW50ZXJmYWNlIElEQkRhdGFiYXNlIDogRXZlbnRUYXJnZXQgewogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUg
SURCQW55IHZlcnNpb247CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9u
ZyB2ZXJzaW9uOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdMaXN0IG9iamVjdFN0
b3JlTmFtZXM7CiAKLSAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmFib3J0OwotICAgIGF0
dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZXJyb3I7Ci0gICAgYXR0cmlidXRlIEV2ZW50TGlzdGVu
ZXIgb252ZXJzaW9uY2hhbmdlOwotCiAgICAgW0N1c3RvbSwgUmFpc2VzRXhjZXB0aW9uXSBJREJP
YmplY3RTdG9yZSBjcmVhdGVPYmplY3RTdG9yZShET01TdHJpbmcgbmFtZSwgb3B0aW9uYWwgRGlj
dGlvbmFyeSBvcHRpb25zKTsKICAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIGRlbGV0ZU9iamVj
dFN0b3JlKERPTVN0cmluZyBuYW1lKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBJREJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbihET01TdHJp
bmdMaXN0IHN0b3JlTmFtZXMsIFtEZWZhdWx0PU51bGxTdHJpbmddIG9wdGlvbmFsIERPTVN0cmlu
ZyBtb2RlKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhj
ZXB0aW9uXSBJREJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbihzZXF1ZW5jZTxET01TdHJpbmc+IHN0
b3JlTmFtZXMsIFtEZWZhdWx0PU51bGxTdHJpbmddIG9wdGlvbmFsIERPTVN0cmluZyBtb2RlKTsK
ICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBJ
REJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbihET01TdHJpbmcgc3RvcmVOYW1lLCBbRGVmYXVsdD1O
dWxsU3RyaW5nXSBvcHRpb25hbCBET01TdHJpbmcgbW9kZSk7Ci0KKyAgICBbQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBJREJUcmFuc2FjdGlvbiB0cmFu
c2FjdGlvbihzZXF1ZW5jZTxET01TdHJpbmc+IHN0b3JlTmFtZXMsIFtEZWZhdWx0PU51bGxTdHJp
bmddIG9wdGlvbmFsIERPTVN0cmluZyBtb2RlKTsKICAgICB2b2lkIGNsb3NlKCk7CiAKLSAgICAv
LyBFdmVudFRhcmdldCBpbnRlcmZhY2UKLSAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoRE9NU3Ry
aW5nIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50TGlzdGVuZXIgbGlzdGVu
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVy
ZSk7Ci0gICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKERPTVN0cmluZyB0eXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBib29sZWFuIHVzZUNhcHR1cmUpOwotICAgIFtS
YWlzZXNFeGNlcHRpb25dIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChFdmVudCBldnQpOworICAgIGF0
dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWJvcnQ7CisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVu
ZXIgb25lcnJvcjsKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnZlcnNpb25jaGFuZ2U7
CisKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQ2FsbGJhY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUNhbGxiYWNrcy5oCmluZGV4IGZjMjQyZTAuLjc3NzBhYmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFj
a3MuaApAQCAtMjksMjAgKzI5LDI1IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAK
ICNpbmNsdWRlICJJREJEYXRhYmFzZUVycm9yLmgiCisjaW5jbHVkZSAiSW5kZXhlZERCLmgiCiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJREJEYXRhYmFzZTsKKwogY2xhc3Mg
SURCRGF0YWJhc2VDYWxsYmFja3MgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJEYXRhYmFzZUNhbGxi
YWNrcz4gewogcHVibGljOgogICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlQ2FsbGJhY2tzKCkgeyB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgb25Gb3JjZWRDbG9zZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgb25WZXJzaW9uQ2hhbmdlKGludDY0X3Qgb2xkVmVyc2lvbiwgaW50NjRfdCBuZXdWZXJzaW9u
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZSh1aW50NjRfdCBvbGRWZXJz
aW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uLCBJbmRleGVkREI6OlZlcnNpb25OdWxsbmVzcyBuZXdW
ZXJzaW9uTnVsbG5lc3MpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBvbkFib3J0KGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBvbkNvbXBsZXRlKGludDY0X3QgdHJhbnNhY3Rpb25JZCkgPSAwOworCisgICAg
dmlydHVhbCB2b2lkIGNvbm5lY3QoSURCRGF0YWJhc2UqKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcAppbmRleCA0MmFmN2EyLi41ODdj
NGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUNhbGxiYWNrc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAKQEAgLTUyLDEwICs1MiwxMCBAQCB2b2lk
IElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6b25Gb3JjZWRDbG9zZSgpCiAgICAgICAgIG1fZGF0
YWJhc2UtPmZvcmNlQ2xvc2UoKTsKIH0KIAotdm9pZCBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6
Om9uVmVyc2lvbkNoYW5nZShpbnQ2NF90IG9sZFZlcnNpb24sIGludDY0X3QgbmV3VmVyc2lvbikK
K3ZvaWQgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpvblZlcnNpb25DaGFuZ2UodWludDY0X3Qg
b2xkVmVyc2lvbiwgdWludDY0X3QgbmV3VmVyc2lvbiwgSW5kZXhlZERCOjpWZXJzaW9uTnVsbG5l
c3MgbmV3VmVyc2lvbk51bGxuZXNzKQogewogICAgIGlmIChtX2RhdGFiYXNlKQotICAgICAgICBt
X2RhdGFiYXNlLT5vblZlcnNpb25DaGFuZ2Uob2xkVmVyc2lvbiwgbmV3VmVyc2lvbik7CisgICAg
ICAgIG1fZGF0YWJhc2UtPm9uVmVyc2lvbkNoYW5nZShvbGRWZXJzaW9uLCBuZXdWZXJzaW9uLCBu
ZXdWZXJzaW9uTnVsbG5lc3MpOwogfQogCiB2b2lkIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6
Y29ubmVjdChJREJEYXRhYmFzZSogZGF0YWJhc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCmluZGV4
IDVhNzhiMzcuLjRmZDc1NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCkBAIC0zNiwxOSArMzYs
MTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJEYXRhYmFzZTsKIAotY2xhc3Mg
SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsIDogcHVibGljIElEQkRhdGFiYXNlQ2FsbGJhY2tzIHsK
K2NsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCBGSU5BTCA6IHB1YmxpYyBJREJEYXRhYmFz
ZUNhbGxiYWNrcyB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VD
YWxsYmFja3NJbXBsPiBjcmVhdGUoKTsKLSAgICB2aXJ0dWFsIH5JREJEYXRhYmFzZUNhbGxiYWNr
c0ltcGwoKTsKKyAgICB2aXJ0dWFsIH5JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoKSBPVkVSUklE
RTsKIAogICAgIC8vIElEQkRhdGFiYXNlQ2FsbGJhY2tzCi0gICAgdmlydHVhbCB2b2lkIG9uRm9y
Y2VkQ2xvc2UoKTsKLSAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGludDY0X3Qgb2xk
VmVyc2lvbiwgaW50NjRfdCBuZXdWZXJzaW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgb25Gb3JjZWRD
bG9zZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UodWludDY0
X3Qgb2xkVmVyc2lvbiwgdWludDY0X3QgbmV3VmVyc2lvbiwgSW5kZXhlZERCOjpWZXJzaW9uTnVs
bG5lc3MgbmV3VmVyc2lvbk51bGxuZXNzKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBv
bkFib3J0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9y
Pik7Ci0gICAgdmlydHVhbCB2b2lkIG9uQ29tcGxldGUoaW50NjRfdCB0cmFuc2FjdGlvbklkKTsK
KyAgICB2aXJ0dWFsIHZvaWQgb25BYm9ydChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VFcnJvcj4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBvbkNvbXBs
ZXRlKGludDY0X3QgdHJhbnNhY3Rpb25JZCkgT1ZFUlJJREU7CiAKLSAgICB2b2lkIGNvbm5lY3Qo
SURCRGF0YWJhc2UqKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChJREJEYXRhYmFzZSopIE9W
RVJSSURFOwogCiBwcml2YXRlOgogICAgIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRleCBl
YTgyMDA3Li5jNGZiMGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJGYWN0b3J5LmNwcApAQCAtMTEzLDYgKzExMywxMiBAQCBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQkZhY3Rvcnk6OmdldERhdGFiYXNlTmFtZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udAogICAgIHJldHVybiByZXF1ZXN0OwogfQogCitQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVl
c3Q+IElEQkZhY3Rvcnk6Om9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBJREJfVFJBQ0UoIklE
QkZhY3Rvcnk6Om9wZW4iKTsKKyAgICByZXR1cm4gb3BlbkludGVybmFsKGNvbnRleHQsIG5hbWUs
IDAsIEluZGV4ZWREQjo6TnVsbFZlcnNpb24sIGVjKTsKK30KKwogUGFzc1JlZlB0cjxJREJPcGVu
REJSZXF1ZXN0PiBJREJGYWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgdW5zaWduZWQgbG9uZyBsb25nIHZlcnNpb24sIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCRmFjdG9yeTo6b3BlbiIpOwpAQCAt
MTIwLDEzICsxMjYsMTMgQEAgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJGYWN0b3J5
OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGMKICAgICAgICAgZWMgPSBU
eXBlRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICByZXR1cm4gb3BlbkludGVy
bmFsKGNvbnRleHQsIG5hbWUsIHZlcnNpb24sIGVjKTsKKyAgICByZXR1cm4gb3BlbkludGVybmFs
KGNvbnRleHQsIG5hbWUsIHZlcnNpb24sIEluZGV4ZWREQjo6Tm9uTnVsbFZlcnNpb24sIGVjKTsK
IH0KIAotUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJGYWN0b3J5OjpvcGVuSW50ZXJu
YWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBp
bnQ2NF90IHZlcnNpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJPcGVuREJS
ZXF1ZXN0PiBJREJGYWN0b3J5OjpvcGVuSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCB1aW50NjRfdCB2ZXJzaW9uLCBJbmRleGVkREI6
OlZlcnNpb25OdWxsbmVzcyB2ZXJzaW9uTnVsbG5lc3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9uKCJXZWJDb3JlLkluZGV4
ZWREQi5Gcm9udEVuZEFQSUNhbGxzIiwgSURCT3BlbkNhbGwsIElEQk1ldGhvZHNNYXgpOwotICAg
IEFTU0VSVCh2ZXJzaW9uID49IDEgfHwgdmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpO
b0ludFZlcnNpb24pOworICAgIEFTU0VSVCh2ZXJzaW9uID49IDEgfHwgdmVyc2lvbk51bGxuZXNz
ID09IEluZGV4ZWREQjo6TnVsbFZlcnNpb24pOwogICAgIGlmIChuYW1lLmlzTnVsbCgpKSB7CiAg
ICAgICAgIGVjID0gVHlwZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKQEAgLTEzOCwxOSArMTQ0
LDEzIEBAIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURCRmFjdG9yeTo6b3BlbkludGVy
bmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvCiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
IAotICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IGRhdGFiYXNlQ2FsbGJhY2tz
ID0gSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SURCRGF0
YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzID0gSURCRGF0YWJhc2VDYWxsYmFja3NJ
bXBsOjpjcmVhdGUoKTsKICAgICBpbnQ2NF90IHRyYW5zYWN0aW9uSWQgPSBJREJEYXRhYmFzZTo6
bmV4dFRyYW5zYWN0aW9uSWQoKTsKLSAgICBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gcmVxdWVz
dCA9IElEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBkYXRhYmFzZUNhbGxiYWNrcywg
dHJhbnNhY3Rpb25JZCwgdmVyc2lvbik7CisgICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IHJl
cXVlc3QgPSBJREJPcGVuREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgZGF0YWJhc2VDYWxsYmFj
a3MsIHRyYW5zYWN0aW9uSWQsIHZlcnNpb24sIHZlcnNpb25OdWxsbmVzcyk7CiAgICAgbV9iYWNr
ZW5kLT5vcGVuKG5hbWUsIHZlcnNpb24sIHRyYW5zYWN0aW9uSWQsIHJlcXVlc3QsIGRhdGFiYXNl
Q2FsbGJhY2tzLCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBjb250ZXh0LCBnZXRJbmRleGVk
REJEYXRhYmFzZVBhdGgoY29udGV4dCkpOwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1QYXNz
UmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9wZW4oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykK
LXsKLSAgICBJREJfVFJBQ0UoIklEQkZhY3Rvcnk6Om9wZW4iKTsKLSAgICByZXR1cm4gb3Blbklu
dGVybmFsKGNvbnRleHQsIG5hbWUsIElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbiwg
ZWMpOwotfQotCiBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQkZhY3Rvcnk6OmRlbGV0
ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJGYWN0b3J5Ojpk
ZWxldGVEYXRhYmFzZSIpOwpAQCAtMTY2LDcgKzE2Niw3IEBAIFBhc3NSZWZQdHI8SURCT3BlbkRC
UmVxdWVzdD4gSURCRmFjdG9yeTo6ZGVsZXRlRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCoKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgUmVmUHRyPElEQk9wZW5EQlJlcXVl
c3Q+IHJlcXVlc3QgPSBJREJPcGVuREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgMCwgMCwgSURC
RGF0YWJhc2VNZXRhZGF0YTo6RGVmYXVsdEludFZlcnNpb24pOworICAgIFJlZlB0cjxJREJPcGVu
REJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIDAs
IDAsIDAsIEluZGV4ZWREQjo6TnVsbFZlcnNpb24pOwogICAgIG1fYmFja2VuZC0+ZGVsZXRlRGF0
YWJhc2UobmFtZSwgcmVxdWVzdCwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgY29udGV4dCwg
Z2V0SW5kZXhlZERCRGF0YWJhc2VQYXRoKGNvbnRleHQpKTsKICAgICByZXR1cm4gcmVxdWVzdDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rv
cnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaAppbmRl
eCA0MWUyMzg1Li45MDY1ZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeS5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
SURCRmFjdG9yeShJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSopOwogCi0gICAgUGFzc1JlZlB0
cjxJREJPcGVuREJSZXF1ZXN0PiBvcGVuSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBvcGVuSW50ZXJuYWwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgdWludDY0X3QgdmVyc2lvbiwgSW5kZXhl
ZERCOjpWZXJzaW9uTnVsbG5lc3MsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFJlZlB0cjxJREJG
YWN0b3J5QmFja2VuZEludGVyZmFjZT4gbV9iYWNrZW5kOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5pZGwKaW5kZXggOTAxNjhhNS4uODk2ZDYz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5p
ZGwKQEAgLTI4LDExICsyOCw4IEBACiAgICAgSlNOb1N0YXRpY1RhYmxlcywKICAgICBJbXBsZW1l
bnRhdGlvbkxhY2tzVlRhYmxlCiBdIGludGVyZmFjZSBJREJGYWN0b3J5IHsKLSAgICBbQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSW1wbGVtZW50ZWRBcz1nZXREYXRhYmFzZU5hbWVz
LCBSYWlzZXNFeGNlcHRpb25dIElEQlJlcXVlc3Qgd2Via2l0R2V0RGF0YWJhc2VOYW1lcygpOwot
CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0g
SURCT3BlbkRCUmVxdWVzdCBvcGVuKERPTVN0cmluZyBuYW1lLCBbRW5mb3JjZVJhbmdlXSBvcHRp
b25hbCB1bnNpZ25lZCBsb25nIGxvbmcgdmVyc2lvbik7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gSURCT3BlbkRCUmVxdWVzdCBkZWxldGVE
YXRhYmFzZShET01TdHJpbmcgbmFtZSk7Ci0KICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBzaG9ydCBjbXAoYW55IGZpcnN0LCBhbnkgc2Vjb25k
KTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkluZGV4LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4Lmlk
bAppbmRleCBjZGFjZmU2Li5iYTBiMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCSW5kZXguaWRsCkBAIC0zMSw4ICszMSw4IEBACiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIERPTVN0cmluZyBuYW1lOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJPYmplY3RT
dG9yZSBvYmplY3RTdG9yZTsKICAgICBbSW1wbGVtZW50ZWRBcz1rZXlQYXRoQW55XSByZWFkb25s
eSBhdHRyaWJ1dGUgSURCQW55IGtleVBhdGg7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xl
YW4gdW5pcXVlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIG11bHRpRW50cnk7Cisg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gdW5pcXVlOwogCiAgICAgW0NhbGxXaXRoPVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBvcGVuQ3Vy
c29yKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSwgb3B0aW9uYWwgRE9NU3RyaW5nIGRpcmVj
dGlvbik7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2Vw
dGlvbl0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKGFueSBrZXksIG9wdGlvbmFsIERPTVN0cmluZyBk
aXJlY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCS2V5UmFuZ2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5
UmFuZ2UuaWRsCmluZGV4IGM2MGQ3NDAuLjBmZWMzMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5pZGwKQEAgLTM0LDggKzM0LDggQEAKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB1cHBlck9wZW47CiAKICAgICBbQ2FsbFdpdGg9
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBzdGF0aWMgSURCS2V5UmFu
Z2Ugb25seShhbnkgdmFsdWUpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBSYWlzZXNFeGNlcHRpb25dIHN0YXRpYyBJREJLZXlSYW5nZSBsb3dlckJvdW5kKGFueSBib3Vu
ZCwgb3B0aW9uYWwgYm9vbGVhbiBvcGVuKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBzdGF0aWMgSURCS2V5UmFuZ2UgdXBwZXJCb3VuZChh
bnkgYm91bmQsIG9wdGlvbmFsIGJvb2xlYW4gb3Blbik7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gc3RhdGljIElEQktleVJhbmdlIGxvd2Vy
Qm91bmQoYW55IGxvd2VyLCBvcHRpb25hbCBib29sZWFuIG9wZW4pOworICAgIFtDYWxsV2l0aD1T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIHN0YXRpYyBJREJLZXlSYW5n
ZSB1cHBlckJvdW5kKGFueSB1cHBlciwgb3B0aW9uYWwgYm9vbGVhbiBvcGVuKTsKICAgICBbQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBzdGF0aWMgSURC
S2V5UmFuZ2UgYm91bmQoYW55IGxvd2VyLCBhbnkgdXBwZXIsIG9wdGlvbmFsIGJvb2xlYW4gbG93
ZXJPcGVuLCBvcHRpb25hbCBib29sZWFuIHVwcGVyT3Blbik7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaAppbmRleCBjM2IzMzM0Li44MmI4
NjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRh
ZGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRh
LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNkZWZpbmUgSURCTWV0YWRhdGFfaAogCiAjaW5jbHVkZSAi
SURCS2V5UGF0aC5oIgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgpAQCAtNzksMzEgKzgwLDQwIEBAIHN0cnVjdCBJREJPYmplY3RTdG9yZU1l
dGFkYXRhIHsKIH07CiAKIHN0cnVjdCBJREJEYXRhYmFzZU1ldGFkYXRhIHsKLSAgICAvLyBGSVhN
RTogVGhlc2UgY2FuIHByb2JhYmx5IGJlIGNvbGxhcHNlZCBpbnRvIDAuCisKKyNpZiBVU0UoTEVW
RUxEQikKKyAgICAvLyBGSVhNRTogVGhlc2UgYXJlIG9ubHkgaGVyZSB0byBzdXBwb3J0IHRoZSBM
ZXZlbERCIGJhY2tlbmQgd2hpY2ggaW5jb3JyZWN0bHkgaGFuZGxlcyB2ZXJzaW9uaW5nLgorICAg
IC8vIE9uY2UgTGV2ZWxEQiBzdXBwb3J0cyBhIHNpbmdsZSwgdWludDY0X3QgdmVyc2lvbiBhbmQg
dGhyb3dzIG91dCB0aGUgb2xkIHN0cmluZyB2ZXJzaW9uLCB0aGVzZQorICAgIC8vIHNob3VsZCBi
ZSBnb3R0ZW4gcmlkIG9mLgorICAgIC8vIEFsc28sICJOb0ludFZlcnNpb24iIHVzZWQgdG8gYmUg
YSBtYWdpYyBudW1iZXIgb2YgLTEsIHdoaWNoIGRvZXNuJ3Qgd29yayB3aXRoIHRoZSBuZXcgdW5z
aWduZWQgdHlwZS4KKyAgICAvLyBDaGFuZ2luZyB0aGUgdmFsdWUgdG8gSU5UNjRfTUFYIGhlcmUg
c2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgdGVtcG9yYXJ5IGZpeCBhcyB0aGUgY3VycmVudCBMZXZl
bERCCisgICAgLy8gYWxyZWFkeSBjYW5ub3QgcmVwcmVzZW50IHZhbGlkIHZlcnNpb24gbnVtYmVy
cyBiZXR3ZWVuIElOVDY0X01BWCBhbmQgVUlOVDY0X01BWC4KICAgICBlbnVtIHsKLSAgICAgICAg
Tm9JbnRWZXJzaW9uID0gLTEsCisgICAgICAgIE5vSW50VmVyc2lvbiA9IElOVDY0X01BWCwKICAg
ICAgICAgRGVmYXVsdEludFZlcnNpb24gPSAwCiAgICAgfTsKKyNlbmRpZiAvLyBVU0UoTEVWRUxE
QikKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQ2NF90LCBJREJPYmplY3RTdG9yZU1ldGFkYXRh
PiBPYmplY3RTdG9yZU1hcDsKIAogICAgIElEQkRhdGFiYXNlTWV0YWRhdGEoKQotICAgICAgICA6
IGludFZlcnNpb24oTm9JbnRWZXJzaW9uKQorICAgICAgICA6IGlkKDApCisgICAgICAgICwgdmVy
c2lvbigwKQorICAgICAgICAsIG1heE9iamVjdFN0b3JlSWQoMCkKICAgICB7CiAgICAgfQotICAg
IElEQkRhdGFiYXNlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IGlkLCBjb25z
dCBTdHJpbmcmIHZlcnNpb24sIGludDY0X3QgaW50VmVyc2lvbiwgaW50NjRfdCBtYXhPYmplY3RT
dG9yZUlkKQorCisgICAgSURCRGF0YWJhc2VNZXRhZGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGlu
dDY0X3QgaWQsIHVpbnQ2NF90IHZlcnNpb24sIGludDY0X3QgbWF4T2JqZWN0U3RvcmVJZCkKICAg
ICAgICAgOiBuYW1lKG5hbWUpCiAgICAgICAgICwgaWQoaWQpCiAgICAgICAgICwgdmVyc2lvbih2
ZXJzaW9uKQotICAgICAgICAsIGludFZlcnNpb24oaW50VmVyc2lvbikKICAgICAgICAgLCBtYXhP
YmplY3RTdG9yZUlkKG1heE9iamVjdFN0b3JlSWQpCiAgICAgewogICAgIH0KIAogICAgIFN0cmlu
ZyBuYW1lOwogICAgIGludDY0X3QgaWQ7Ci0gICAgU3RyaW5nIHZlcnNpb247Ci0gICAgaW50NjRf
dCBpbnRWZXJzaW9uOworICAgIHVpbnQ2NF90IHZlcnNpb247CiAgICAgaW50NjRfdCBtYXhPYmpl
Y3RTdG9yZUlkOwogCiAgICAgT2JqZWN0U3RvcmVNYXAgb2JqZWN0U3RvcmVzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsCmluZGV4
IGM3MmE5MWIuLjQ2M2I5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5pZGwKQEAgLTM4LDEyICszOCwxMSBAQAogICAgIFtDYWxs
V2l0aD1TY3JpcHRTdGF0ZSwgUmFpc2VzRXhjZXB0aW9uXSBJREJSZXF1ZXN0IGFkZChhbnkgdmFs
dWUsIG9wdGlvbmFsIGFueSBrZXkpOwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBJbXBsZW1lbnRlZEFzPWRlbGV0ZUZ1bmN0aW9uLCBSYWlzZXNFeGNlcHRpb25dIElEQlJl
cXVlc3QgZGVsZXRlKElEQktleVJhbmdlPyBrZXlSYW5nZSk7CiAgICAgW0NhbGxXaXRoPVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIEltcGxlbWVudGVkQXM9ZGVsZXRlRnVuY3Rpb24sIFJhaXNlc0V4
Y2VwdGlvbl0gSURCUmVxdWVzdCBkZWxldGUoYW55IGtleSk7Ci0gICAgW0NhbGxXaXRoPVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBjbGVhcigpOwog
ICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIElE
QlJlcXVlc3QgZ2V0KElEQktleVJhbmdlPyBrZXkpOwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIElEQlJlcXVlc3QgZ2V0KGFueSBrZXkpOwor
ICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIElE
QlJlcXVlc3QgY2xlYXIoKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
UmFpc2VzRXhjZXB0aW9uXSBJREJSZXF1ZXN0IG9wZW5DdXJzb3Iob3B0aW9uYWwgSURCS2V5UmFu
Z2U/IHJhbmdlLCBvcHRpb25hbCBET01TdHJpbmcgZGlyZWN0aW9uKTsKICAgICBbQ2FsbFdpdGg9
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBJREJSZXF1ZXN0IG9wZW5D
dXJzb3IoYW55IGtleSwgb3B0aW9uYWwgRE9NU3RyaW5nIGRpcmVjdGlvbik7Ci0KICAgICBbQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQ3VzdG9tLCBSYWlzZXNFeGNlcHRpb25dIElE
QkluZGV4IGNyZWF0ZUluZGV4KERPTVN0cmluZyBuYW1lLCBzZXF1ZW5jZTxET01TdHJpbmc+IGtl
eVBhdGgsIG9wdGlvbmFsIERpY3Rpb25hcnkgb3B0aW9ucyk7CiAgICAgW0NhbGxXaXRoPVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIEN1c3RvbSwgUmFpc2VzRXhjZXB0aW9uXSBJREJJbmRleCBjcmVh
dGVJbmRleChET01TdHJpbmcgbmFtZSwgRE9NU3RyaW5nIGtleVBhdGgsIG9wdGlvbmFsIERpY3Rp
b25hcnkgb3B0aW9ucyk7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gSURCSW5kZXggaW5kZXgoRE9N
U3RyaW5nIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJPcGVuREJSZXF1ZXN0LmNwcAppbmRleCA1NmUwZjE2Li45ZTJmMDI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNw
cApAQCAtMzcsMTggKzM3LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0
cjxJREJPcGVuREJSZXF1ZXN0PiBJREJPcGVuREJSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+
IGNhbGxiYWNrcywgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IHZlcnNpb24pCitQYXNz
UmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tz
PiBjYWxsYmFja3MsIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgdWludDY0X3QgdmVyc2lvbiwgSW5k
ZXhlZERCOjpWZXJzaW9uTnVsbG5lc3MgdmVyc2lvbk51bGxuZXNzKQogewotICAgIFJlZlB0cjxJ
REJPcGVuREJSZXF1ZXN0PiByZXF1ZXN0KGFkb3B0UmVmKG5ldyBJREJPcGVuREJSZXF1ZXN0KGNv
bnRleHQsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb25JZCwgdmVyc2lvbikpKTsKKyAgICBSZWZQdHI8
SURCT3BlbkRCUmVxdWVzdD4gcmVxdWVzdChhZG9wdFJlZihuZXcgSURCT3BlbkRCUmVxdWVzdChj
b250ZXh0LCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uSWQsIHZlcnNpb24sIHZlcnNpb25OdWxsbmVz
cykpKTsKICAgICByZXF1ZXN0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gcmVxdWVz
dC5yZWxlYXNlKCk7CiB9CiAKLUlEQk9wZW5EQlJlcXVlc3Q6OklEQk9wZW5EQlJlcXVlc3QoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxi
YWNrc0ltcGw+IGNhbGxiYWNrcywgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IHZlcnNp
b24pCitJREJPcGVuREJSZXF1ZXN0OjpJREJPcGVuREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNr
cywgaW50NjRfdCB0cmFuc2FjdGlvbklkLCB1aW50NjRfdCB2ZXJzaW9uLCBJbmRleGVkREI6OlZl
cnNpb25OdWxsbmVzcyB2ZXJzaW9uTnVsbG5lc3MpCiAgICAgOiBJREJSZXF1ZXN0KGNvbnRleHQs
IElEQkFueTo6Y3JlYXRlTnVsbCgpLCBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6Ok5vcm1h
bFRhc2ssIDApCiAgICAgLCBtX2RhdGFiYXNlQ2FsbGJhY2tzKGNhbGxiYWNrcykKICAgICAsIG1f
dHJhbnNhY3Rpb25JZCh0cmFuc2FjdGlvbklkKQogICAgICwgbV92ZXJzaW9uKHZlcnNpb24pCisg
ICAgLCBtX3ZlcnNpb25OdWxsbmVzcyh2ZXJzaW9uTnVsbG5lc3MpCiB7CiAgICAgQVNTRVJUKCFt
X3Jlc3VsdCk7CiB9CkBAIC02MiwxNiArNjMsMTYgQEAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgSURC
T3BlbkRCUmVxdWVzdDo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdAogICAgIHJldHVybiBJ
REJPcGVuREJSZXF1ZXN0RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOwogfQogCi12b2lkIElEQk9w
ZW5EQlJlcXVlc3Q6Om9uQmxvY2tlZChpbnQ2NF90IG9sZFZlcnNpb24pCit2b2lkIElEQk9wZW5E
QlJlcXVlc3Q6Om9uQmxvY2tlZCh1aW50NjRfdCBvbGRWZXJzaW9uKQogewogICAgIElEQl9UUkFD
RSgiSURCT3BlbkRCUmVxdWVzdDo6b25CbG9ja2VkKCkiKTsKICAgICBpZiAoIXNob3VsZEVucXVl
dWVFdmVudCgpKQogICAgICAgICByZXR1cm47Ci0gICAgUmVmUHRyPElEQkFueT4gbmV3VmVyc2lv
bkFueSA9IChtX3ZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6RGVmYXVsdEludFZlcnNp
b24pID8gSURCQW55OjpjcmVhdGVOdWxsKCkgOiBJREJBbnk6OmNyZWF0ZShtX3ZlcnNpb24pOwot
ICAgIGVucXVldWVFdmVudChJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OmNyZWF0ZShJREJBbnk6OmNy
ZWF0ZShvbGRWZXJzaW9uKSwgbmV3VmVyc2lvbkFueS5yZWxlYXNlKCksIGV2ZW50TmFtZXMoKS5i
bG9ja2VkRXZlbnQpKTsKKyAgICAKKyAgICBlbnF1ZXVlRXZlbnQoSURCVmVyc2lvbkNoYW5nZUV2
ZW50OjpjcmVhdGUob2xkVmVyc2lvbiwgbV92ZXJzaW9uLCBtX3ZlcnNpb25OdWxsbmVzcywgZXZl
bnROYW1lcygpLmJsb2NrZWRFdmVudCkpOwogfQogCi12b2lkIElEQk9wZW5EQlJlcXVlc3Q6Om9u
VXBncmFkZU5lZWRlZChpbnQ2NF90IG9sZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VC
YWNrZW5kSW50ZXJmYWNlPiBwcnBEYXRhYmFzZUJhY2tlbmQsIGNvbnN0IElEQkRhdGFiYXNlTWV0
YWRhdGEmIG1ldGFkYXRhKQordm9pZCBJREJPcGVuREJSZXF1ZXN0OjpvblVwZ3JhZGVOZWVkZWQo
dWludDY0X3Qgb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2U+IHBycERhdGFiYXNlQmFja2VuZCwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0YWRh
dGEpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPcGVuREJSZXF1ZXN0OjpvblVwZ3JhZGVOZWVkZWQo
KSIpOwogICAgIGlmIChtX2NvbnRleHRTdG9wcGVkIHx8ICFzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpIHsKQEAgLTkyLDE5ICs5MywxNSBAQCB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6Om9uVXBncmFk
ZU5lZWRlZChpbnQ2NF90IG9sZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCRGF0YWJhcwogICAgIG1f
ZGF0YWJhc2VDYWxsYmFja3MtPmNvbm5lY3QoaWRiRGF0YWJhc2UuZ2V0KCkpOwogICAgIG1fZGF0
YWJhc2VDYWxsYmFja3MgPSAwOwogCi0gICAgaWYgKG9sZFZlcnNpb24gPT0gSURCRGF0YWJhc2VN
ZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKSB7Ci0gICAgICAgIC8vIFRoaXMgZGF0YWJhc2UgaGFzbid0
IGhhZCBhbiBpbnRlZ2VyIHZlcnNpb24gYmVmb3JlLgotICAgICAgICBvbGRWZXJzaW9uID0gSURC
RGF0YWJhc2VNZXRhZGF0YTo6RGVmYXVsdEludFZlcnNpb247Ci0gICAgfQogICAgIElEQkRhdGFi
YXNlTWV0YWRhdGEgb2xkTWV0YWRhdGEobWV0YWRhdGEpOwotICAgIG9sZE1ldGFkYXRhLmludFZl
cnNpb24gPSBvbGRWZXJzaW9uOworICAgIG9sZE1ldGFkYXRhLnZlcnNpb24gPSBvbGRWZXJzaW9u
OwogCiAgICAgbV90cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uOjpjcmVhdGUoc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBtX3RyYW5zYWN0aW9uSWQsIGlkYkRhdGFiYXNlLmdldCgpLCB0aGlz
LCBvbGRNZXRhZGF0YSk7CiAgICAgbV9yZXN1bHQgPSBJREJBbnk6OmNyZWF0ZShpZGJEYXRhYmFz
ZS5yZWxlYXNlKCkpOwogCi0gICAgaWYgKG1fdmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRh
OjpOb0ludFZlcnNpb24pCisgICAgaWYgKG1fdmVyc2lvbk51bGxuZXNzID09IEluZGV4ZWREQjo6
TnVsbFZlcnNpb24pCiAgICAgICAgIG1fdmVyc2lvbiA9IDE7Ci0gICAgZW5xdWV1ZUV2ZW50KElE
QlZlcnNpb25DaGFuZ2VFdmVudDo6Y3JlYXRlKElEQkFueTo6Y3JlYXRlKG9sZFZlcnNpb24pLCBJ
REJBbnk6OmNyZWF0ZShtX3ZlcnNpb24pLCBldmVudE5hbWVzKCkudXBncmFkZW5lZWRlZEV2ZW50
KSk7CisgICAgZW5xdWV1ZUV2ZW50KElEQlZlcnNpb25DaGFuZ2VFdmVudDo6Y3JlYXRlKG9sZFZl
cnNpb24sIG1fdmVyc2lvbiwgbV92ZXJzaW9uTnVsbG5lc3MsIGV2ZW50TmFtZXMoKS51cGdyYWRl
bmVlZGVkRXZlbnQpKTsKIH0KIAogdm9pZCBJREJPcGVuREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IHBycEJhY2tlbmQsIGNvbnN0IElE
QkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oCmluZGV4IDJmY2VkOTguLjk2MDQ1OWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJl
cXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJS
ZXF1ZXN0LmgKQEAgLTI5LDIwICsyOSwyMSBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KQogCiAjaW5jbHVkZSAiSURCUmVxdWVzdC5oIgorI2luY2x1ZGUgIkluZGV4ZWREQi5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDsKK2Ns
YXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzOwogCiBjbGFzcyBJREJPcGVuREJSZXF1ZXN0IDogcHVi
bGljIElEQlJlcXVlc3QgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQk9wZW5E
QlJlcXVlc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUNhbGxiYWNrc0ltcGw+LCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3QgdmVy
c2lvbik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwg
aW50NjRfdCB0cmFuc2FjdGlvbklkLCB1aW50NjRfdCB2ZXJzaW9uLCBJbmRleGVkREI6OlZlcnNp
b25OdWxsbmVzcyk7CiAgICAgdmlydHVhbCB+SURCT3BlbkRCUmVxdWVzdCgpOwogCiAgICAgdXNp
bmcgSURCUmVxdWVzdDo6b25TdWNjZXNzOwogCi0gICAgdmlydHVhbCB2b2lkIG9uQmxvY2tlZChp
bnQ2NF90IGV4aXN0aW5nVmVyc2lvbikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIG9uVXBn
cmFkZU5lZWRlZChpbnQ2NF90IG9sZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNr
ZW5kSW50ZXJmYWNlPiwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQodWludDY0X3QgZXhpc3RpbmdWZXJzaW9uKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgb25VcGdyYWRlTmVlZGVkKHVpbnQ2NF90IG9sZFZlcnNpb24s
IFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiwgY29uc3QgSURCRGF0YWJh
c2VNZXRhZGF0YSYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1Jl
ZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+LCBjb25zdCBJREJEYXRhYmFzZU1ldGFk
YXRhJikgT1ZFUlJJREU7CiAKICAgICAvLyBFdmVudFRhcmdldApAQCAtNTYsMTEgKzU3LDEyIEBA
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5xdWV1ZUV2ZW50KCkgY29uc3Qg
T1ZFUlJJREU7CiAKIHByaXZhdGU6Ci0gICAgSURCT3BlbkRCUmVxdWVzdChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+LCBpbnQ2NF90
IHRyYW5zYWN0aW9uSWQsIGludDY0X3QgdmVyc2lvbik7CisgICAgSURCT3BlbkRCUmVxdWVzdChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4s
IGludDY0X3QgdHJhbnNhY3Rpb25JZCwgdWludDY0X3QgdmVyc2lvbiwgSW5kZXhlZERCOjpWZXJz
aW9uTnVsbG5lc3MpOwogCi0gICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gbV9k
YXRhYmFzZUNhbGxiYWNrczsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IG1fZGF0
YWJhc2VDYWxsYmFja3M7CiAgICAgY29uc3QgaW50NjRfdCBtX3RyYW5zYWN0aW9uSWQ7Ci0gICAg
aW50NjRfdCBtX3ZlcnNpb247CisgICAgdWludDY0X3QgbV92ZXJzaW9uOworICAgIEluZGV4ZWRE
Qjo6VmVyc2lvbk51bGxuZXNzIG1fdmVyc2lvbk51bGxuZXNzOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1
ZXN0LmNwcAppbmRleCA0N2Y1NWZmLi4xZDlmZTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAtMTIwLDE1ICsxMjAsNiBAQCB1bnNp
Z25lZCBzaG9ydCBJREJSZXF1ZXN0OjplcnJvckNvZGUoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0
CiAgICAgcmV0dXJuIG1fZXJyb3JDb2RlOwogfQogCi1TdHJpbmcgSURCUmVxdWVzdDo6d2Via2l0
RXJyb3JNZXNzYWdlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAotewotICAgIGlmIChtX3JlYWR5
U3RhdGUgIT0gRE9ORSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpJbnZh
bGlkU3RhdGVFcnJvcjsKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIH0KLSAgICByZXR1
cm4gbV9lcnJvck1lc3NhZ2U7Ci19Ci0KIFBhc3NSZWZQdHI8SURCQW55PiBJREJSZXF1ZXN0Ojpz
b3VyY2UoKSBjb25zdAogewogICAgIHJldHVybiBtX3NvdXJjZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAppbmRleCBlNWNjY2I0Li4yNWYyODM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oCkBAIC01
OSw3ICs1OSw2IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQkFueT4gcmVzdWx0KEV4Y2Vw
dGlvbkNvZGUmKSBjb25zdDsKICAgICB1bnNpZ25lZCBzaG9ydCBlcnJvckNvZGUoRXhjZXB0aW9u
Q29kZSYpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8RE9NRXJyb3I+IGVycm9yKEV4Y2VwdGlvbkNv
ZGUmKSBjb25zdDsKLSAgICBTdHJpbmcgd2Via2l0RXJyb3JNZXNzYWdlKEV4Y2VwdGlvbkNvZGUm
KSBjb25zdDsKICAgICBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlKCkgY29uc3Q7CiAgICAgUGFz
c1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24oKSBjb25zdDsKICAgICB2b2lkIHBy
ZXZlbnRQcm9wYWdhdGlvbigpIHsgbV9wcmV2ZW50UHJvcGFnYXRpb24gPSB0cnVlOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmlkbCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaWRsCmluZGV4IDAw
NmZjMTQuLjE1NzViNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlJlcXVlc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlJlcXVlc3QuaWRsCkBAIC0zMiwyNyArMzIsMTMgQEAKICAgICBBY3RpdmVET01PYmplY3Qs
CiAgICAgRXZlbnRUYXJnZXQsCiAgICAgSlNOb1N0YXRpY1RhYmxlcwotXSBpbnRlcmZhY2UgSURC
UmVxdWVzdCB7CitdIGludGVyZmFjZSBJREJSZXF1ZXN0IDogRXZlbnRUYXJnZXQgewogICAgIFtH
ZXR0ZXJSYWlzZXNFeGNlcHRpb25dIHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJBbnkgcmVzdWx0Owog
ICAgIFtHZXR0ZXJSYWlzZXNFeGNlcHRpb25dIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01FcnJvciBl
cnJvcjsKLSAgICBbVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1VbmRlZmluZWQsIEdldHRlclJh
aXNlc0V4Y2VwdGlvbl0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB3ZWJraXRFcnJvck1l
c3NhZ2U7Ci0KICAgICByZWFkb25seSBhdHRyaWJ1dGUgSURCQW55IHNvdXJjZTsKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgSURCVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb247Ci0KLSAgICAvLyBTdGF0
ZXMKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHJlYWR5U3RhdGU7CiAKLSAgICAv
LyBFdmVudHMKICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnN1Y2Nlc3M7CiAgICAgYXR0
cmlidXRlIEV2ZW50TGlzdGVuZXIgb25lcnJvcjsKLQotICAgIC8vIEV2ZW50VGFyZ2V0IGludGVy
ZmFjZQotICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihET01TdHJpbmcgdHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiB1c2VDYXB0dXJlKTsKLSAgICB2b2lkIHJlbW92
ZUV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9wdGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gYm9v
bGVhbiBkaXNwYXRjaEV2ZW50KEV2ZW50IGV2dCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDAwYmRhNGMuLjJk
ZmI4Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJU
cmFuc2FjdGlvbi5jcHAKQEAgLTEzOCwxMSArMTM4LDYgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6
c2V0RXJyb3IoUGFzc1JlZlB0cjxET01FcnJvcj4gZXJyb3IsIGNvbnN0IFN0cmluZyYgZXJyb3JN
ZXMKICAgICB9CiB9CiAKLVN0cmluZyBJREJUcmFuc2FjdGlvbjo6d2Via2l0RXJyb3JNZXNzYWdl
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9lcnJvck1lc3NhZ2U7Ci19Ci0KIFBhc3NSZWZQdHI8
SURCT2JqZWN0U3RvcmU+IElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9yZShjb25zdCBTdHJpbmcm
IG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChtX3N0YXRlID09IEZpbmlzaGVk
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rp
b24uaAppbmRleCA4OTcwMTU0Li5kMTg1OWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAgLTk3LDcgKzk3LDYgQEAgcHVibGlj
OgogICAgIHZvaWQgb2JqZWN0U3RvcmVEZWxldGVkKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQg
c2V0QWN0aXZlKGJvb2wpOwogICAgIHZvaWQgc2V0RXJyb3IoUGFzc1JlZlB0cjxET01FcnJvcj4s
IGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKLSAgICBTdHJpbmcgd2Via2l0RXJyb3JNZXNz
YWdlKCkgY29uc3Q7CiAKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGFib3J0
KTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNvbXBsZXRlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmlkbApp
bmRleCA2NDdlZmUxLi44ZWFjOWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaWRsCkBAIC0yOSwyOCArMjksMTUgQEAKICAgICBB
Y3RpdmVET01PYmplY3QsCiAgICAgRXZlbnRUYXJnZXQsCiAgICAgSlNOb1N0YXRpY1RhYmxlcwot
XSBpbnRlcmZhY2UgSURCVHJhbnNhY3Rpb24gewotCi0gICAgLy8gUHJvcGVydGllcworXSBpbnRl
cmZhY2UgSURCVHJhbnNhY3Rpb24gOiBFdmVudFRhcmdldCB7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBtb2RlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJEYXRhYmFzZSBk
YjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NRXJyb3IgZXJyb3I7Ci0gICAgW1RyZWF0UmV0
dXJuZWROdWxsU3RyaW5nQXM9VW5kZWZpbmVkXSByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IHdlYmtpdEVycm9yTWVzc2FnZTsKIAotICAgIC8vIE1ldGhvZHMKICAgICBbUmFpc2VzRXhjZXB0
aW9uXSBJREJPYmplY3RTdG9yZSBvYmplY3RTdG9yZSAoRE9NU3RyaW5nIG5hbWUpOwogICAgIFtS
YWlzZXNFeGNlcHRpb25dIHZvaWQgYWJvcnQgKCk7CiAKLSAgICAvLyBFdmVudHMKICAgICBhdHRy
aWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmFib3J0OwogICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVy
IG9uY29tcGxldGU7CiAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25lcnJvcjsKLSAgICAv
LyBFdmVudFRhcmdldCBpbnRlcmZhY2UKLSAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoRE9NU3Ry
aW5nIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50TGlzdGVuZXIgbGlzdGVu
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVy
ZSk7Ci0gICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKERPTVN0cmluZyB0eXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBib29sZWFuIHVzZUNhcHR1cmUpOwotICAgIFtS
YWlzZXNFeGNlcHRpb25dIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChFdmVudCBldnQpOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFu
Z2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9u
Q2hhbmdlRXZlbnQuY3BwCmluZGV4IDBjODYxYWYuLjk0ZjNjMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50
LmNwcApAQCAtMjgsMjAgKzI4LDEzIEBACiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkK
IAotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJJREJBbnkuaCIKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPElEQlZlcnNpb25DaGFuZ2VFdmVudD4gSURCVmVy
c2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUoUGFzc1JlZlB0cjxJREJBbnk+IG9sZFZlcnNpb24sIFBh
c3NSZWZQdHI8SURCQW55PiBuZXdWZXJzaW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlw
ZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQlZlcnNpb25DaGFuZ2VFdmVudChvbGRW
ZXJzaW9uLCBuZXdWZXJzaW9uLCBldmVudFR5cGUpKTsKLX0KLQotSURCVmVyc2lvbkNoYW5nZUV2
ZW50OjpJREJWZXJzaW9uQ2hhbmdlRXZlbnQoUGFzc1JlZlB0cjxJREJBbnk+IG9sZFZlcnNpb24s
IFBhc3NSZWZQdHI8SURCQW55PiBuZXdWZXJzaW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSkKK0lEQlZlcnNpb25DaGFuZ2VFdmVudDo6SURCVmVyc2lvbkNoYW5nZUV2ZW50KHVuc2ln
bmVkIGxvbmcgbG9uZyBvbGRWZXJzaW9uLCB1bnNpZ25lZCBsb25nIGxvbmcgbmV3VmVyc2lvbiwg
SW5kZXhlZERCOjpWZXJzaW9uTnVsbG5lc3MgbmV3VmVyc2lvbk51bGxuZXNzLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSkKICAgICA6IEV2ZW50KGV2ZW50VHlwZSwgZmFsc2UgLypjYW5C
dWJibGUqLywgZmFsc2UgLypjYW5jZWxhYmxlKi8pCiAgICAgLCBtX29sZFZlcnNpb24ob2xkVmVy
c2lvbikKICAgICAsIG1fbmV3VmVyc2lvbihuZXdWZXJzaW9uKQorICAgICwgbV9uZXdWZXJzaW9u
TnVsbG5lc3MobmV3VmVyc2lvbk51bGxuZXNzKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oCmluZGV4
IGQwODRlYjIuLjk0ODBjY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oCkBAIC0yOSw3ICsyOSw3IEBACiAj
aWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRlICJFdmVudC5oIgotI2luY2x1
ZGUgIklEQkFueS5oIgorI2luY2x1ZGUgIkluZGV4ZWREQi5oIgogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgpAQCAtMzgsMTkgKzM4LDI0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgSURCVmVyc2lvbkNoYW5nZUV2ZW50IDogcHVibGljIEV2ZW50IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxJREJWZXJzaW9uQ2hhbmdlRXZlbnQ+IGNyZWF0ZShQYXNzUmVmUHRy
PElEQkFueT4gb2xkVmVyc2lvbiA9IElEQkFueTo6Y3JlYXRlTnVsbCgpLCBQYXNzUmVmUHRyPElE
QkFueT4gbmV3VmVyc2lvbiA9IElEQkFueTo6Y3JlYXRlTnVsbCgpLCBjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSA9IEF0b21pY1N0cmluZygpKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJ
REJWZXJzaW9uQ2hhbmdlRXZlbnQ+IGNyZWF0ZSh1bnNpZ25lZCBsb25nIGxvbmcgb2xkVmVyc2lv
biA9IDAsIHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdWZXJzaW9uID0gMCwgSW5kZXhlZERCOjpWZXJz
aW9uTnVsbG5lc3MgbmV3VmVyc2lvbk51bGxuZXNzID0gSW5kZXhlZERCOjpOdWxsVmVyc2lvbiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUgPSBBdG9taWNTdHJpbmcoKSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCVmVyc2lvbkNoYW5nZUV2ZW50KG9sZFZlcnNp
b24sIG5ld1ZlcnNpb24sIG5ld1ZlcnNpb25OdWxsbmVzcywgZXZlbnRUeXBlKSk7CisgICAgfQor
CiAgICAgdmlydHVhbCB+SURCVmVyc2lvbkNoYW5nZUV2ZW50KCk7CiAKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8SURCQW55PiBvbGRWZXJzaW9uKCkgeyByZXR1cm4gbV9vbGRWZXJzaW9uOyB9Ci0g
ICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkFueT4gbmV3VmVyc2lvbigpIHsgcmV0dXJuIG1fbmV3
VmVyc2lvbjsgfQorICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIG9sZFZlcnNpb24oKSB7
IHJldHVybiBtX29sZFZlcnNpb247IH0KKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBu
ZXdWZXJzaW9uKGJvb2wmIGlzTnVsbCkgeyBpc051bGwgPSAobV9uZXdWZXJzaW9uTnVsbG5lc3Mg
PT0gSW5kZXhlZERCOjpOdWxsVmVyc2lvbik7IHJldHVybiBtX25ld1ZlcnNpb247IH0KIAogICAg
IHZpcnR1YWwgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBjb25zdDsKIAogcHJpdmF0
ZToKLSAgICBJREJWZXJzaW9uQ2hhbmdlRXZlbnQoUGFzc1JlZlB0cjxJREJBbnk+IG9sZFZlcnNp
b24sIFBhc3NSZWZQdHI8SURCQW55PiBuZXdWZXJzaW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSk7CisgICAgSURCVmVyc2lvbkNoYW5nZUV2ZW50KHVuc2lnbmVkIGxvbmcgbG9uZyBv
bGRWZXJzaW9uLCB1bnNpZ25lZCBsb25nIGxvbmcgbmV3VmVyc2lvbiwgSW5kZXhlZERCOjpWZXJz
aW9uTnVsbG5lc3MgbmV3VmVyc2lvbk51bGxuZXNzLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSk7CiAKLSAgICBSZWZQdHI8SURCQW55PiBtX29sZFZlcnNpb247Ci0gICAgUmVmUHRyPElE
QkFueT4gbV9uZXdWZXJzaW9uOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtX29sZFZlcnNpb247
CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG1fbmV3VmVyc2lvbjsKKyAgICBJbmRleGVkREI6OlZl
cnNpb25OdWxsbmVzcyBtX25ld1ZlcnNpb25OdWxsbmVzczsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlZlcnNpb25DaGFuZ2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaWRsCmluZGV4IGU5MjE5MjguLjhkMTFjOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VF
dmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lv
bkNoYW5nZUV2ZW50LmlkbApAQCAtMjcsNiArMjcsNiBAQAogICAgIENvbmRpdGlvbmFsPUlOREVY
RURfREFUQUJBU0UsCiAgICAgSlNOb1N0YXRpY1RhYmxlcwogXSBpbnRlcmZhY2UgSURCVmVyc2lv
bkNoYW5nZUV2ZW50IDogRXZlbnQgewotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJBbnkgb2xk
VmVyc2lvbjsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgSURCQW55IG5ld1ZlcnNpb247CisgICAg
cmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyBvbGRWZXJzaW9uOworICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxvbmc/IG5ld1ZlcnNpb247CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSW5kZXhlZERCLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JbmRleGVkREIuaAppbmRleCAyZTg0ZmM3
Li5jYjdlOGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
bmRleGVkREIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JbmRleGVk
REIuaApAQCAtNTAsNiArNTAsMTEgQEAgZW51bSBDdXJzb3JUeXBlIHsKICAgICBDdXJzb3JLZXlP
bmx5CiB9OwogCitlbnVtIFZlcnNpb25OdWxsbmVzcyB7CisgICAgTnVsbFZlcnNpb24sCisgICAg
Tm9uTnVsbFZlcnNpb24KK307CisKIH0gLy8gbmFtZXNwYWNlIEluZGV4ZWREQgogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJCYWNraW5nU3RvcmVMZXZlbERCLmNwcAppbmRl
eCA1MjUwNTQ5Li5lNWY0YzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5j
cHAKQEAgLTUxMCw3ICs1MTAsOSBAQCBib29sIElEQkJhY2tpbmdTdG9yZTo6Z2V0SURCRGF0YWJh
c2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIElEQkRhdGFiYXNlTWV0YQogICAgIGlmICgh
Zm91bmQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgb2sgPSBnZXRTdHJpbmcobV9kYi5n
ZXQoKSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKG1ldGFkYXRhLT5pZCwgRGF0YWJhc2VN
ZXRhRGF0YUtleTo6VXNlclZlcnNpb24pLCBtZXRhZGF0YS0+dmVyc2lvbiwgZm91bmQpOworICAg
IC8vIEZJWE1FOiBUaGUgc3RyaW5nIHZlcnNpb24gaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCwgc28g
dGhlIGxldmVsREIgcG9ydHMgc2hvdWxkIGNvbnNpZGVyIHJlZmFjdG9yaW5nIG9mZiBvZiBpdC4K
KyAgICBTdHJpbmcgc3RyaW5nVmVyc2lvbjsKKyAgICBvayA9IGdldFN0cmluZyhtX2RiLmdldCgp
LCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUobWV0YWRhdGEtPmlkLCBEYXRhYmFzZU1ldGFE
YXRhS2V5OjpVc2VyVmVyc2lvbiksIHN0cmluZ1ZlcnNpb24sIGZvdW5kKTsKICAgICBpZiAoIW9r
KSB7CiAgICAgICAgIElOVEVSTkFMX1JFQURfRVJST1IoR2V0SURCRGF0YWJhc2VNZXRhRGF0YSk7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUyMCw3ICs1MjIsOCBAQCBib29sIElEQkJhY2tp
bmdTdG9yZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIElEQkRh
dGFiYXNlTWV0YQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgb2sgPSBnZXRW
YXJJbnQobV9kYi5nZXQoKSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKG1ldGFkYXRhLT5p
ZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6VXNlckludFZlcnNpb24pLCBtZXRhZGF0YS0+aW50VmVy
c2lvbiwgZm91bmQpOworICAgIGludDY0X3QgdmVyc2lvbjsKKyAgICBvayA9IGdldFZhckludCht
X2RiLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUobWV0YWRhdGEtPmlkLCBEYXRh
YmFzZU1ldGFEYXRhS2V5OjpVc2VySW50VmVyc2lvbiksIHZlcnNpb24sIGZvdW5kKTsKICAgICBp
ZiAoIW9rKSB7CiAgICAgICAgIElOVEVSTkFMX1JFQURfRVJST1IoR2V0SURCRGF0YWJhc2VNZXRh
RGF0YSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUzMCw4ICs1MzMsMTEgQEAgYm9vbCBJ
REJCYWNraW5nU3RvcmU6OmdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1l
LCBJREJEYXRhYmFzZU1ldGEKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlm
IChtZXRhZGF0YS0+aW50VmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpEZWZhdWx0SW50
VmVyc2lvbikKLSAgICAgICAgbWV0YWRhdGEtPmludFZlcnNpb24gPSBJREJEYXRhYmFzZU1ldGFk
YXRhOjpOb0ludFZlcnNpb247CisgICAgLy8gRklYTUU6IFRoZSB2ZXJzaW9uaW5nIHNlbWFudGlj
cyBoYXZlIGNoYW5nZWQgc2luY2UgdGhpcyBvcmlnaW5hbCBjb2RlIHdhcyB3cml0dGVuLCBhbmQg
d2hhdCB3YXMgb25jZSBhIG5lZ2F0aXZlIG51bWJlcgorICAgIC8vIHN0b3JlZCBpbiB0aGUgZGF0
YWJhc2UgaXMgbm8gbG9uZ2VyIGEgdmFsaWQgdmVyc2lvbi4KKyAgICBpZiAodmVyc2lvbiA8IDAp
CisgICAgICAgIHZlcnNpb24gPSAwOworICAgIG1ldGFkYXRhLT52ZXJzaW9uID0gdmVyc2lvbjsK
IAogICAgIG9rID0gZ2V0TWF4T2JqZWN0U3RvcmVJZChtX2RiLmdldCgpLCBtZXRhZGF0YS0+aWQs
IG1ldGFkYXRhLT5tYXhPYmplY3RTdG9yZUlkKTsKICAgICBpZiAoIW9rKSB7CkBAIC01NjksNiAr
NTc1LDcgQEAgV0FSTl9VTlVTRURfUkVUVVJOIHN0YXRpYyBib29sIGdldE5ld0RhdGFiYXNlSWQo
TGV2ZWxEQkRhdGFiYXNlKiBkYiwgaW50NjRfdCYgbmUKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAor
Ly8gRklYTUU6IFRoZSB2ZXJzaW9uIHNlbWFudGljcyBoYXZlIGNoYW5nZWQuIFN0cmluZyB2ZXJz
aW9ucyBubyBsb25nZXIgZXhpc3QsIGFuZCB0aGUgaW50ZWdlciB2ZXJzaW9uIGlzIG5vdyBhIHVp
bnQ2NF90CiBib29sIElEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgaW50NjRfdCBpbnRWZXJz
aW9uLCBpbnQ2NF90JiByb3dJZCkKIHsKICAgICBib29sIG9rID0gZ2V0TmV3RGF0YWJhc2VJZCht
X2RiLmdldCgpLCByb3dJZCk7CkBAIC0xODA0LDcgKzE4MTEsNyBAQCBib29sIEluZGV4Q3Vyc29y
SW1wbDo6bG9hZEN1cnJlbnRSb3coKQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIG9iamVj
dFN0b3JlQ3Vyc29yT3B0aW9ucyhMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2
NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29uc3QgSURCS2V5UmFuZ2Uq
IHJhbmdlLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIElEQkJhY2tpbmdT
dG9yZTo6Q3Vyc29yOjpDdXJzb3JPcHRpb25zJiBjdXJzb3JPcHRpb25zKQorc3RhdGljIGJvb2wg
b2JqZWN0U3RvcmVDdXJzb3JPcHRpb25zKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24s
IGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlS
YW5nZSogcmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCQmFj
a2luZ1N0b3JlOjpDdXJzb3I6OkN1cnNvck9wdGlvbnMmIGN1cnNvck9wdGlvbnMpCiB7CiAgICAg
Y3Vyc29yT3B0aW9ucy5kYXRhYmFzZUlkID0gZGF0YWJhc2VJZDsKICAgICBjdXJzb3JPcHRpb25z
Lm9iamVjdFN0b3JlSWQgPSBvYmplY3RTdG9yZUlkOwpAQCAtMTg1NCw3ICsxODYxLDcgQEAgYm9v
bCBvYmplY3RTdG9yZUN1cnNvck9wdGlvbnMoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlv
biwgaW50NjRfdCBkYXRhYmFzZUkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBpbmRleEN1
cnNvck9wdGlvbnMoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRh
YmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURC
S2V5UmFuZ2UqIHJhbmdlLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIElE
QkJhY2tpbmdTdG9yZTo6Q3Vyc29yOjpDdXJzb3JPcHRpb25zJiBjdXJzb3JPcHRpb25zKQorc3Rh
dGljIGJvb2wgaW5kZXhDdXJzb3JPcHRpb25zKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rp
b24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGlu
ZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiByYW5nZSwgSW5kZXhlZERCOjpDdXJzb3JEaXJlY3Rp
b24gZGlyZWN0aW9uLCBJREJCYWNraW5nU3RvcmU6OkN1cnNvcjo6Q3Vyc29yT3B0aW9ucyYgY3Vy
c29yT3B0aW9ucykKIHsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24pOwogICAgIGlmICghS2V5UHJl
Zml4Ojp2YWxpZElkcyhkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBpbmRleElkKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRGF0YWJh
c2VCYWNrZW5kTGV2ZWxEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9s
ZXZlbGRiL0lEQkRhdGFiYXNlQmFja2VuZExldmVsREIuY3BwCmluZGV4IDlkOTlkYWQuLjExOTk0
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIv
SURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvbGV2ZWxkYi9JREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCLmNwcApAQCAtNDcz
LDEzICs0NzMsOSBAQCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZExldmVsREI+IElEQkRh
dGFiYXNlQmFja2VuZExldmVsREI6OmNyZWF0ZShjb25zdCBTdAogICAgIHJldHVybiBiYWNrZW5k
LnJlbGVhc2UoKTsKIH0KIAotbmFtZXNwYWNlIHsKLWNvbnN0IGNoYXIqIE5vU3RyaW5nVmVyc2lv
biA9ICIiOwotfQotCiBJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpJREJEYXRhYmFzZUJhY2tl
bmRMZXZlbERCKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0b3JlKiBiYWNraW5nU3Rv
cmUsIElEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQiogZmFjdG9yeSwgY29uc3QgU3RyaW5nJiB1bmlx
dWVJZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nU3RvcmUoYmFja2luZ1N0b3JlKQotICAgICwg
bV9tZXRhZGF0YShuYW1lLCBJbnZhbGlkSWQsIE5vU3RyaW5nVmVyc2lvbiwgSURCRGF0YWJhc2VN
ZXRhZGF0YTo6Tm9JbnRWZXJzaW9uLCBJbnZhbGlkSWQpCisgICAgLCBtX21ldGFkYXRhKG5hbWUs
IEludmFsaWRJZCwgMCwgSW52YWxpZElkKQogICAgICwgbV9pZGVudGlmaWVyKHVuaXF1ZUlkZW50
aWZpZXIpCiAgICAgLCBtX2ZhY3RvcnkoZmFjdG9yeSkKICAgICAsIG1fdHJhbnNhY3Rpb25Db29y
ZGluYXRvcihJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQjo6Y3JlYXRlKCkpCkBAIC01
MzgsNyArNTM0LDcgQEAgYm9vbCBJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpvcGVuSW50ZXJu
YWwoKQogICAgIGlmIChzdWNjZXNzKQogICAgICAgICByZXR1cm4gbV9iYWNraW5nU3RvcmUtPmdl
dE9iamVjdFN0b3JlcyhtX21ldGFkYXRhLmlkLCAmbV9tZXRhZGF0YS5vYmplY3RTdG9yZXMpOwog
Ci0gICAgcmV0dXJuIG1fYmFja2luZ1N0b3JlLT5jcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKG1f
bWV0YWRhdGEubmFtZSwgbV9tZXRhZGF0YS52ZXJzaW9uLCBtX21ldGFkYXRhLmludFZlcnNpb24s
IG1fbWV0YWRhdGEuaWQpOworICAgIHJldHVybiBtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlSURCRGF0
YWJhc2VNZXRhRGF0YShtX21ldGFkYXRhLm5hbWUsIFN0cmluZzo6bnVtYmVyKG1fbWV0YWRhdGEu
dmVyc2lvbiksIG1fbWV0YWRhdGEudmVyc2lvbiwgbV9tZXRhZGF0YS5pZCk7CiB9CiAKIElEQkRh
dGFiYXNlQmFja2VuZExldmVsREI6On5JREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCKCkKQEAgLTEw
NzIsMTAgKzEwNjgsMTIgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpWZXJzaW9u
Q2hhbmdlT3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmEKIHsKICAgICBJREJfVFJB
Q0UoIlZlcnNpb25DaGFuZ2VPcGVyYXRpb24iKTsKICAgICBpbnQ2NF90IGRhdGFiYXNlSWQgPSBt
X2RhdGFiYXNlLT5pZCgpOwotICAgIGludDY0X3Qgb2xkVmVyc2lvbiA9IG1fZGF0YWJhc2UtPm1f
bWV0YWRhdGEuaW50VmVyc2lvbjsKLSAgICBBU1NFUlQobV92ZXJzaW9uID4gb2xkVmVyc2lvbik7
Ci0gICAgbV9kYXRhYmFzZS0+bV9tZXRhZGF0YS5pbnRWZXJzaW9uID0gbV92ZXJzaW9uOwotICAg
IGlmICghbV9kYXRhYmFzZS0+bV9iYWNraW5nU3RvcmUtPnVwZGF0ZUlEQkRhdGFiYXNlSW50VmVy
c2lvbih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgZGF0YWJhc2VJZCwg
bV9kYXRhYmFzZS0+bV9tZXRhZGF0YS5pbnRWZXJzaW9uKSkgeworICAgIHVpbnQ2NF90IG9sZFZl
cnNpb24gPSBtX2RhdGFiYXNlLT5tX21ldGFkYXRhLnZlcnNpb247CisKKyAgICAvLyBGSVhNRTog
RGF0YWJhc2UgdmVyc2lvbnMgYXJlIG5vdyBvZiB0eXBlIHVpbnQ2NF90LCBidXQgdGhpcyBjb2Rl
IGV4cGVjdGVkIGludDY0X3QuCisgICAgQVNTRVJUKG1fdmVyc2lvbiA+IChpbnQ2NF90KW9sZFZl
cnNpb24pOworICAgIG1fZGF0YWJhc2UtPm1fbWV0YWRhdGEudmVyc2lvbiA9IG1fdmVyc2lvbjsK
KyAgICBpZiAoIW1fZGF0YWJhc2UtPm1fYmFja2luZ1N0b3JlLT51cGRhdGVJREJEYXRhYmFzZUlu
dFZlcnNpb24odHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGRhdGFiYXNl
SWQsIG1fZGF0YWJhc2UtPm1fbWV0YWRhdGEudmVyc2lvbikpIHsKICAgICAgICAgUmVmUHRyPElE
QkRhdGFiYXNlRXJyb3I+IGVycm9yID0gSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJFcnJvciB3cml0aW5nIGRhdGEgdG8gc3RhYmxl
IHN0b3JhZ2Ugd2hlbiB1cGRhdGluZyB2ZXJzaW9uLiIpOwogICAgICAgICBtX2NhbGxiYWNrcy0+
b25FcnJvcihlcnJvcik7CiAgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydChlcnJvcik7CkBAIC0x
MTM4LDcgKzExMzYsOCBAQCBzaXplX3QgSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQjo6Y29ubmVj
dGlvbkNvdW50KCkKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQjo6cHJvY2Vzc1BlbmRp
bmdDYWxscygpCiB7CiAgICAgaWYgKG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuKSB7Ci0gICAgICAg
IEFTU0VSVChtX3BlbmRpbmdTZWNvbmRIYWxmT3Blbi0+dmVyc2lvbigpID09IG1fbWV0YWRhdGEu
aW50VmVyc2lvbik7CisgICAgICAgIC8vIEZJWE1FOiBEYXRhYmFzZSB2ZXJzaW9ucyBhcmUgbm93
IG9mIHR5cGUgdWludDY0X3QsIGJ1dCB0aGlzIGNvZGUgZXhwZWN0ZWQgaW50NjRfdC4KKyAgICAg
ICAgQVNTRVJUKG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuLT52ZXJzaW9uKCkgPT0gKGludDY0X3Qp
bV9tZXRhZGF0YS52ZXJzaW9uKTsKICAgICAgICAgQVNTRVJUKG1fbWV0YWRhdGEuaWQgIT0gSW52
YWxpZElkKTsKICAgICAgICAgbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW4tPmNhbGxiYWNrcygpLT5v
blN1Y2Nlc3ModGhpcywgdGhpcy0+bWV0YWRhdGEoKSk7CiAgICAgICAgIG1fcGVuZGluZ1NlY29u
ZEhhbGZPcGVuLnJlbGVhc2UoKTsKQEAgLTExOTQsNyArMTE5Myw3IEBAIHZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kTGV2ZWxEQjo6b3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IHBycENhbGxiCiAgICAgaWYgKG1fbWV0YWRhdGEuaWQgPT0gSW52YWxpZElkKSB7CiAgICAgICAg
IC8vIFRoZSBkYXRhYmFzZSB3YXMgZGVsZXRlZCB0aGVuIGltbWVkaWF0ZWx5IHJlLW9wZW5lZDsg
b3BlbkludGVybmFsKCkgcmVjcmVhdGVzIGl0IGluIHRoZSBiYWNraW5nIHN0b3JlLgogICAgICAg
ICBpZiAob3BlbkludGVybmFsKCkpCi0gICAgICAgICAgICBBU1NFUlQobV9tZXRhZGF0YS5pbnRW
ZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbik7CisgICAgICAgICAg
ICBBU1NFUlQobV9tZXRhZGF0YS52ZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50
VmVyc2lvbik7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2U7CiAg
ICAgICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gZXJyb3I7CkBAIC0xMjA4LDcgKzEy
MDcsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZExldmVsREI6Om9wZW5Db25uZWN0aW9uKFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYgogICAgIH0KIAogICAgIC8vIFdlIGluZmVy
IHRoYXQgdGhlIGRhdGFiYXNlIGRpZG4ndCBleGlzdCBmcm9tIGl0cyBsYWNrIG9mIGVpdGhlciB0
eXBlIG9mIHZlcnNpb24uCi0gICAgYm9vbCBpc05ld0RhdGFiYXNlID0gbV9tZXRhZGF0YS52ZXJz
aW9uID09IE5vU3RyaW5nVmVyc2lvbiAmJiBtX21ldGFkYXRhLmludFZlcnNpb24gPT0gSURCRGF0
YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uOworICAgIGJvb2wgaXNOZXdEYXRhYmFzZSA9IG1f
bWV0YWRhdGEudmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb247CiAK
ICAgICBpZiAodmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpEZWZhdWx0SW50VmVyc2lv
bikgewogICAgICAgICAvLyBGSVhNRTogdGhpcyBjb21tZW50cyB3YXMgcmVsYXRlZCB0byBDaHJv
bWl1bSBjb2RlLiBJdCBtYXkgYmUgaW5jb3JyZWN0CkBAIC0xMjI5LDE1ICsxMjI4LDIwIEBAIHZv
aWQgSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQjo6b3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IHBycENhbGxiCiAgICAgICAgIHZlcnNpb24gPSAxOwogICAgIH0KIAotICAg
IGlmICh2ZXJzaW9uID4gbV9tZXRhZGF0YS5pbnRWZXJzaW9uKSB7CisgICAgLy8gRklYTUU6IERh
dGFiYXNlIHZlcnNpb25zIGFyZSBub3cgb2YgdHlwZSB1aW50NjRfdCwgYnV0IHRoaXMgY29kZSBl
eHBlY3RlZCBpbnQ2NF90LgorICAgIGlmICh2ZXJzaW9uID4gKGludDY0X3QpbV9tZXRhZGF0YS52
ZXJzaW9uKSB7CiAgICAgICAgIHJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihjYWxsYmFj
a3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB0cmFuc2FjdGlvbklkLCB2ZXJzaW9uKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICBpZiAodmVyc2lvbiA8IG1fbWV0YWRhdGEuaW50VmVyc2lvbikg
ewotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElE
QkRhdGFiYXNlRXhjZXB0aW9uOjpWZXJzaW9uRXJyb3IsIFN0cmluZzo6Zm9ybWF0KCJUaGUgcmVx
dWVzdGVkIHZlcnNpb24gKCVsbGQpIGlzIGxlc3MgdGhhbiB0aGUgZXhpc3RpbmcgdmVyc2lvbiAo
JWxsZCkuIiwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPih2ZXJzaW9uKSwgc3RhdGljX2Nhc3Q8bG9u
ZyBsb25nPihtX21ldGFkYXRhLmludFZlcnNpb24pKSkpOworCisgICAgLy8gRklYTUU6IERhdGFi
YXNlIHZlcnNpb25zIGFyZSBub3cgb2YgdHlwZSB1aW50NjRfdCwgYnV0IHRoaXMgY29kZSBleHBl
Y3RlZCBpbnQ2NF90LgorICAgIGlmICh2ZXJzaW9uIDwgKGludDY0X3QpbV9tZXRhZGF0YS52ZXJz
aW9uKSB7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVh
dGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlZlcnNpb25FcnJvciwgU3RyaW5nOjpmb3JtYXQoIlRo
ZSByZXF1ZXN0ZWQgdmVyc2lvbiAoJWxsZCkgaXMgbGVzcyB0aGFuIHRoZSBleGlzdGluZyB2ZXJz
aW9uICglbGxkKS4iLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHZlcnNpb24pLCBzdGF0aWNfY2Fz
dDxsb25nIGxvbmc+KG1fbWV0YWRhdGEudmVyc2lvbikpKSk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9Ci0gICAgQVNTRVJUKHZlcnNpb24gPT0gbV9tZXRhZGF0YS5pbnRWZXJzaW9uKTsKKworICAg
IC8vIEZJWE1FOiBEYXRhYmFzZSB2ZXJzaW9ucyBhcmUgbm93IG9mIHR5cGUgdWludDY0X3QsIGJ1
dCB0aGlzIGNvZGUgZXhwZWN0ZWQgaW50NjRfdC4KKyAgICBBU1NFUlQodmVyc2lvbiA9PSAoaW50
NjRfdCltX21ldGFkYXRhLnZlcnNpb24pOwogICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYWRk
KGRhdGFiYXNlQ2FsbGJhY2tzKTsKICAgICBjYWxsYmFja3MtPm9uU3VjY2Vzcyh0aGlzLCB0aGlz
LT5tZXRhZGF0YSgpKTsKIH0KQEAgLTEyNTAsNyArMTI1NCw3IEBAIHZvaWQgSURCRGF0YWJhc2VC
YWNrZW5kTGV2ZWxEQjo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8
SURCQ2FsCiAgICAgZm9yIChEYXRhYmFzZUNhbGxiYWNrc1NldDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmJlZ2luKCk7IGl0ICE9IG1fZGF0YWJhc2VDYWxsYmFj
a3NTZXQuZW5kKCk7ICsraXQpIHsKICAgICAgICAgLy8gRnJvbnQgZW5kIGVuc3VyZXMgdGhlIGV2
ZW50IGlzIG5vdCBmaXJlZCBhdCBjb25uZWN0aW9ucyB0aGF0IGhhdmUgY2xvc2VQZW5kaW5nIHNl
dC4KICAgICAgICAgaWYgKCppdCAhPSBkYXRhYmFzZUNhbGxiYWNrcykKLSAgICAgICAgICAgICgq
aXQpLT5vblZlcnNpb25DaGFuZ2UobV9tZXRhZGF0YS5pbnRWZXJzaW9uLCByZXF1ZXN0ZWRWZXJz
aW9uKTsKKyAgICAgICAgICAgICgqaXQpLT5vblZlcnNpb25DaGFuZ2UobV9tZXRhZGF0YS52ZXJz
aW9uLCByZXF1ZXN0ZWRWZXJzaW9uLCBJbmRleGVkREI6Ok51bGxWZXJzaW9uKTsKICAgICB9CiAg
ICAgLy8gVGhlIHNwZWMgZGljdGF0ZXMgd2Ugd2FpdCB1bnRpbCBhbGwgdGhlIHZlcnNpb24gY2hh
bmdlIGV2ZW50cyBhcmUKICAgICAvLyBkZWxpdmVyZWQgYW5kIHRoZW4gY2hlY2sgbV9kYXRhYmFz
ZUNhbGxiYWNrcy5lbXB0eSgpIGJlZm9yZSBwcm9jZWVkaW5nCkBAIC0xMjYwLDcgKzEyNjQsNyBA
QCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZExldmVsREI6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbihQYXNzUmVmUHRyPElEQkNhbAogICAgIC8vIHRlbGxzIHVzIHRoYXQgYWxsIHRoZSBi
bG9ja2VkIGV2ZW50cyBoYXZlIGJlZW4gZGVsaXZlcmVkLiBTZWUKICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMzAKICAgICBpZiAoY29ubmVjdGlvbkNv
dW50KCkpCi0gICAgICAgIGNhbGxiYWNrcy0+b25CbG9ja2VkKG1fbWV0YWRhdGEuaW50VmVyc2lv
bik7CisgICAgICAgIGNhbGxiYWNrcy0+b25CbG9ja2VkKG1fbWV0YWRhdGEudmVyc2lvbik7CiAg
ICAgLy8gRklYTUU6IEFkZCB0ZXN0IGZvciBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b24uCiAgICAgaWYgKG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCBjb25uZWN0
aW9uQ291bnQoKSkgewogICAgICAgICBtX3BlbmRpbmdPcGVuQ2FsbHMuYXBwZW5kKFBlbmRpbmdP
cGVuQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MsIHRyYW5zYWN0aW9u
SWQsIHJlcXVlc3RlZFZlcnNpb24pKTsKQEAgLTEyNzEsNyArMTI3NSw3IEBAIHZvaWQgSURCRGF0
YWJhc2VCYWNrZW5kTGV2ZWxEQjo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKFBhc3NS
ZWZQdHI8SURCQ2FsCiAgICAgY3JlYXRlVHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZCwgZGF0YWJh
c2VDYWxsYmFja3MsIG9iamVjdFN0b3JlSWRzLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lv
bkNoYW5nZSk7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI+IHRyYW5z
YWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQpOwogCi0gICAgdHJhbnNh
Y3Rpb24tPnNjaGVkdWxlVGFzayhWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uOjpjcmVhdGUodGhpcywg
dHJhbnNhY3Rpb25JZCwgcmVxdWVzdGVkVmVyc2lvbiwgY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxi
YWNrcyksIFZlcnNpb25DaGFuZ2VBYm9ydE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIG1fbWV0YWRh
dGEudmVyc2lvbiwgbV9tZXRhZGF0YS5pbnRWZXJzaW9uKSk7CisgICAgdHJhbnNhY3Rpb24tPnNj
aGVkdWxlVGFzayhWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uOjpjcmVhdGUodGhpcywgdHJhbnNhY3Rp
b25JZCwgcmVxdWVzdGVkVmVyc2lvbiwgY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcyksIFZl
cnNpb25DaGFuZ2VBYm9ydE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFN0cmluZzo6bnVtYmVyKG1f
bWV0YWRhdGEudmVyc2lvbiksIG1fbWV0YWRhdGEudmVyc2lvbikpOwogCiAgICAgQVNTRVJUKCFt
X3BlbmRpbmdTZWNvbmRIYWxmT3Blbik7CiAgICAgbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5hZGQo
ZGF0YWJhc2VDYWxsYmFja3MpOwpAQCAtMTI4MywxMiArMTI4NywxMiBAQCB2b2lkIElEQkRhdGFi
YXNlQmFja2VuZExldmVsREI6OmRlbGV0ZURhdGFiYXNlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tz
PiBwcnBDYWxsYgogICAgIGlmIChpc0RlbGV0ZURhdGFiYXNlQmxvY2tlZCgpKSB7CiAgICAgICAg
IGZvciAoRGF0YWJhc2VDYWxsYmFja3NTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9kYXRhYmFz
ZUNhbGxiYWNrc1NldC5iZWdpbigpOyBpdCAhPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmVuZCgp
OyArK2l0KSB7CiAgICAgICAgICAgICAvLyBGcm9udCBlbmQgZW5zdXJlcyB0aGUgZXZlbnQgaXMg
bm90IGZpcmVkIGF0IGNvbm5lY3Rpb25zIHRoYXQgaGF2ZSBjbG9zZVBlbmRpbmcgc2V0LgotICAg
ICAgICAgICAgKCppdCktPm9uVmVyc2lvbkNoYW5nZShtX21ldGFkYXRhLmludFZlcnNpb24sIElE
QkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbik7CisgICAgICAgICAgICAoKml0KS0+b25W
ZXJzaW9uQ2hhbmdlKG1fbWV0YWRhdGEudmVyc2lvbiwgMCwgSW5kZXhlZERCOjpOdWxsVmVyc2lv
bik7CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IE9ubHkgZmlyZSBvbkJsb2NrZWQgaWYg
dGhlcmUgYXJlIG9wZW4gY29ubmVjdGlvbnMgYWZ0ZXIgdGhlCiAgICAgICAgIC8vIFZlcnNpb25D
aGFuZ2VFdmVudHMgYXJlIHJlY2VpdmVkLCBub3QganVzdCBzZXQgdXAgdG8gZmlyZS4KICAgICAg
ICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMTMwCi0gICAg
ICAgIGNhbGxiYWNrcy0+b25CbG9ja2VkKG1fbWV0YWRhdGEuaW50VmVyc2lvbik7CisgICAgICAg
IGNhbGxiYWNrcy0+b25CbG9ja2VkKG1fbWV0YWRhdGEudmVyc2lvbik7CiAgICAgICAgIG1fcGVu
ZGluZ0RlbGV0ZUNhbGxzLmFwcGVuZChQZW5kaW5nRGVsZXRlQ2FsbDo6Y3JlYXRlKGNhbGxiYWNr
cy5yZWxlYXNlKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEzMDgsOSArMTMxMiw4
IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQjo6ZGVsZXRlRGF0YWJhc2VGaW5hbChQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsCiAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJ
REJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJv
ciwgIkludGVybmFsIGVycm9yIGRlbGV0aW5nIGRhdGFiYXNlLiIpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBtX21ldGFkYXRhLnZlcnNpb24gPSBOb1N0cmluZ1ZlcnNpb247CiAgICAg
bV9tZXRhZGF0YS5pZCA9IEludmFsaWRJZDsKLSAgICBtX21ldGFkYXRhLmludFZlcnNpb24gPSBJ
REJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb247CisgICAgbV9tZXRhZGF0YS52ZXJzaW9u
ID0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uOwogICAgIG1fbWV0YWRhdGEub2Jq
ZWN0U3RvcmVzLmNsZWFyKCk7CiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nlc3MoKTsKIH0KQEAgLTEz
NzUsOCArMTM3OCw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQjo6VmVyc2lvbkNo
YW5nZUFib3J0T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0CiB7CiAgICAgSURCX1RSQUNF
KCJWZXJzaW9uQ2hhbmdlQWJvcnRPcGVyYXRpb24iKTsKICAgICBBU1NFUlRfVU5VU0VEKHRyYW5z
YWN0aW9uLCAhdHJhbnNhY3Rpb24pOwotICAgIG1fZGF0YWJhc2UtPm1fbWV0YWRhdGEudmVyc2lv
biA9IG1fcHJldmlvdXNWZXJzaW9uOwotICAgIG1fZGF0YWJhc2UtPm1fbWV0YWRhdGEuaW50VmVy
c2lvbiA9IG1fcHJldmlvdXNJbnRWZXJzaW9uOworICAgIG1fZGF0YWJhc2UtPm1fbWV0YWRhdGEu
dmVyc2lvbiA9IG1fcHJldmlvdXNJbnRWZXJzaW9uOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRi
L0lEQkxldmVsREJDb2RpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
bGV2ZWxkYi9JREJMZXZlbERCQ29kaW5nLmNwcAppbmRleCAwNGU0MjU5Li4wMDhjYjA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkxldmVs
REJDb2RpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVs
ZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKQEAgLTU4MCw3ICs1ODAsNyBAQCBzdGF0aWMgSURCS2V5
OjpUeXBlIGtleVR5cGVCeXRlVG9LZXlUeXBlKHVuc2lnbmVkIGNoYXIgdHlwZSkKICAgICByZXR1
cm4gSURCS2V5OjpJbnZhbGlkVHlwZTsKIH0KIAotaW50IGNvbXBhcmVFbmNvZGVkSURCS2V5cyhj
b25zdCBjaGFyKiYgcHRyQSwgY29uc3QgY2hhciogbGltaXRBLCBjb25zdCBjaGFyKiYgcHRyQiwg
Y29uc3QgY2hhciogbGltaXRCLCBib29sJiBvaykKK3N0YXRpYyBpbnQgY29tcGFyZUVuY29kZWRJ
REJLZXlzKGNvbnN0IGNoYXIqJiBwdHJBLCBjb25zdCBjaGFyKiBsaW1pdEEsIGNvbnN0IGNoYXIq
JiBwdHJCLCBjb25zdCBjaGFyKiBsaW1pdEIsIGJvb2wmIG9rKQogewogICAgIG9rID0gdHJ1ZTsK
ICAgICBBU1NFUlQoJnB0ckEgIT0gJnB0ckIpOwo=
</data>
<flag name="commit-queue"
          id="235119"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212849</attachid>
            <date>2013-09-27 16:00:56 -0700</date>
            <delta_ts>2013-09-27 16:21:14 -0700</delta_ts>
            <desc>Patch v5 - Now with more manual INT64_MAX</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>55163</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NmIzY2UwLi5mNzc5NzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTYg
QEAKKzIwMTMtMDktMjcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIEluZGV4ZWREQiBJREwgUmVmYWN0b3JpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE5OTYKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4
ZXkgUHJvc2t1cnlha292LgorCisgICAgICAgIFRoaXMgaW5jbHVkZXM6CisgICAgICAgIDEgLSBM
ZXZlcmFnaW5nIEV2ZW50VGFyZ2V0LmlkbCBpbmhlcml0YW5jZQorICAgICAgICAyIC0gUmVtb3Zp
bmcgY29tbWVudHMKKyAgICAgICAgMyAtIFJlb3JkZXJpbmcgdG8gbWF0Y2ggdGhlIHNwZWMncyBJ
RExzCisgICAgICAgIDQgLSBSZW1vdmluZyBub25zdGFuZGFyZCwgV2ViS2l0LXNwZWNpZmljIG1l
dGhvZHMKKyAgICAgICAgNSAtIFVwZGF0aW5nIGludGVyZmFjZXMgdG8gbWF0Y2ggdGhlIHNwZWMg
KHZlcnNpb25zIGFyZSBvbmx5IHVpbnQ2NF90J3Mgbm93Li4uKQorICAgICAgICA2IC0gVXBkYXRp
bmcgaW1wbGVtZW50YXRpb24gY29kZSBhcyBuZWVkZWQgKHZlcnNpb25zIGFyZSBvbmx5IHVpbnQ2
NF90J3Mgbm93Li4uKQorCisgICAgICAgIElETCBjaGFuZ2VzOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvci5pZGw6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaWRs
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5pZGw6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuaWRsOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQu
aWRsOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSW5kZXhlZERCLmg6IEFkZCBuZXcg
ZW51bSB0byByZXByZXNlbnQgdmVyc2lvbiBudWxsbmVzcy4KKworICAgICAgICBBZGFwdCB0byBu
ZXcgSURMcywgYW5kIGFsc28gcmVmYWN0b3IgcmVwcmVzZW50YXRpb24gb2YgaW5pdGlhbCwgbnVs
bCB2ZXJzaW9uaW5nOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5o
OgorICAgICAgICAoV2ViQ29yZTo6SURCQ2FsbGJhY2tzOjpvbkJsb2NrZWQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2FsbGJhY2tzOjpvblVwZ3JhZGVOZWVkZWQpOgorCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2U6OnZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6Om9uVmVyc2lv
bkNoYW5nZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaDoKKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmg6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6b25WZXJzaW9uQ2hhbmdl
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwu
aDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRmFjdG9yeTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0
b3J5OjpvcGVuSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeTo6ZGVsZXRl
RGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaDoKKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhOjpJREJEYXRhYmFzZU1ldGFkYXRhKToKKworICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9w
ZW5EQlJlcXVlc3Q6OklEQk9wZW5EQlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCT3Bl
bkRCUmVxdWVzdDo6b25CbG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVl
c3Q6Om9uVXBncmFkZU5lZWRlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3Bl
bkRCUmVxdWVzdC5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5j
cHA6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oOgorCisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVmVy
c2lvbkNoYW5nZUV2ZW50OjpJREJWZXJzaW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
SURCVmVyc2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVmVy
c2lvbkNoYW5nZUV2ZW50OjpvbGRWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlZlcnNp
b25DaGFuZ2VFdmVudDo6bmV3VmVyc2lvbik6CisKKyAgICAgICAgS2VlcCBsZXZlbGRiIGJ1aWxk
aW5nIHdpdGggbWluaW1hbCBhZGFwdGF0aW9ucyB0byB0aGUgbmV3IElETHMsCisgICAgICAgIGJ1
dCBub3RlIHRoYXQgdGhlIExldmVsREIgaW1wbGVtZW50YXRpb24gaXMgbm93IGluY29tcGF0aWJs
ZSB3aXRoIHRoZSBzcGVjOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURC
QmFja2luZ1N0b3JlTGV2ZWxEQi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3Rv
cmU6OmdldElEQkRhdGFiYXNlTWV0YURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6b2JqZWN0U3Rv
cmVDdXJzb3JPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OmluZGV4Q3Vyc29yT3B0aW9ucyk6
CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZExldmVsREIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxE
Qjo6SURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZUJhY2tlbmRMZXZlbERCOjpvcGVuSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kTGV2ZWxEQjo6VmVyc2lvbkNoYW5nZU9wZXJhdGlvbjo6cGVyZm9ybSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpwcm9jZXNzUGVu
ZGluZ0NhbGxzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZExldmVsREI6
Om9wZW5Db25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZExl
dmVsREI6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpkZWxldGVEYXRhYmFzZUZpbmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZExldmVsREI6OlZlcnNpb25DaGFu
Z2VBYm9ydE9wZXJhdGlvbjo6cGVyZm9ybSk6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9sZXZlbGRiL0lEQkxldmVsREJDb2RpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2
ZWxEQkNvZGluZzo6Y29tcGFyZUVuY29kZWRJREJLZXlzKToKKwogMjAxMy0wOS0yNyAgVGhpYWdv
IGRlIEJhcnJvcyBMYWNlcmRhICA8dGhpYWdvLmxhY2VyZGFAb3BlbmJvc3NhLm9yZz4KIAogICAg
ICAgICBHZXQgTWVkaWFTdHJlYW1DZW50ZXJHU3RyZWFtZXIgY29tcGlsaW5nIGFnYWluCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDYWxsYmFja3MuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5oCmluZGV4IGRh
N2RlMDcuLjlkYWEzZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkNhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkNhbGxiYWNrcy5oCkBAIC02OCw5ICs2OCw5IEBAIHB1YmxpYzoKICAgICAvLyBGcm9tIElE
QkN1cnNvci5hZHZhbmNlKCkvY29udGludWUoKQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3NX
aXRoUHJlZmV0Y2goY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mIGtleXMsIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8SURCS2V5PiA+JiBwcmltYXJ5S2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxT
aGFyZWRCdWZmZXI+ID4mIHZhbHVlcykgPSAwOwogICAgIC8vIEZyb20gSURCRmFjdG9yeS5vcGVu
KCkvZGVsZXRlRGF0YWJhc2UoKQotICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoaW50NjRfdCAv
KiBleGlzdGluZ1ZlcnNpb24gKi8pIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgb25CbG9ja2VkKHVpbnQ2NF90IC8qIGV4aXN0aW5nVmVyc2lvbiAqLykgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIC8vIEZyb20gSURCRmFjdG9yeS5vcGVuKCkKLSAgICB2
aXJ0dWFsIHZvaWQgb25VcGdyYWRlTmVlZGVkKGludDY0X3QgLyogb2xkVmVyc2lvbiAqLywgUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+LCBjb25zdCBJREJEYXRhYmFzZU1l
dGFkYXRhJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBvblVw
Z3JhZGVOZWVkZWQodWludDY0X3QgLyogb2xkVmVyc2lvbiAqLywgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2U+LCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJikgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+LCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRh
JikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5pZGwKaW5kZXggOTU1NDA3YS4uNTA0M2VjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaWRsCkBAIC0y
NywxMSArMjcsMTAgQEAKICAgICBDb25kaXRpb25hbD1JTkRFWEVEX0RBVEFCQVNFLAogICAgIEpT
Tm9TdGF0aWNUYWJsZXMKIF0gaW50ZXJmYWNlIElEQkN1cnNvciB7Ci0KKyAgICByZWFkb25seSBh
dHRyaWJ1dGUgSURCQW55IHNvdXJjZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGRpcmVjdGlvbjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYW55IGtleTsKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgYW55IHByaW1hcnlLZXk7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIElEQkFu
eSBzb3VyY2U7CiAKICAgICBbQ2FsbFdpdGg9U2NyaXB0U3RhdGUsIFJhaXNlc0V4Y2VwdGlvbl0g
SURCUmVxdWVzdCB1cGRhdGUoYW55IHZhbHVlKTsKICAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lk
IGFkdmFuY2UoW0VuZm9yY2VSYW5nZV0gdW5zaWduZWQgbG9uZyBjb3VudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKaW5kZXggOGM0ZTU0
OS4uODdjYTEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlLmNwcApAQCAtMTMxLDEyICsxMzEsOSBAQCBQYXNzUmVmUHRyPERPTVN0cmluZ0xp
c3Q+IElEQkRhdGFiYXNlOjpvYmplY3RTdG9yZU5hbWVzKCkgY29uc3QKICAgICByZXR1cm4gb2Jq
ZWN0U3RvcmVOYW1lcy5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8SURCQW55PiBJREJEYXRh
YmFzZTo6dmVyc2lvbigpIGNvbnN0Cit1aW50NjRfdCBJREJEYXRhYmFzZTo6dmVyc2lvbigpIGNv
bnN0CiB7Ci0gICAgaW50NjRfdCBpbnRWZXJzaW9uID0gbV9tZXRhZGF0YS5pbnRWZXJzaW9uOwot
ICAgIGlmIChpbnRWZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbikK
LSAgICAgICAgcmV0dXJuIElEQkFueTo6Y3JlYXRlU3RyaW5nKG1fbWV0YWRhdGEudmVyc2lvbik7
Ci0gICAgcmV0dXJuIElEQkFueTo6Y3JlYXRlKGludFZlcnNpb24pOworICAgIHJldHVybiBtX21l
dGFkYXRhLnZlcnNpb247CiB9CiAKIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IElEQkRhdGFi
YXNlOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IERpY3Rpb25h
cnkmIG9wdGlvbnMsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMzAzLDcgKzMwMCw3IEBAIHZvaWQg
SURCRGF0YWJhc2U6OmNsb3NlQ29ubmVjdGlvbigpCiAgICAgfQogfQogCi12b2lkIElEQkRhdGFi
YXNlOjpvblZlcnNpb25DaGFuZ2UoaW50NjRfdCBvbGRWZXJzaW9uLCBpbnQ2NF90IG5ld1ZlcnNp
b24pCit2b2lkIElEQkRhdGFiYXNlOjpvblZlcnNpb25DaGFuZ2UodWludDY0X3Qgb2xkVmVyc2lv
biwgdWludDY0X3QgbmV3VmVyc2lvbiwgSW5kZXhlZERCOjpWZXJzaW9uTnVsbG5lc3MgbmV3VmVy
c2lvbk51bGxuZXNzKQogewogICAgIElEQl9UUkFDRSgiSURCRGF0YWJhc2U6Om9uVmVyc2lvbkNo
YW5nZSIpOwogICAgIGlmIChtX2NvbnRleHRTdG9wcGVkIHx8ICFzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCkpCkBAIC0zMTIsOCArMzA5LDcgQEAgdm9pZCBJREJEYXRhYmFzZTo6b25WZXJzaW9uQ2hh
bmdlKGludDY0X3Qgb2xkVmVyc2lvbiwgaW50NjRfdCBuZXdWZXJzaW9uKQogICAgIGlmIChtX2Ns
b3NlUGVuZGluZykKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPElEQkFueT4gbmV3VmVy
c2lvbkFueSA9IG5ld1ZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9u
ID8gSURCQW55OjpjcmVhdGVOdWxsKCkgOiBJREJBbnk6OmNyZWF0ZShuZXdWZXJzaW9uKTsKLSAg
ICBlbnF1ZXVlRXZlbnQoSURCVmVyc2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUoSURCQW55OjpjcmVh
dGUob2xkVmVyc2lvbiksIG5ld1ZlcnNpb25BbnkucmVsZWFzZSgpLCBldmVudE5hbWVzKCkudmVy
c2lvbmNoYW5nZUV2ZW50KSk7CisgICAgZW5xdWV1ZUV2ZW50KElEQlZlcnNpb25DaGFuZ2VFdmVu
dDo6Y3JlYXRlKG9sZFZlcnNpb24sIG5ld1ZlcnNpb24sIG5ld1ZlcnNpb25OdWxsbmVzcykpOwog
fQogCiB2b2lkIElEQkRhdGFiYXNlOjplbnF1ZXVlRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZl
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaApp
bmRleCAyYTQ2ZTQ2Li45MDI1MzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlLmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogCiAgICAgLy8g
SW1wbGVtZW50IHRoZSBJREwKICAgICBjb25zdCBTdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWV0YWRhdGEubmFtZTsgfQotICAgIFBhc3NSZWZQdHI8SURCQW55PiB2ZXJzaW9uKCkgY29u
c3Q7CisgICAgdWludDY0X3QgdmVyc2lvbigpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8RE9NU3Ry
aW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lcygpIGNvbnN0OwogCiAgICAgUGFzc1JlZlB0cjxJREJP
YmplY3RTdG9yZT4gY3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBE
aWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYpOwpAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAg
ICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih2ZXJzaW9uY2hhbmdlKTsKIAogICAg
IC8vIElEQkRhdGFiYXNlQ2FsbGJhY2tzCi0gICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5n
ZShpbnQ2NF90IG9sZFZlcnNpb24sIGludDY0X3QgbmV3VmVyc2lvbik7CisgICAgdmlydHVhbCB2
b2lkIG9uVmVyc2lvbkNoYW5nZSh1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJz
aW9uLCBJbmRleGVkREI6OlZlcnNpb25OdWxsbmVzcyBuZXdWZXJzaW9uTnVsbG5lc3MpOwogICAg
IHZpcnR1YWwgdm9pZCBvbkFib3J0KGludDY0X3QsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJv
cj4pOwogICAgIHZpcnR1YWwgdm9pZCBvbkNvbXBsZXRlKGludDY0X3QpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5pZGwKaW5kZXggMmM1Y2M4
Ni4uZDYwMzhmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlLmlkbApAQCAtMjksMzAgKzI5LDIwIEBACiAgICAgQWN0aXZlRE9NT2JqZWN0LAog
ICAgIEV2ZW50VGFyZ2V0LAogICAgIEpTTm9TdGF0aWNUYWJsZXMKLV0gaW50ZXJmYWNlIElEQkRh
dGFiYXNlIHsKK10gaW50ZXJmYWNlIElEQkRhdGFiYXNlIDogRXZlbnRUYXJnZXQgewogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUg
SURCQW55IHZlcnNpb247CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9u
ZyB2ZXJzaW9uOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmdMaXN0IG9iamVjdFN0
b3JlTmFtZXM7CiAKLSAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmFib3J0OwotICAgIGF0
dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZXJyb3I7Ci0gICAgYXR0cmlidXRlIEV2ZW50TGlzdGVu
ZXIgb252ZXJzaW9uY2hhbmdlOwotCiAgICAgW0N1c3RvbSwgUmFpc2VzRXhjZXB0aW9uXSBJREJP
YmplY3RTdG9yZSBjcmVhdGVPYmplY3RTdG9yZShET01TdHJpbmcgbmFtZSwgb3B0aW9uYWwgRGlj
dGlvbmFyeSBvcHRpb25zKTsKICAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIGRlbGV0ZU9iamVj
dFN0b3JlKERPTVN0cmluZyBuYW1lKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBJREJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbihET01TdHJp
bmdMaXN0IHN0b3JlTmFtZXMsIFtEZWZhdWx0PU51bGxTdHJpbmddIG9wdGlvbmFsIERPTVN0cmlu
ZyBtb2RlKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhj
ZXB0aW9uXSBJREJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbihzZXF1ZW5jZTxET01TdHJpbmc+IHN0
b3JlTmFtZXMsIFtEZWZhdWx0PU51bGxTdHJpbmddIG9wdGlvbmFsIERPTVN0cmluZyBtb2RlKTsK
ICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBJ
REJUcmFuc2FjdGlvbiB0cmFuc2FjdGlvbihET01TdHJpbmcgc3RvcmVOYW1lLCBbRGVmYXVsdD1O
dWxsU3RyaW5nXSBvcHRpb25hbCBET01TdHJpbmcgbW9kZSk7Ci0KKyAgICBbQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBJREJUcmFuc2FjdGlvbiB0cmFu
c2FjdGlvbihzZXF1ZW5jZTxET01TdHJpbmc+IHN0b3JlTmFtZXMsIFtEZWZhdWx0PU51bGxTdHJp
bmddIG9wdGlvbmFsIERPTVN0cmluZyBtb2RlKTsKICAgICB2b2lkIGNsb3NlKCk7CiAKLSAgICAv
LyBFdmVudFRhcmdldCBpbnRlcmZhY2UKLSAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoRE9NU3Ry
aW5nIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50TGlzdGVuZXIgbGlzdGVu
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVy
ZSk7Ci0gICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKERPTVN0cmluZyB0eXBlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBib29sZWFuIHVzZUNhcHR1cmUpOwotICAgIFtS
YWlzZXNFeGNlcHRpb25dIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChFdmVudCBldnQpOworICAgIGF0
dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWJvcnQ7CisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVu
ZXIgb25lcnJvcjsKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnZlcnNpb25jaGFuZ2U7
CisKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkRhdGFiYXNlQ2FsbGJhY2tzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJEYXRhYmFzZUNhbGxiYWNrcy5oCmluZGV4IGZjMjQyZTAuLjc3NzBhYmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFj
a3MuaApAQCAtMjksMjAgKzI5LDI1IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAK
ICNpbmNsdWRlICJJREJEYXRhYmFzZUVycm9yLmgiCisjaW5jbHVkZSAiSW5kZXhlZERCLmgiCiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBJREJEYXRhYmFzZTsKKwogY2xhc3Mg
SURCRGF0YWJhc2VDYWxsYmFja3MgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJEYXRhYmFzZUNhbGxi
YWNrcz4gewogcHVibGljOgogICAgIHZpcnR1YWwgfklEQkRhdGFiYXNlQ2FsbGJhY2tzKCkgeyB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgb25Gb3JjZWRDbG9zZSgpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgb25WZXJzaW9uQ2hhbmdlKGludDY0X3Qgb2xkVmVyc2lvbiwgaW50NjRfdCBuZXdWZXJzaW9u
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG9uVmVyc2lvbkNoYW5nZSh1aW50NjRfdCBvbGRWZXJz
aW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uLCBJbmRleGVkREI6OlZlcnNpb25OdWxsbmVzcyBuZXdW
ZXJzaW9uTnVsbG5lc3MpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBvbkFib3J0KGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBvbkNvbXBsZXRlKGludDY0X3QgdHJhbnNhY3Rpb25JZCkgPSAwOworCisgICAg
dmlydHVhbCB2b2lkIGNvbm5lY3QoSURCRGF0YWJhc2UqKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcAppbmRleCA0MmFmN2EyLi41ODdj
NGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRh
YmFzZUNhbGxiYWNrc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAKQEAgLTUyLDEwICs1MiwxMCBAQCB2b2lk
IElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6b25Gb3JjZWRDbG9zZSgpCiAgICAgICAgIG1fZGF0
YWJhc2UtPmZvcmNlQ2xvc2UoKTsKIH0KIAotdm9pZCBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6
Om9uVmVyc2lvbkNoYW5nZShpbnQ2NF90IG9sZFZlcnNpb24sIGludDY0X3QgbmV3VmVyc2lvbikK
K3ZvaWQgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpvblZlcnNpb25DaGFuZ2UodWludDY0X3Qg
b2xkVmVyc2lvbiwgdWludDY0X3QgbmV3VmVyc2lvbiwgSW5kZXhlZERCOjpWZXJzaW9uTnVsbG5l
c3MgbmV3VmVyc2lvbk51bGxuZXNzKQogewogICAgIGlmIChtX2RhdGFiYXNlKQotICAgICAgICBt
X2RhdGFiYXNlLT5vblZlcnNpb25DaGFuZ2Uob2xkVmVyc2lvbiwgbmV3VmVyc2lvbik7CisgICAg
ICAgIG1fZGF0YWJhc2UtPm9uVmVyc2lvbkNoYW5nZShvbGRWZXJzaW9uLCBuZXdWZXJzaW9uLCBu
ZXdWZXJzaW9uTnVsbG5lc3MpOwogfQogCiB2b2lkIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6
Y29ubmVjdChJREJEYXRhYmFzZSogZGF0YWJhc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCmluZGV4
IDVhNzhiMzcuLjRmZDc1NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5oCkBAIC0zNiwxOSArMzYs
MTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJEYXRhYmFzZTsKIAotY2xhc3Mg
SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsIDogcHVibGljIElEQkRhdGFiYXNlQ2FsbGJhY2tzIHsK
K2NsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCBGSU5BTCA6IHB1YmxpYyBJREJEYXRhYmFz
ZUNhbGxiYWNrcyB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VD
YWxsYmFja3NJbXBsPiBjcmVhdGUoKTsKLSAgICB2aXJ0dWFsIH5JREJEYXRhYmFzZUNhbGxiYWNr
c0ltcGwoKTsKKyAgICB2aXJ0dWFsIH5JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwoKSBPVkVSUklE
RTsKIAogICAgIC8vIElEQkRhdGFiYXNlQ2FsbGJhY2tzCi0gICAgdmlydHVhbCB2b2lkIG9uRm9y
Y2VkQ2xvc2UoKTsKLSAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGludDY0X3Qgb2xk
VmVyc2lvbiwgaW50NjRfdCBuZXdWZXJzaW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgb25Gb3JjZWRD
bG9zZSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UodWludDY0
X3Qgb2xkVmVyc2lvbiwgdWludDY0X3QgbmV3VmVyc2lvbiwgSW5kZXhlZERCOjpWZXJzaW9uTnVs
bG5lc3MgbmV3VmVyc2lvbk51bGxuZXNzKSBPVkVSUklERTsKIAotICAgIHZpcnR1YWwgdm9pZCBv
bkFib3J0KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9y
Pik7Ci0gICAgdmlydHVhbCB2b2lkIG9uQ29tcGxldGUoaW50NjRfdCB0cmFuc2FjdGlvbklkKTsK
KyAgICB2aXJ0dWFsIHZvaWQgb25BYm9ydChpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VFcnJvcj4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBvbkNvbXBs
ZXRlKGludDY0X3QgdHJhbnNhY3Rpb25JZCkgT1ZFUlJJREU7CiAKLSAgICB2b2lkIGNvbm5lY3Qo
SURCRGF0YWJhc2UqKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChJREJEYXRhYmFzZSopIE9W
RVJSSURFOwogCiBwcml2YXRlOgogICAgIElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmNwcAppbmRleCBl
YTgyMDA3Li5jNGZiMGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJGYWN0b3J5LmNwcApAQCAtMTEzLDYgKzExMywxMiBAQCBQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQkZhY3Rvcnk6OmdldERhdGFiYXNlTmFtZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udAogICAgIHJldHVybiByZXF1ZXN0OwogfQogCitQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVl
c3Q+IElEQkZhY3Rvcnk6Om9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29u
c3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBJREJfVFJBQ0UoIklE
QkZhY3Rvcnk6Om9wZW4iKTsKKyAgICByZXR1cm4gb3BlbkludGVybmFsKGNvbnRleHQsIG5hbWUs
IDAsIEluZGV4ZWREQjo6TnVsbFZlcnNpb24sIGVjKTsKK30KKwogUGFzc1JlZlB0cjxJREJPcGVu
REJSZXF1ZXN0PiBJREJGYWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgdW5zaWduZWQgbG9uZyBsb25nIHZlcnNpb24sIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIElEQl9UUkFDRSgiSURCRmFjdG9yeTo6b3BlbiIpOwpAQCAt
MTIwLDEzICsxMjYsMTMgQEAgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJGYWN0b3J5
OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGMKICAgICAgICAgZWMgPSBU
eXBlRXJyb3I7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICByZXR1cm4gb3BlbkludGVy
bmFsKGNvbnRleHQsIG5hbWUsIHZlcnNpb24sIGVjKTsKKyAgICByZXR1cm4gb3BlbkludGVybmFs
KGNvbnRleHQsIG5hbWUsIHZlcnNpb24sIEluZGV4ZWREQjo6Tm9uTnVsbFZlcnNpb24sIGVjKTsK
IH0KIAotUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJGYWN0b3J5OjpvcGVuSW50ZXJu
YWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBp
bnQ2NF90IHZlcnNpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxJREJPcGVuREJS
ZXF1ZXN0PiBJREJGYWN0b3J5OjpvcGVuSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCB1aW50NjRfdCB2ZXJzaW9uLCBJbmRleGVkREI6
OlZlcnNpb25OdWxsbmVzcyB2ZXJzaW9uTnVsbG5lc3MsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewog
ICAgIEhpc3RvZ3JhbVN1cHBvcnQ6Omhpc3RvZ3JhbUVudW1lcmF0aW9uKCJXZWJDb3JlLkluZGV4
ZWREQi5Gcm9udEVuZEFQSUNhbGxzIiwgSURCT3BlbkNhbGwsIElEQk1ldGhvZHNNYXgpOwotICAg
IEFTU0VSVCh2ZXJzaW9uID49IDEgfHwgdmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpO
b0ludFZlcnNpb24pOworICAgIEFTU0VSVCh2ZXJzaW9uID49IDEgfHwgdmVyc2lvbk51bGxuZXNz
ID09IEluZGV4ZWREQjo6TnVsbFZlcnNpb24pOwogICAgIGlmIChuYW1lLmlzTnVsbCgpKSB7CiAg
ICAgICAgIGVjID0gVHlwZUVycm9yOwogICAgICAgICByZXR1cm4gMDsKQEAgLTEzOCwxOSArMTQ0
LDEzIEBAIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURCRmFjdG9yeTo6b3BlbkludGVy
bmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvCiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
IAotICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IGRhdGFiYXNlQ2FsbGJhY2tz
ID0gSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpjcmVhdGUoKTsKKyAgICBSZWZQdHI8SURCRGF0
YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzID0gSURCRGF0YWJhc2VDYWxsYmFja3NJ
bXBsOjpjcmVhdGUoKTsKICAgICBpbnQ2NF90IHRyYW5zYWN0aW9uSWQgPSBJREJEYXRhYmFzZTo6
bmV4dFRyYW5zYWN0aW9uSWQoKTsKLSAgICBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gcmVxdWVz
dCA9IElEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZShjb250ZXh0LCBkYXRhYmFzZUNhbGxiYWNrcywg
dHJhbnNhY3Rpb25JZCwgdmVyc2lvbik7CisgICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IHJl
cXVlc3QgPSBJREJPcGVuREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgZGF0YWJhc2VDYWxsYmFj
a3MsIHRyYW5zYWN0aW9uSWQsIHZlcnNpb24sIHZlcnNpb25OdWxsbmVzcyk7CiAgICAgbV9iYWNr
ZW5kLT5vcGVuKG5hbWUsIHZlcnNpb24sIHRyYW5zYWN0aW9uSWQsIHJlcXVlc3QsIGRhdGFiYXNl
Q2FsbGJhY2tzLCBjb250ZXh0LT5zZWN1cml0eU9yaWdpbigpLCBjb250ZXh0LCBnZXRJbmRleGVk
REJEYXRhYmFzZVBhdGgoY29udGV4dCkpOwogICAgIHJldHVybiByZXF1ZXN0OwogfQogCi1QYXNz
UmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9wZW4oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykK
LXsKLSAgICBJREJfVFJBQ0UoIklEQkZhY3Rvcnk6Om9wZW4iKTsKLSAgICByZXR1cm4gb3Blbklu
dGVybmFsKGNvbnRleHQsIG5hbWUsIElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbiwg
ZWMpOwotfQotCiBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQkZhY3Rvcnk6OmRlbGV0
ZURhdGFiYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJREJGYWN0b3J5Ojpk
ZWxldGVEYXRhYmFzZSIpOwpAQCAtMTY2LDcgKzE2Niw3IEBAIFBhc3NSZWZQdHI8SURCT3BlbkRC
UmVxdWVzdD4gSURCRmFjdG9yeTo6ZGVsZXRlRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCoKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgUmVmUHRyPElEQk9wZW5EQlJlcXVl
c3Q+IHJlcXVlc3QgPSBJREJPcGVuREJSZXF1ZXN0OjpjcmVhdGUoY29udGV4dCwgMCwgMCwgSURC
RGF0YWJhc2VNZXRhZGF0YTo6RGVmYXVsdEludFZlcnNpb24pOworICAgIFJlZlB0cjxJREJPcGVu
REJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKGNvbnRleHQsIDAs
IDAsIDAsIEluZGV4ZWREQjo6TnVsbFZlcnNpb24pOwogICAgIG1fYmFja2VuZC0+ZGVsZXRlRGF0
YWJhc2UobmFtZSwgcmVxdWVzdCwgY29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKSwgY29udGV4dCwg
Z2V0SW5kZXhlZERCRGF0YWJhc2VQYXRoKGNvbnRleHQpKTsKICAgICByZXR1cm4gcmVxdWVzdDsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3Rv
cnkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaAppbmRl
eCA0MWUyMzg1Li45MDY1ZDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCRmFjdG9yeS5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
SURCRmFjdG9yeShJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSopOwogCi0gICAgUGFzc1JlZlB0
cjxJREJPcGVuREJSZXF1ZXN0PiBvcGVuSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCB2ZXJzaW9uLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBvcGVuSW50ZXJuYWwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbmFtZSwgdWludDY0X3QgdmVyc2lvbiwgSW5kZXhl
ZERCOjpWZXJzaW9uTnVsbG5lc3MsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFJlZlB0cjxJREJG
YWN0b3J5QmFja2VuZEludGVyZmFjZT4gbV9iYWNrZW5kOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaWRsIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5pZGwKaW5kZXggOTAxNjhhNS4uODk2ZDYz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9y
eS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5p
ZGwKQEAgLTI4LDExICsyOCw4IEBACiAgICAgSlNOb1N0YXRpY1RhYmxlcywKICAgICBJbXBsZW1l
bnRhdGlvbkxhY2tzVlRhYmxlCiBdIGludGVyZmFjZSBJREJGYWN0b3J5IHsKLSAgICBbQ2FsbFdp
dGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgSW1wbGVtZW50ZWRBcz1nZXREYXRhYmFzZU5hbWVz
LCBSYWlzZXNFeGNlcHRpb25dIElEQlJlcXVlc3Qgd2Via2l0R2V0RGF0YWJhc2VOYW1lcygpOwot
CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0g
SURCT3BlbkRCUmVxdWVzdCBvcGVuKERPTVN0cmluZyBuYW1lLCBbRW5mb3JjZVJhbmdlXSBvcHRp
b25hbCB1bnNpZ25lZCBsb25nIGxvbmcgdmVyc2lvbik7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gSURCT3BlbkRCUmVxdWVzdCBkZWxldGVE
YXRhYmFzZShET01TdHJpbmcgbmFtZSk7Ci0KICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBzaG9ydCBjbXAoYW55IGZpcnN0LCBhbnkgc2Vjb25k
KTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QkluZGV4LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4Lmlk
bAppbmRleCBjZGFjZmU2Li5iYTBiMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCSW5kZXguaWRsCkBAIC0zMSw4ICszMSw4IEBACiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIERPTVN0cmluZyBuYW1lOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJPYmplY3RT
dG9yZSBvYmplY3RTdG9yZTsKICAgICBbSW1wbGVtZW50ZWRBcz1rZXlQYXRoQW55XSByZWFkb25s
eSBhdHRyaWJ1dGUgSURCQW55IGtleVBhdGg7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xl
YW4gdW5pcXVlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIG11bHRpRW50cnk7Cisg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gdW5pcXVlOwogCiAgICAgW0NhbGxXaXRoPVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBvcGVuQ3Vy
c29yKG9wdGlvbmFsIElEQktleVJhbmdlPyByYW5nZSwgb3B0aW9uYWwgRE9NU3RyaW5nIGRpcmVj
dGlvbik7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2Vw
dGlvbl0gSURCUmVxdWVzdCBvcGVuQ3Vyc29yKGFueSBrZXksIG9wdGlvbmFsIERPTVN0cmluZyBk
aXJlY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCS2V5UmFuZ2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5
UmFuZ2UuaWRsCmluZGV4IGM2MGQ3NDAuLjBmZWMzMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5pZGwKQEAgLTM0LDggKzM0LDggQEAKICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB1cHBlck9wZW47CiAKICAgICBbQ2FsbFdpdGg9
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBzdGF0aWMgSURCS2V5UmFu
Z2Ugb25seShhbnkgdmFsdWUpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
LCBSYWlzZXNFeGNlcHRpb25dIHN0YXRpYyBJREJLZXlSYW5nZSBsb3dlckJvdW5kKGFueSBib3Vu
ZCwgb3B0aW9uYWwgYm9vbGVhbiBvcGVuKTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBzdGF0aWMgSURCS2V5UmFuZ2UgdXBwZXJCb3VuZChh
bnkgYm91bmQsIG9wdGlvbmFsIGJvb2xlYW4gb3Blbik7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gc3RhdGljIElEQktleVJhbmdlIGxvd2Vy
Qm91bmQoYW55IGxvd2VyLCBvcHRpb25hbCBib29sZWFuIG9wZW4pOworICAgIFtDYWxsV2l0aD1T
Y3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIHN0YXRpYyBJREJLZXlSYW5n
ZSB1cHBlckJvdW5kKGFueSB1cHBlciwgb3B0aW9uYWwgYm9vbGVhbiBvcGVuKTsKICAgICBbQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBzdGF0aWMgSURC
S2V5UmFuZ2UgYm91bmQoYW55IGxvd2VyLCBhbnkgdXBwZXIsIG9wdGlvbmFsIGJvb2xlYW4gbG93
ZXJPcGVuLCBvcHRpb25hbCBib29sZWFuIHVwcGVyT3Blbik7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaAppbmRleCBjM2IzMzM0Li4xNmU4
NzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRh
ZGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRh
LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNkZWZpbmUgSURCTWV0YWRhdGFfaAogCiAjaW5jbHVkZSAi
SURCS2V5UGF0aC5oIgorI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgpAQCAtNzksMzEgKzgwLDQ1IEBAIHN0cnVjdCBJREJPYmplY3RTdG9yZU1l
dGFkYXRhIHsKIH07CiAKIHN0cnVjdCBJREJEYXRhYmFzZU1ldGFkYXRhIHsKLSAgICAvLyBGSVhN
RTogVGhlc2UgY2FuIHByb2JhYmx5IGJlIGNvbGxhcHNlZCBpbnRvIDAuCisKKyNpZiBVU0UoTEVW
RUxEQikKKyAgICAvLyBGSVhNRTogVGhlc2UgYXJlIG9ubHkgaGVyZSB0byBzdXBwb3J0IHRoZSBM
ZXZlbERCIGJhY2tlbmQgd2hpY2ggaW5jb3JyZWN0bHkgaGFuZGxlcyB2ZXJzaW9uaW5nLgorICAg
IC8vIE9uY2UgTGV2ZWxEQiBzdXBwb3J0cyBhIHNpbmdsZSwgdWludDY0X3QgdmVyc2lvbiBhbmQg
dGhyb3dzIG91dCB0aGUgb2xkIHN0cmluZyB2ZXJzaW9uLCB0aGVzZQorICAgIC8vIHNob3VsZCBi
ZSBnb3R0ZW4gcmlkIG9mLgorICAgIC8vIEFsc28sICJOb0ludFZlcnNpb24iIHVzZWQgdG8gYmUg
YSBtYWdpYyBudW1iZXIgb2YgLTEsIHdoaWNoIGRvZXNuJ3Qgd29yayB3aXRoIHRoZSBuZXcgdW5z
aWduZWQgdHlwZS4KKyAgICAvLyBDaGFuZ2luZyB0aGUgdmFsdWUgdG8gSU5UNjRfTUFYIGhlcmUg
c2VlbXMgbGlrZSBhIHJlYXNvbmFibGUgdGVtcG9yYXJ5IGZpeCBhcyB0aGUgY3VycmVudCBMZXZl
bERCCisgICAgLy8gYWxyZWFkeSBjYW5ub3QgcmVwcmVzZW50IHZhbGlkIHZlcnNpb24gbnVtYmVy
cyBiZXR3ZWVuIElOVDY0X01BWCBhbmQgVUlOVDY0X01BWC4KKworI2lmbmRlZiBJTlQ2NF9NQVgK
KyNkZWZpbmUgSU5UNjRfTUFYIDkyMjMzNzIwMzY4NTQ3NzU4MDdMTAorI2VuZGlmCisKICAgICBl
bnVtIHsKLSAgICAgICAgTm9JbnRWZXJzaW9uID0gLTEsCisgICAgICAgIE5vSW50VmVyc2lvbiA9
IElOVDY0X01BWCwKICAgICAgICAgRGVmYXVsdEludFZlcnNpb24gPSAwCiAgICAgfTsKKyNlbmRp
ZiAvLyBVU0UoTEVWRUxEQikKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQ2NF90LCBJREJPYmpl
Y3RTdG9yZU1ldGFkYXRhPiBPYmplY3RTdG9yZU1hcDsKIAogICAgIElEQkRhdGFiYXNlTWV0YWRh
dGEoKQotICAgICAgICA6IGludFZlcnNpb24oTm9JbnRWZXJzaW9uKQorICAgICAgICA6IGlkKDAp
CisgICAgICAgICwgdmVyc2lvbigwKQorICAgICAgICAsIG1heE9iamVjdFN0b3JlSWQoMCkKICAg
ICB7CiAgICAgfQotICAgIElEQkRhdGFiYXNlTWV0YWRhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBp
bnQ2NF90IGlkLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGludDY0X3QgaW50VmVyc2lvbiwgaW50
NjRfdCBtYXhPYmplY3RTdG9yZUlkKQorCisgICAgSURCRGF0YWJhc2VNZXRhZGF0YShjb25zdCBT
dHJpbmcmIG5hbWUsIGludDY0X3QgaWQsIHVpbnQ2NF90IHZlcnNpb24sIGludDY0X3QgbWF4T2Jq
ZWN0U3RvcmVJZCkKICAgICAgICAgOiBuYW1lKG5hbWUpCiAgICAgICAgICwgaWQoaWQpCiAgICAg
ICAgICwgdmVyc2lvbih2ZXJzaW9uKQotICAgICAgICAsIGludFZlcnNpb24oaW50VmVyc2lvbikK
ICAgICAgICAgLCBtYXhPYmplY3RTdG9yZUlkKG1heE9iamVjdFN0b3JlSWQpCiAgICAgewogICAg
IH0KIAogICAgIFN0cmluZyBuYW1lOwogICAgIGludDY0X3QgaWQ7Ci0gICAgU3RyaW5nIHZlcnNp
b247Ci0gICAgaW50NjRfdCBpbnRWZXJzaW9uOworICAgIHVpbnQ2NF90IHZlcnNpb247CiAgICAg
aW50NjRfdCBtYXhPYmplY3RTdG9yZUlkOwogCiAgICAgT2JqZWN0U3RvcmVNYXAgb2JqZWN0U3Rv
cmVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2Jq
ZWN0U3RvcmUuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0
U3RvcmUuaWRsCmluZGV4IGM3MmE5MWIuLjQ2M2I5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5pZGwKQEAgLTM4LDEyICszOCwx
MSBAQAogICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZSwgUmFpc2VzRXhjZXB0aW9uXSBJREJSZXF1
ZXN0IGFkZChhbnkgdmFsdWUsIG9wdGlvbmFsIGFueSBrZXkpOwogICAgIFtDYWxsV2l0aD1TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBJbXBsZW1lbnRlZEFzPWRlbGV0ZUZ1bmN0aW9uLCBSYWlzZXNF
eGNlcHRpb25dIElEQlJlcXVlc3QgZGVsZXRlKElEQktleVJhbmdlPyBrZXlSYW5nZSk7CiAgICAg
W0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEltcGxlbWVudGVkQXM9ZGVsZXRlRnVu
Y3Rpb24sIFJhaXNlc0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBkZWxldGUoYW55IGtleSk7Ci0gICAg
W0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gSURCUmVx
dWVzdCBjbGVhcigpOwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlz
ZXNFeGNlcHRpb25dIElEQlJlcXVlc3QgZ2V0KElEQktleVJhbmdlPyBrZXkpOwogICAgIFtDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIElEQlJlcXVlc3Qg
Z2V0KGFueSBrZXkpOworICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlz
ZXNFeGNlcHRpb25dIElEQlJlcXVlc3QgY2xlYXIoKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBJREJSZXF1ZXN0IG9wZW5DdXJzb3Iob3B0
aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlLCBvcHRpb25hbCBET01TdHJpbmcgZGlyZWN0aW9uKTsK
ICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBJ
REJSZXF1ZXN0IG9wZW5DdXJzb3IoYW55IGtleSwgb3B0aW9uYWwgRE9NU3RyaW5nIGRpcmVjdGlv
bik7Ci0KICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgQ3VzdG9tLCBSYWlz
ZXNFeGNlcHRpb25dIElEQkluZGV4IGNyZWF0ZUluZGV4KERPTVN0cmluZyBuYW1lLCBzZXF1ZW5j
ZTxET01TdHJpbmc+IGtleVBhdGgsIG9wdGlvbmFsIERpY3Rpb25hcnkgb3B0aW9ucyk7CiAgICAg
W0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEN1c3RvbSwgUmFpc2VzRXhjZXB0aW9u
XSBJREJJbmRleCBjcmVhdGVJbmRleChET01TdHJpbmcgbmFtZSwgRE9NU3RyaW5nIGtleVBhdGgs
IG9wdGlvbmFsIERpY3Rpb25hcnkgb3B0aW9ucyk7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gSURC
SW5kZXggaW5kZXgoRE9NU3RyaW5nIG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmNwcAppbmRleCA1NmUwZjE2Li45ZTJm
MDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVu
REJSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
cGVuREJSZXF1ZXN0LmNwcApAQCAtMzcsMTggKzM3LDE5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJPcGVuREJSZXF1ZXN0OjpjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUNhbGxiYWNrc0ltcGw+IGNhbGxiYWNrcywgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90
IHZlcnNpb24pCitQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQk9wZW5EQlJlcXVlc3Q6
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MsIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgdWludDY0
X3QgdmVyc2lvbiwgSW5kZXhlZERCOjpWZXJzaW9uTnVsbG5lc3MgdmVyc2lvbk51bGxuZXNzKQog
ewotICAgIFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiByZXF1ZXN0KGFkb3B0UmVmKG5ldyBJREJP
cGVuREJSZXF1ZXN0KGNvbnRleHQsIGNhbGxiYWNrcywgdHJhbnNhY3Rpb25JZCwgdmVyc2lvbikp
KTsKKyAgICBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gcmVxdWVzdChhZG9wdFJlZihuZXcgSURC
T3BlbkRCUmVxdWVzdChjb250ZXh0LCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uSWQsIHZlcnNpb24s
IHZlcnNpb25OdWxsbmVzcykpKTsKICAgICByZXF1ZXN0LT5zdXNwZW5kSWZOZWVkZWQoKTsKICAg
ICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7CiB9CiAKLUlEQk9wZW5EQlJlcXVlc3Q6OklEQk9w
ZW5EQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IGNhbGxiYWNrcywgaW50NjRfdCB0cmFuc2FjdGlvbklk
LCBpbnQ2NF90IHZlcnNpb24pCitJREJPcGVuREJSZXF1ZXN0OjpJREJPcGVuREJSZXF1ZXN0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxs
YmFja3M+IGNhbGxiYWNrcywgaW50NjRfdCB0cmFuc2FjdGlvbklkLCB1aW50NjRfdCB2ZXJzaW9u
LCBJbmRleGVkREI6OlZlcnNpb25OdWxsbmVzcyB2ZXJzaW9uTnVsbG5lc3MpCiAgICAgOiBJREJS
ZXF1ZXN0KGNvbnRleHQsIElEQkFueTo6Y3JlYXRlTnVsbCgpLCBJREJEYXRhYmFzZUJhY2tlbmRJ
bnRlcmZhY2U6Ok5vcm1hbFRhc2ssIDApCiAgICAgLCBtX2RhdGFiYXNlQ2FsbGJhY2tzKGNhbGxi
YWNrcykKICAgICAsIG1fdHJhbnNhY3Rpb25JZCh0cmFuc2FjdGlvbklkKQogICAgICwgbV92ZXJz
aW9uKHZlcnNpb24pCisgICAgLCBtX3ZlcnNpb25OdWxsbmVzcyh2ZXJzaW9uTnVsbG5lc3MpCiB7
CiAgICAgQVNTRVJUKCFtX3Jlc3VsdCk7CiB9CkBAIC02MiwxNiArNjMsMTYgQEAgRXZlbnRUYXJn
ZXRJbnRlcmZhY2UgSURCT3BlbkRCUmVxdWVzdDo6ZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25z
dAogICAgIHJldHVybiBJREJPcGVuREJSZXF1ZXN0RXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOwog
fQogCi12b2lkIElEQk9wZW5EQlJlcXVlc3Q6Om9uQmxvY2tlZChpbnQ2NF90IG9sZFZlcnNpb24p
Cit2b2lkIElEQk9wZW5EQlJlcXVlc3Q6Om9uQmxvY2tlZCh1aW50NjRfdCBvbGRWZXJzaW9uKQog
ewogICAgIElEQl9UUkFDRSgiSURCT3BlbkRCUmVxdWVzdDo6b25CbG9ja2VkKCkiKTsKICAgICBp
ZiAoIXNob3VsZEVucXVldWVFdmVudCgpKQogICAgICAgICByZXR1cm47Ci0gICAgUmVmUHRyPElE
QkFueT4gbmV3VmVyc2lvbkFueSA9IChtX3ZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6
RGVmYXVsdEludFZlcnNpb24pID8gSURCQW55OjpjcmVhdGVOdWxsKCkgOiBJREJBbnk6OmNyZWF0
ZShtX3ZlcnNpb24pOwotICAgIGVucXVldWVFdmVudChJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OmNy
ZWF0ZShJREJBbnk6OmNyZWF0ZShvbGRWZXJzaW9uKSwgbmV3VmVyc2lvbkFueS5yZWxlYXNlKCks
IGV2ZW50TmFtZXMoKS5ibG9ja2VkRXZlbnQpKTsKKyAgICAKKyAgICBlbnF1ZXVlRXZlbnQoSURC
VmVyc2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUob2xkVmVyc2lvbiwgbV92ZXJzaW9uLCBtX3ZlcnNp
b25OdWxsbmVzcywgZXZlbnROYW1lcygpLmJsb2NrZWRFdmVudCkpOwogfQogCi12b2lkIElEQk9w
ZW5EQlJlcXVlc3Q6Om9uVXBncmFkZU5lZWRlZChpbnQ2NF90IG9sZFZlcnNpb24sIFBhc3NSZWZQ
dHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBwcnBEYXRhYmFzZUJhY2tlbmQsIGNvbnN0
IElEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhKQordm9pZCBJREJPcGVuREJSZXF1ZXN0Ojpv
blVwZ3JhZGVOZWVkZWQodWludDY0X3Qgb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2U+IHBycERhdGFiYXNlQmFja2VuZCwgY29uc3QgSURCRGF0YWJhc2VN
ZXRhZGF0YSYgbWV0YWRhdGEpCiB7CiAgICAgSURCX1RSQUNFKCJJREJPcGVuREJSZXF1ZXN0Ojpv
blVwZ3JhZGVOZWVkZWQoKSIpOwogICAgIGlmIChtX2NvbnRleHRTdG9wcGVkIHx8ICFzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpIHsKQEAgLTkyLDE5ICs5MywxNSBAQCB2b2lkIElEQk9wZW5EQlJl
cXVlc3Q6Om9uVXBncmFkZU5lZWRlZChpbnQ2NF90IG9sZFZlcnNpb24sIFBhc3NSZWZQdHI8SURC
RGF0YWJhcwogICAgIG1fZGF0YWJhc2VDYWxsYmFja3MtPmNvbm5lY3QoaWRiRGF0YWJhc2UuZ2V0
KCkpOwogICAgIG1fZGF0YWJhc2VDYWxsYmFja3MgPSAwOwogCi0gICAgaWYgKG9sZFZlcnNpb24g
PT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKSB7Ci0gICAgICAgIC8vIFRoaXMg
ZGF0YWJhc2UgaGFzbid0IGhhZCBhbiBpbnRlZ2VyIHZlcnNpb24gYmVmb3JlLgotICAgICAgICBv
bGRWZXJzaW9uID0gSURCRGF0YWJhc2VNZXRhZGF0YTo6RGVmYXVsdEludFZlcnNpb247Ci0gICAg
fQogICAgIElEQkRhdGFiYXNlTWV0YWRhdGEgb2xkTWV0YWRhdGEobWV0YWRhdGEpOwotICAgIG9s
ZE1ldGFkYXRhLmludFZlcnNpb24gPSBvbGRWZXJzaW9uOworICAgIG9sZE1ldGFkYXRhLnZlcnNp
b24gPSBvbGRWZXJzaW9uOwogCiAgICAgbV90cmFuc2FjdGlvbiA9IElEQlRyYW5zYWN0aW9uOjpj
cmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX3RyYW5zYWN0aW9uSWQsIGlkYkRhdGFi
YXNlLmdldCgpLCB0aGlzLCBvbGRNZXRhZGF0YSk7CiAgICAgbV9yZXN1bHQgPSBJREJBbnk6OmNy
ZWF0ZShpZGJEYXRhYmFzZS5yZWxlYXNlKCkpOwogCi0gICAgaWYgKG1fdmVyc2lvbiA9PSBJREJE
YXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24pCisgICAgaWYgKG1fdmVyc2lvbk51bGxuZXNz
ID09IEluZGV4ZWREQjo6TnVsbFZlcnNpb24pCiAgICAgICAgIG1fdmVyc2lvbiA9IDE7Ci0gICAg
ZW5xdWV1ZUV2ZW50KElEQlZlcnNpb25DaGFuZ2VFdmVudDo6Y3JlYXRlKElEQkFueTo6Y3JlYXRl
KG9sZFZlcnNpb24pLCBJREJBbnk6OmNyZWF0ZShtX3ZlcnNpb24pLCBldmVudE5hbWVzKCkudXBn
cmFkZW5lZWRlZEV2ZW50KSk7CisgICAgZW5xdWV1ZUV2ZW50KElEQlZlcnNpb25DaGFuZ2VFdmVu
dDo6Y3JlYXRlKG9sZFZlcnNpb24sIG1fdmVyc2lvbiwgbV92ZXJzaW9uTnVsbG5lc3MsIGV2ZW50
TmFtZXMoKS51cGdyYWRlbmVlZGVkRXZlbnQpKTsKIH0KIAogdm9pZCBJREJPcGVuREJSZXF1ZXN0
OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IHBycEJh
Y2tlbmQsIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRhKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oCmluZGV4IDJm
Y2VkOTguLjk2MDQ1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQk9wZW5EQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJPcGVuREJSZXF1ZXN0LmgKQEAgLTI5LDIwICsyOSwyMSBAQAogI2lmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiSURCUmVxdWVzdC5oIgorI2luY2x1ZGUgIklu
ZGV4ZWREQi5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIElEQkRhdGFiYXNlQ2Fs
bGJhY2tzSW1wbDsKK2NsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzOwogCiBjbGFzcyBJREJPcGVu
REJSZXF1ZXN0IDogcHVibGljIElEQlJlcXVlc3QgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+LCBpbnQ2NF90IHRyYW5zYWN0aW9u
SWQsIGludDY0X3QgdmVyc2lvbik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVx
dWVzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFi
YXNlQ2FsbGJhY2tzPiwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCB1aW50NjRfdCB2ZXJzaW9uLCBJ
bmRleGVkREI6OlZlcnNpb25OdWxsbmVzcyk7CiAgICAgdmlydHVhbCB+SURCT3BlbkRCUmVxdWVz
dCgpOwogCiAgICAgdXNpbmcgSURCUmVxdWVzdDo6b25TdWNjZXNzOwogCi0gICAgdmlydHVhbCB2
b2lkIG9uQmxvY2tlZChpbnQ2NF90IGV4aXN0aW5nVmVyc2lvbikgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCB2b2lkIG9uVXBncmFkZU5lZWRlZChpbnQ2NF90IG9sZFZlcnNpb24sIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQodWludDY0X3QgZXhpc3RpbmdW
ZXJzaW9uKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgb25VcGdyYWRlTmVlZGVkKHVpbnQ2
NF90IG9sZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiwg
Y29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+LCBjb25zdCBJ
REJEYXRhYmFzZU1ldGFkYXRhJikgT1ZFUlJJREU7CiAKICAgICAvLyBFdmVudFRhcmdldApAQCAt
NTYsMTEgKzU3LDEyIEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRW5xdWV1
ZUV2ZW50KCkgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6Ci0gICAgSURCT3BlbkRCUmVxdWVz
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNr
c0ltcGw+LCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3QgdmVyc2lvbik7CisgICAgSURC
T3BlbkRCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUNhbGxiYWNrcz4sIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgdWludDY0X3QgdmVyc2lvbiwg
SW5kZXhlZERCOjpWZXJzaW9uTnVsbG5lc3MpOwogCi0gICAgUmVmUHRyPElEQkRhdGFiYXNlQ2Fs
bGJhY2tzSW1wbD4gbV9kYXRhYmFzZUNhbGxiYWNrczsKKyAgICBSZWZQdHI8SURCRGF0YWJhc2VD
YWxsYmFja3M+IG1fZGF0YWJhc2VDYWxsYmFja3M7CiAgICAgY29uc3QgaW50NjRfdCBtX3RyYW5z
YWN0aW9uSWQ7Ci0gICAgaW50NjRfdCBtX3ZlcnNpb247CisgICAgdWludDY0X3QgbV92ZXJzaW9u
OworICAgIEluZGV4ZWREQjo6VmVyc2lvbk51bGxuZXNzIG1fdmVyc2lvbk51bGxuZXNzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAppbmRleCA0N2Y1NWZmLi4xZDlmZTYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcApAQCAtMTIwLDE1
ICsxMjAsNiBAQCB1bnNpZ25lZCBzaG9ydCBJREJSZXF1ZXN0OjplcnJvckNvZGUoRXhjZXB0aW9u
Q29kZSYgZWMpIGNvbnN0CiAgICAgcmV0dXJuIG1fZXJyb3JDb2RlOwogfQogCi1TdHJpbmcgSURC
UmVxdWVzdDo6d2Via2l0RXJyb3JNZXNzYWdlKEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAotewot
ICAgIGlmIChtX3JlYWR5U3RhdGUgIT0gRE9ORSkgewotICAgICAgICBlYyA9IElEQkRhdGFiYXNl
RXhjZXB0aW9uOjpJbnZhbGlkU3RhdGVFcnJvcjsKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwot
ICAgIH0KLSAgICByZXR1cm4gbV9lcnJvck1lc3NhZ2U7Ci19Ci0KIFBhc3NSZWZQdHI8SURCQW55
PiBJREJSZXF1ZXN0Ojpzb3VyY2UoKSBjb25zdAogewogICAgIHJldHVybiBtX3NvdXJjZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAppbmRleCBlNWNj
Y2I0Li4yNWYyODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
UmVxdWVzdC5oCkBAIC01OSw3ICs1OSw2IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQkFu
eT4gcmVzdWx0KEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICB1bnNpZ25lZCBzaG9ydCBlcnJv
ckNvZGUoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIFBhc3NSZWZQdHI8RE9NRXJyb3I+IGVy
cm9yKEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAgICBTdHJpbmcgd2Via2l0RXJyb3JNZXNzYWdl
KEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPElEQkFueT4gc291cmNlKCkg
Y29uc3Q7CiAgICAgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24oKSBjb25z
dDsKICAgICB2b2lkIHByZXZlbnRQcm9wYWdhdGlvbigpIHsgbV9wcmV2ZW50UHJvcGFnYXRpb24g
PSB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJSZXF1ZXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVl
c3QuaWRsCmluZGV4IDAwNmZjMTQuLjE1NzViNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaWRsCkBAIC0zMiwyNyArMzIsMTMgQEAKICAgICBB
Y3RpdmVET01PYmplY3QsCiAgICAgRXZlbnRUYXJnZXQsCiAgICAgSlNOb1N0YXRpY1RhYmxlcwot
XSBpbnRlcmZhY2UgSURCUmVxdWVzdCB7CitdIGludGVyZmFjZSBJREJSZXF1ZXN0IDogRXZlbnRU
YXJnZXQgewogICAgIFtHZXR0ZXJSYWlzZXNFeGNlcHRpb25dIHJlYWRvbmx5IGF0dHJpYnV0ZSBJ
REJBbnkgcmVzdWx0OwogICAgIFtHZXR0ZXJSYWlzZXNFeGNlcHRpb25dIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01FcnJvciBlcnJvcjsKLSAgICBbVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1VbmRl
ZmluZWQsIEdldHRlclJhaXNlc0V4Y2VwdGlvbl0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyB3ZWJraXRFcnJvck1lc3NhZ2U7Ci0KICAgICByZWFkb25seSBhdHRyaWJ1dGUgSURCQW55IHNv
dXJjZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSURCVHJhbnNhY3Rpb24gdHJhbnNhY3Rpb247
Ci0KLSAgICAvLyBTdGF0ZXMKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHJlYWR5
U3RhdGU7CiAKLSAgICAvLyBFdmVudHMKICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnN1
Y2Nlc3M7CiAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25lcnJvcjsKLQotICAgIC8vIEV2
ZW50VGFyZ2V0IGludGVyZmFjZQotICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihET01TdHJpbmcg
dHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiB1c2VDYXB0dXJlKTsK
LSAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nIHR5cGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9wdGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Ci0gICAgW1JhaXNl
c0V4Y2VwdGlvbl0gYm9vbGVhbiBkaXNwYXRjaEV2ZW50KEV2ZW50IGV2dCk7CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmlu
ZGV4IDAwYmRhNGMuLjJkZmI4Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTEzOCwxMSArMTM4LDYgQEAgdm9pZCBJ
REJUcmFuc2FjdGlvbjo6c2V0RXJyb3IoUGFzc1JlZlB0cjxET01FcnJvcj4gZXJyb3IsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXMKICAgICB9CiB9CiAKLVN0cmluZyBJREJUcmFuc2FjdGlvbjo6d2Vi
a2l0RXJyb3JNZXNzYWdlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9lcnJvck1lc3NhZ2U7Ci19
Ci0KIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IElEQlRyYW5zYWN0aW9uOjpvYmplY3RTdG9y
ZShjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChtX3N0
YXRlID09IEZpbmlzaGVkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCVHJhbnNhY3Rpb24uaAppbmRleCA4OTcwMTU0Li5kMTg1OWRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKQEAgLTk3LDcg
Kzk3LDYgQEAgcHVibGljOgogICAgIHZvaWQgb2JqZWN0U3RvcmVEZWxldGVkKGNvbnN0IFN0cmlu
ZyYpOwogICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wpOwogICAgIHZvaWQgc2V0RXJyb3IoUGFzc1Jl
ZlB0cjxET01FcnJvcj4sIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKLSAgICBTdHJpbmcg
d2Via2l0RXJyb3JNZXNzYWdlKCkgY29uc3Q7CiAKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5U
X0xJU1RFTkVSKGFib3J0KTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGNv
bXBsZXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uLmlkbAppbmRleCA2NDdlZmUxLi44ZWFjOWFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaWRsCkBAIC0yOSwyOCAr
MjksMTUgQEAKICAgICBBY3RpdmVET01PYmplY3QsCiAgICAgRXZlbnRUYXJnZXQsCiAgICAgSlNO
b1N0YXRpY1RhYmxlcwotXSBpbnRlcmZhY2UgSURCVHJhbnNhY3Rpb24gewotCi0gICAgLy8gUHJv
cGVydGllcworXSBpbnRlcmZhY2UgSURCVHJhbnNhY3Rpb24gOiBFdmVudFRhcmdldCB7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBtb2RlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBJREJEYXRhYmFzZSBkYjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NRXJyb3IgZXJyb3I7
Ci0gICAgW1RyZWF0UmV0dXJuZWROdWxsU3RyaW5nQXM9VW5kZWZpbmVkXSByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIHdlYmtpdEVycm9yTWVzc2FnZTsKIAotICAgIC8vIE1ldGhvZHMKICAg
ICBbUmFpc2VzRXhjZXB0aW9uXSBJREJPYmplY3RTdG9yZSBvYmplY3RTdG9yZSAoRE9NU3RyaW5n
IG5hbWUpOwogICAgIFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgYWJvcnQgKCk7CiAKLSAgICAvLyBF
dmVudHMKICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmFib3J0OwogICAgIGF0dHJpYnV0
ZSBFdmVudExpc3RlbmVyIG9uY29tcGxldGU7CiAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIg
b25lcnJvcjsKLSAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKLSAgICB2b2lkIGFkZEV2ZW50
TGlzdGVuZXIoRE9NU3RyaW5nIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50
TGlzdGVuZXIgbGlzdGVuZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGJv
b2xlYW4gdXNlQ2FwdHVyZSk7Ci0gICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKERPTVN0cmlu
ZyB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudExpc3RlbmVyIGxpc3Rl
bmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25hbCBib29sZWFuIHVzZUNh
cHR1cmUpOwotICAgIFtSYWlzZXNFeGNlcHRpb25dIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChFdmVu
dCBldnQpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwCmluZGV4IDBjODYxYWYuLjk0ZjNjMDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFu
Z2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVy
c2lvbkNoYW5nZUV2ZW50LmNwcApAQCAtMjgsMjAgKzI4LDEzIEBACiAKICNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKIAotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJJREJB
bnkuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPElEQlZlcnNpb25DaGFu
Z2VFdmVudD4gSURCVmVyc2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUoUGFzc1JlZlB0cjxJREJBbnk+
IG9sZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCQW55PiBuZXdWZXJzaW9uLCBjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSkKLXsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IElEQlZlcnNpb25D
aGFuZ2VFdmVudChvbGRWZXJzaW9uLCBuZXdWZXJzaW9uLCBldmVudFR5cGUpKTsKLX0KLQotSURC
VmVyc2lvbkNoYW5nZUV2ZW50OjpJREJWZXJzaW9uQ2hhbmdlRXZlbnQoUGFzc1JlZlB0cjxJREJB
bnk+IG9sZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCQW55PiBuZXdWZXJzaW9uLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSkKK0lEQlZlcnNpb25DaGFuZ2VFdmVudDo6SURCVmVyc2lvbkNo
YW5nZUV2ZW50KHVuc2lnbmVkIGxvbmcgbG9uZyBvbGRWZXJzaW9uLCB1bnNpZ25lZCBsb25nIGxv
bmcgbmV3VmVyc2lvbiwgSW5kZXhlZERCOjpWZXJzaW9uTnVsbG5lc3MgbmV3VmVyc2lvbk51bGxu
ZXNzLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkKICAgICA6IEV2ZW50KGV2ZW50VHlw
ZSwgZmFsc2UgLypjYW5CdWJibGUqLywgZmFsc2UgLypjYW5jZWxhYmxlKi8pCiAgICAgLCBtX29s
ZFZlcnNpb24ob2xkVmVyc2lvbikKICAgICAsIG1fbmV3VmVyc2lvbihuZXdWZXJzaW9uKQorICAg
ICwgbV9uZXdWZXJzaW9uTnVsbG5lc3MobmV3VmVyc2lvbk51bGxuZXNzKQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdl
RXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFu
Z2VFdmVudC5oCmluZGV4IGQwODRlYjIuLjk0ODBjY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oCkBAIC0y
OSw3ICsyOSw3IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRlICJF
dmVudC5oIgotI2luY2x1ZGUgIklEQkFueS5oIgorI2luY2x1ZGUgIkluZGV4ZWREQi5oIgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMzgsMTkgKzM4LDI0IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogY2xhc3MgSURCVmVyc2lvbkNoYW5nZUV2ZW50IDogcHVibGljIEV2ZW50IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJWZXJzaW9uQ2hhbmdlRXZlbnQ+IGNy
ZWF0ZShQYXNzUmVmUHRyPElEQkFueT4gb2xkVmVyc2lvbiA9IElEQkFueTo6Y3JlYXRlTnVsbCgp
LCBQYXNzUmVmUHRyPElEQkFueT4gbmV3VmVyc2lvbiA9IElEQkFueTo6Y3JlYXRlTnVsbCgpLCBj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSA9IEF0b21pY1N0cmluZygpKTsKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJREJWZXJzaW9uQ2hhbmdlRXZlbnQ+IGNyZWF0ZSh1bnNpZ25lZCBsb25n
IGxvbmcgb2xkVmVyc2lvbiA9IDAsIHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdWZXJzaW9uID0gMCwg
SW5kZXhlZERCOjpWZXJzaW9uTnVsbG5lc3MgbmV3VmVyc2lvbk51bGxuZXNzID0gSW5kZXhlZERC
OjpOdWxsVmVyc2lvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUgPSBBdG9taWNTdHJp
bmcoKSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSURCVmVyc2lvbkNoYW5n
ZUV2ZW50KG9sZFZlcnNpb24sIG5ld1ZlcnNpb24sIG5ld1ZlcnNpb25OdWxsbmVzcywgZXZlbnRU
eXBlKSk7CisgICAgfQorCiAgICAgdmlydHVhbCB+SURCVmVyc2lvbkNoYW5nZUV2ZW50KCk7CiAK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8SURCQW55PiBvbGRWZXJzaW9uKCkgeyByZXR1cm4gbV9v
bGRWZXJzaW9uOyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPElEQkFueT4gbmV3VmVyc2lvbigp
IHsgcmV0dXJuIG1fbmV3VmVyc2lvbjsgfQorICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25n
IG9sZFZlcnNpb24oKSB7IHJldHVybiBtX29sZFZlcnNpb247IH0KKyAgICB2aXJ0dWFsIHVuc2ln
bmVkIGxvbmcgbG9uZyBuZXdWZXJzaW9uKGJvb2wmIGlzTnVsbCkgeyBpc051bGwgPSAobV9uZXdW
ZXJzaW9uTnVsbG5lc3MgPT0gSW5kZXhlZERCOjpOdWxsVmVyc2lvbik7IHJldHVybiBtX25ld1Zl
cnNpb247IH0KIAogICAgIHZpcnR1YWwgRXZlbnRJbnRlcmZhY2UgZXZlbnRJbnRlcmZhY2UoKSBj
b25zdDsKIAogcHJpdmF0ZToKLSAgICBJREJWZXJzaW9uQ2hhbmdlRXZlbnQoUGFzc1JlZlB0cjxJ
REJBbnk+IG9sZFZlcnNpb24sIFBhc3NSZWZQdHI8SURCQW55PiBuZXdWZXJzaW9uLCBjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSk7CisgICAgSURCVmVyc2lvbkNoYW5nZUV2ZW50KHVuc2ln
bmVkIGxvbmcgbG9uZyBvbGRWZXJzaW9uLCB1bnNpZ25lZCBsb25nIGxvbmcgbmV3VmVyc2lvbiwg
SW5kZXhlZERCOjpWZXJzaW9uTnVsbG5lc3MgbmV3VmVyc2lvbk51bGxuZXNzLCBjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSk7CiAKLSAgICBSZWZQdHI8SURCQW55PiBtX29sZFZlcnNpb247
Ci0gICAgUmVmUHRyPElEQkFueT4gbV9uZXdWZXJzaW9uOworICAgIHVuc2lnbmVkIGxvbmcgbG9u
ZyBtX29sZFZlcnNpb247CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG1fbmV3VmVyc2lvbjsKKyAg
ICBJbmRleGVkREI6OlZlcnNpb25OdWxsbmVzcyBtX25ld1ZlcnNpb25OdWxsbmVzczsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaWRsCmluZGV4IGU5MjE5Mjgu
LjhkMTFjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlZlcnNpb25DaGFuZ2VFdmVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmlkbApAQCAtMjcsNiArMjcsNiBAQAogICAgIENv
bmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UsCiAgICAgSlNOb1N0YXRpY1RhYmxlcwogXSBpbnRl
cmZhY2UgSURCVmVyc2lvbkNoYW5nZUV2ZW50IDogRXZlbnQgewotICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBJREJBbnkgb2xkVmVyc2lvbjsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgSURCQW55IG5l
d1ZlcnNpb247CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyBvbGRW
ZXJzaW9uOworICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxvbmc/IG5ld1Zl
cnNpb247CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SW5kZXhlZERCLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JbmRleGVkREIu
aAppbmRleCAyZTg0ZmM3Li5jYjdlOGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JbmRleGVkREIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JbmRleGVkREIuaApAQCAtNTAsNiArNTAsMTEgQEAgZW51bSBDdXJzb3JUeXBlIHsK
ICAgICBDdXJzb3JLZXlPbmx5CiB9OwogCitlbnVtIFZlcnNpb25OdWxsbmVzcyB7CisgICAgTnVs
bFZlcnNpb24sCisgICAgTm9uTnVsbFZlcnNpb24KK307CisKIH0gLy8gbmFtZXNwYWNlIEluZGV4
ZWREQgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJCYWNraW5nU3RvcmVM
ZXZlbERCLmNwcAppbmRleCA1MjUwNTQ5Li5lNWY0YzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCQmFja2lu
Z1N0b3JlTGV2ZWxEQi5jcHAKQEAgLTUxMCw3ICs1MTAsOSBAQCBib29sIElEQkJhY2tpbmdTdG9y
ZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIElEQkRhdGFiYXNl
TWV0YQogICAgIGlmICghZm91bmQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgb2sgPSBn
ZXRTdHJpbmcobV9kYi5nZXQoKSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKG1ldGFkYXRh
LT5pZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6VXNlclZlcnNpb24pLCBtZXRhZGF0YS0+dmVyc2lv
biwgZm91bmQpOworICAgIC8vIEZJWE1FOiBUaGUgc3RyaW5nIHZlcnNpb24gaXMgbm8gbG9uZ2Vy
IHN1cHBvcnRlZCwgc28gdGhlIGxldmVsREIgcG9ydHMgc2hvdWxkIGNvbnNpZGVyIHJlZmFjdG9y
aW5nIG9mZiBvZiBpdC4KKyAgICBTdHJpbmcgc3RyaW5nVmVyc2lvbjsKKyAgICBvayA9IGdldFN0
cmluZyhtX2RiLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUobWV0YWRhdGEtPmlk
LCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VyVmVyc2lvbiksIHN0cmluZ1ZlcnNpb24sIGZvdW5k
KTsKICAgICBpZiAoIW9rKSB7CiAgICAgICAgIElOVEVSTkFMX1JFQURfRVJST1IoR2V0SURCRGF0
YWJhc2VNZXRhRGF0YSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUyMCw3ICs1MjIsOCBA
QCBib29sIElEQkJhY2tpbmdTdG9yZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJp
bmcmIG5hbWUsIElEQkRhdGFiYXNlTWV0YQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgb2sgPSBnZXRWYXJJbnQobV9kYi5nZXQoKSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5j
b2RlKG1ldGFkYXRhLT5pZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6VXNlckludFZlcnNpb24pLCBt
ZXRhZGF0YS0+aW50VmVyc2lvbiwgZm91bmQpOworICAgIGludDY0X3QgdmVyc2lvbjsKKyAgICBv
ayA9IGdldFZhckludChtX2RiLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUobWV0
YWRhdGEtPmlkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VySW50VmVyc2lvbiksIHZlcnNpb24s
IGZvdW5kKTsKICAgICBpZiAoIW9rKSB7CiAgICAgICAgIElOVEVSTkFMX1JFQURfRVJST1IoR2V0
SURCRGF0YWJhc2VNZXRhRGF0YSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTUzMCw4ICs1
MzMsMTEgQEAgYm9vbCBJREJCYWNraW5nU3RvcmU6OmdldElEQkRhdGFiYXNlTWV0YURhdGEoY29u
c3QgU3RyaW5nJiBuYW1lLCBJREJEYXRhYmFzZU1ldGEKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIGlmIChtZXRhZGF0YS0+aW50VmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFk
YXRhOjpEZWZhdWx0SW50VmVyc2lvbikKLSAgICAgICAgbWV0YWRhdGEtPmludFZlcnNpb24gPSBJ
REJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb247CisgICAgLy8gRklYTUU6IFRoZSB2ZXJz
aW9uaW5nIHNlbWFudGljcyBoYXZlIGNoYW5nZWQgc2luY2UgdGhpcyBvcmlnaW5hbCBjb2RlIHdh
cyB3cml0dGVuLCBhbmQgd2hhdCB3YXMgb25jZSBhIG5lZ2F0aXZlIG51bWJlcgorICAgIC8vIHN0
b3JlZCBpbiB0aGUgZGF0YWJhc2UgaXMgbm8gbG9uZ2VyIGEgdmFsaWQgdmVyc2lvbi4KKyAgICBp
ZiAodmVyc2lvbiA8IDApCisgICAgICAgIHZlcnNpb24gPSAwOworICAgIG1ldGFkYXRhLT52ZXJz
aW9uID0gdmVyc2lvbjsKIAogICAgIG9rID0gZ2V0TWF4T2JqZWN0U3RvcmVJZChtX2RiLmdldCgp
LCBtZXRhZGF0YS0+aWQsIG1ldGFkYXRhLT5tYXhPYmplY3RTdG9yZUlkKTsKICAgICBpZiAoIW9r
KSB7CkBAIC01NjksNiArNTc1LDcgQEAgV0FSTl9VTlVTRURfUkVUVVJOIHN0YXRpYyBib29sIGdl
dE5ld0RhdGFiYXNlSWQoTGV2ZWxEQkRhdGFiYXNlKiBkYiwgaW50NjRfdCYgbmUKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAorLy8gRklYTUU6IFRoZSB2ZXJzaW9uIHNlbWFudGljcyBoYXZlIGNoYW5n
ZWQuIFN0cmluZyB2ZXJzaW9ucyBubyBsb25nZXIgZXhpc3QsIGFuZCB0aGUgaW50ZWdlciB2ZXJz
aW9uIGlzIG5vdyBhIHVpbnQ2NF90CiBib29sIElEQkJhY2tpbmdTdG9yZTo6Y3JlYXRlSURCRGF0
YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwg
aW50NjRfdCBpbnRWZXJzaW9uLCBpbnQ2NF90JiByb3dJZCkKIHsKICAgICBib29sIG9rID0gZ2V0
TmV3RGF0YWJhc2VJZChtX2RiLmdldCgpLCByb3dJZCk7CkBAIC0xODA0LDcgKzE4MTEsNyBAQCBi
b29sIEluZGV4Q3Vyc29ySW1wbDo6bG9hZEN1cnJlbnRSb3coKQogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIG9iamVjdFN0b3JlQ3Vyc29yT3B0aW9ucyhMZXZlbERCVHJhbnNhY3Rpb24qIHRy
YW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgY29u
c3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rp
b24sIElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yOjpDdXJzb3JPcHRpb25zJiBjdXJzb3JPcHRpb25z
KQorc3RhdGljIGJvb2wgb2JqZWN0U3RvcmVDdXJzb3JPcHRpb25zKExldmVsREJUcmFuc2FjdGlv
biogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9yZUlk
LCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIEluZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRp
cmVjdGlvbiwgSURCQmFja2luZ1N0b3JlOjpDdXJzb3I6OkN1cnNvck9wdGlvbnMmIGN1cnNvck9w
dGlvbnMpCiB7CiAgICAgY3Vyc29yT3B0aW9ucy5kYXRhYmFzZUlkID0gZGF0YWJhc2VJZDsKICAg
ICBjdXJzb3JPcHRpb25zLm9iamVjdFN0b3JlSWQgPSBvYmplY3RTdG9yZUlkOwpAQCAtMTg1NCw3
ICsxODYxLDcgQEAgYm9vbCBvYmplY3RTdG9yZUN1cnNvck9wdGlvbnMoTGV2ZWxEQlRyYW5zYWN0
aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUkKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAotYm9vbCBpbmRleEN1cnNvck9wdGlvbnMoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlv
biwgaW50NjRfdCBkYXRhYmFzZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5k
ZXhJZCwgY29uc3QgSURCS2V5UmFuZ2UqIHJhbmdlLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlv
biBkaXJlY3Rpb24sIElEQkJhY2tpbmdTdG9yZTo6Q3Vyc29yOjpDdXJzb3JPcHRpb25zJiBjdXJz
b3JPcHRpb25zKQorc3RhdGljIGJvb2wgaW5kZXhDdXJzb3JPcHRpb25zKExldmVsREJUcmFuc2Fj
dGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50NjRfdCBvYmplY3RTdG9y
ZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IElEQktleVJhbmdlKiByYW5nZSwgSW5kZXhlZERC
OjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJCYWNraW5nU3RvcmU6OkN1cnNvcjo6Q3Vy
c29yT3B0aW9ucyYgY3Vyc29yT3B0aW9ucykKIHsKICAgICBBU1NFUlQodHJhbnNhY3Rpb24pOwog
ICAgIGlmICghS2V5UHJlZml4Ojp2YWxpZElkcyhkYXRhYmFzZUlkLCBvYmplY3RTdG9yZUlkLCBp
bmRleElkKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xl
dmVsZGIvSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkRhdGFiYXNlQmFja2VuZExldmVsREIuY3BwCmluZGV4
IDlkOTlkYWQuLjExOTk0NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2xldmVsZGIvSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJEYXRhYmFzZUJhY2tlbmRMZXZl
bERCLmNwcApAQCAtNDczLDEzICs0NzMsOSBAQCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2Vu
ZExldmVsREI+IElEQkRhdGFiYXNlQmFja2VuZExldmVsREI6OmNyZWF0ZShjb25zdCBTdAogICAg
IHJldHVybiBiYWNrZW5kLnJlbGVhc2UoKTsKIH0KIAotbmFtZXNwYWNlIHsKLWNvbnN0IGNoYXIq
IE5vU3RyaW5nVmVyc2lvbiA9ICIiOwotfQotCiBJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpJ
REJEYXRhYmFzZUJhY2tlbmRMZXZlbERCKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2luZ1N0
b3JlKiBiYWNraW5nU3RvcmUsIElEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQiogZmFjdG9yeSwgY29u
c3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nU3RvcmUoYmFja2lu
Z1N0b3JlKQotICAgICwgbV9tZXRhZGF0YShuYW1lLCBJbnZhbGlkSWQsIE5vU3RyaW5nVmVyc2lv
biwgSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uLCBJbnZhbGlkSWQpCisgICAgLCBt
X21ldGFkYXRhKG5hbWUsIEludmFsaWRJZCwgMCwgSW52YWxpZElkKQogICAgICwgbV9pZGVudGlm
aWVyKHVuaXF1ZUlkZW50aWZpZXIpCiAgICAgLCBtX2ZhY3RvcnkoZmFjdG9yeSkKICAgICAsIG1f
dHJhbnNhY3Rpb25Db29yZGluYXRvcihJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQjo6
Y3JlYXRlKCkpCkBAIC01MzgsNyArNTM0LDcgQEAgYm9vbCBJREJEYXRhYmFzZUJhY2tlbmRMZXZl
bERCOjpvcGVuSW50ZXJuYWwoKQogICAgIGlmIChzdWNjZXNzKQogICAgICAgICByZXR1cm4gbV9i
YWNraW5nU3RvcmUtPmdldE9iamVjdFN0b3JlcyhtX21ldGFkYXRhLmlkLCAmbV9tZXRhZGF0YS5v
YmplY3RTdG9yZXMpOwogCi0gICAgcmV0dXJuIG1fYmFja2luZ1N0b3JlLT5jcmVhdGVJREJEYXRh
YmFzZU1ldGFEYXRhKG1fbWV0YWRhdGEubmFtZSwgbV9tZXRhZGF0YS52ZXJzaW9uLCBtX21ldGFk
YXRhLmludFZlcnNpb24sIG1fbWV0YWRhdGEuaWQpOworICAgIHJldHVybiBtX2JhY2tpbmdTdG9y
ZS0+Y3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShtX21ldGFkYXRhLm5hbWUsIFN0cmluZzo6bnVt
YmVyKG1fbWV0YWRhdGEudmVyc2lvbiksIG1fbWV0YWRhdGEudmVyc2lvbiwgbV9tZXRhZGF0YS5p
ZCk7CiB9CiAKIElEQkRhdGFiYXNlQmFja2VuZExldmVsREI6On5JREJEYXRhYmFzZUJhY2tlbmRM
ZXZlbERCKCkKQEAgLTEwNzIsMTAgKzEwNjgsMTIgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRM
ZXZlbERCOjpWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0aW9uQmEK
IHsKICAgICBJREJfVFJBQ0UoIlZlcnNpb25DaGFuZ2VPcGVyYXRpb24iKTsKICAgICBpbnQ2NF90
IGRhdGFiYXNlSWQgPSBtX2RhdGFiYXNlLT5pZCgpOwotICAgIGludDY0X3Qgb2xkVmVyc2lvbiA9
IG1fZGF0YWJhc2UtPm1fbWV0YWRhdGEuaW50VmVyc2lvbjsKLSAgICBBU1NFUlQobV92ZXJzaW9u
ID4gb2xkVmVyc2lvbik7Ci0gICAgbV9kYXRhYmFzZS0+bV9tZXRhZGF0YS5pbnRWZXJzaW9uID0g
bV92ZXJzaW9uOwotICAgIGlmICghbV9kYXRhYmFzZS0+bV9iYWNraW5nU3RvcmUtPnVwZGF0ZUlE
QkRhdGFiYXNlSW50VmVyc2lvbih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24o
KSwgZGF0YWJhc2VJZCwgbV9kYXRhYmFzZS0+bV9tZXRhZGF0YS5pbnRWZXJzaW9uKSkgeworICAg
IHVpbnQ2NF90IG9sZFZlcnNpb24gPSBtX2RhdGFiYXNlLT5tX21ldGFkYXRhLnZlcnNpb247CisK
KyAgICAvLyBGSVhNRTogRGF0YWJhc2UgdmVyc2lvbnMgYXJlIG5vdyBvZiB0eXBlIHVpbnQ2NF90
LCBidXQgdGhpcyBjb2RlIGV4cGVjdGVkIGludDY0X3QuCisgICAgQVNTRVJUKG1fdmVyc2lvbiA+
IChpbnQ2NF90KW9sZFZlcnNpb24pOworICAgIG1fZGF0YWJhc2UtPm1fbWV0YWRhdGEudmVyc2lv
biA9IG1fdmVyc2lvbjsKKyAgICBpZiAoIW1fZGF0YWJhc2UtPm1fYmFja2luZ1N0b3JlLT51cGRh
dGVJREJEYXRhYmFzZUludFZlcnNpb24odHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uKCksIGRhdGFiYXNlSWQsIG1fZGF0YWJhc2UtPm1fbWV0YWRhdGEudmVyc2lvbikpIHsKICAg
ICAgICAgUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+IGVycm9yID0gSURCRGF0YWJhc2VFcnJvcjo6
Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVbmtub3duRXJyb3IsICJFcnJvciB3cml0aW5n
IGRhdGEgdG8gc3RhYmxlIHN0b3JhZ2Ugd2hlbiB1cGRhdGluZyB2ZXJzaW9uLiIpOwogICAgICAg
ICBtX2NhbGxiYWNrcy0+b25FcnJvcihlcnJvcik7CiAgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9y
dChlcnJvcik7CkBAIC0xMTM4LDcgKzExMzYsOCBAQCBzaXplX3QgSURCRGF0YWJhc2VCYWNrZW5k
TGV2ZWxEQjo6Y29ubmVjdGlvbkNvdW50KCkKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxE
Qjo6cHJvY2Vzc1BlbmRpbmdDYWxscygpCiB7CiAgICAgaWYgKG1fcGVuZGluZ1NlY29uZEhhbGZP
cGVuKSB7Ci0gICAgICAgIEFTU0VSVChtX3BlbmRpbmdTZWNvbmRIYWxmT3Blbi0+dmVyc2lvbigp
ID09IG1fbWV0YWRhdGEuaW50VmVyc2lvbik7CisgICAgICAgIC8vIEZJWE1FOiBEYXRhYmFzZSB2
ZXJzaW9ucyBhcmUgbm93IG9mIHR5cGUgdWludDY0X3QsIGJ1dCB0aGlzIGNvZGUgZXhwZWN0ZWQg
aW50NjRfdC4KKyAgICAgICAgQVNTRVJUKG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuLT52ZXJzaW9u
KCkgPT0gKGludDY0X3QpbV9tZXRhZGF0YS52ZXJzaW9uKTsKICAgICAgICAgQVNTRVJUKG1fbWV0
YWRhdGEuaWQgIT0gSW52YWxpZElkKTsKICAgICAgICAgbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW4t
PmNhbGxiYWNrcygpLT5vblN1Y2Nlc3ModGhpcywgdGhpcy0+bWV0YWRhdGEoKSk7CiAgICAgICAg
IG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuLnJlbGVhc2UoKTsKQEAgLTExOTQsNyArMTE5Myw3IEBA
IHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQjo6b3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0
cjxJREJDYWxsYmFja3M+IHBycENhbGxiCiAgICAgaWYgKG1fbWV0YWRhdGEuaWQgPT0gSW52YWxp
ZElkKSB7CiAgICAgICAgIC8vIFRoZSBkYXRhYmFzZSB3YXMgZGVsZXRlZCB0aGVuIGltbWVkaWF0
ZWx5IHJlLW9wZW5lZDsgb3BlbkludGVybmFsKCkgcmVjcmVhdGVzIGl0IGluIHRoZSBiYWNraW5n
IHN0b3JlLgogICAgICAgICBpZiAob3BlbkludGVybmFsKCkpCi0gICAgICAgICAgICBBU1NFUlQo
bV9tZXRhZGF0YS5pbnRWZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lv
bik7CisgICAgICAgICAgICBBU1NFUlQobV9tZXRhZGF0YS52ZXJzaW9uID09IElEQkRhdGFiYXNl
TWV0YWRhdGE6Ok5vSW50VmVyc2lvbik7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgU3Ry
aW5nIG1lc3NhZ2U7CiAgICAgICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gZXJyb3I7
CkBAIC0xMjA4LDcgKzEyMDcsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZExldmVsREI6Om9w
ZW5Db25uZWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYgogICAgIH0KIAog
ICAgIC8vIFdlIGluZmVyIHRoYXQgdGhlIGRhdGFiYXNlIGRpZG4ndCBleGlzdCBmcm9tIGl0cyBs
YWNrIG9mIGVpdGhlciB0eXBlIG9mIHZlcnNpb24uCi0gICAgYm9vbCBpc05ld0RhdGFiYXNlID0g
bV9tZXRhZGF0YS52ZXJzaW9uID09IE5vU3RyaW5nVmVyc2lvbiAmJiBtX21ldGFkYXRhLmludFZl
cnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uOworICAgIGJvb2wgaXNO
ZXdEYXRhYmFzZSA9IG1fbWV0YWRhdGEudmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpO
b0ludFZlcnNpb247CiAKICAgICBpZiAodmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpE
ZWZhdWx0SW50VmVyc2lvbikgewogICAgICAgICAvLyBGSVhNRTogdGhpcyBjb21tZW50cyB3YXMg
cmVsYXRlZCB0byBDaHJvbWl1bSBjb2RlLiBJdCBtYXkgYmUgaW5jb3JyZWN0CkBAIC0xMjI5LDE1
ICsxMjI4LDIwIEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQjo6b3BlbkNvbm5lY3Rp
b24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiCiAgICAgICAgIHZlcnNpb24gPSAx
OwogICAgIH0KIAotICAgIGlmICh2ZXJzaW9uID4gbV9tZXRhZGF0YS5pbnRWZXJzaW9uKSB7Cisg
ICAgLy8gRklYTUU6IERhdGFiYXNlIHZlcnNpb25zIGFyZSBub3cgb2YgdHlwZSB1aW50NjRfdCwg
YnV0IHRoaXMgY29kZSBleHBlY3RlZCBpbnQ2NF90LgorICAgIGlmICh2ZXJzaW9uID4gKGludDY0
X3QpbV9tZXRhZGF0YS52ZXJzaW9uKSB7CiAgICAgICAgIHJ1bkludFZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbihjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB0cmFuc2FjdGlvbklkLCB2ZXJz
aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAodmVyc2lvbiA8IG1fbWV0YWRh
dGEuaW50VmVyc2lvbikgewotICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VF
cnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpWZXJzaW9uRXJyb3IsIFN0cmluZzo6
Zm9ybWF0KCJUaGUgcmVxdWVzdGVkIHZlcnNpb24gKCVsbGQpIGlzIGxlc3MgdGhhbiB0aGUgZXhp
c3RpbmcgdmVyc2lvbiAoJWxsZCkuIiwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPih2ZXJzaW9uKSwg
c3RhdGljX2Nhc3Q8bG9uZyBsb25nPihtX21ldGFkYXRhLmludFZlcnNpb24pKSkpOworCisgICAg
Ly8gRklYTUU6IERhdGFiYXNlIHZlcnNpb25zIGFyZSBub3cgb2YgdHlwZSB1aW50NjRfdCwgYnV0
IHRoaXMgY29kZSBleHBlY3RlZCBpbnQ2NF90LgorICAgIGlmICh2ZXJzaW9uIDwgKGludDY0X3Qp
bV9tZXRhZGF0YS52ZXJzaW9uKSB7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJEYXRh
YmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlZlcnNpb25FcnJvciwgU3Ry
aW5nOjpmb3JtYXQoIlRoZSByZXF1ZXN0ZWQgdmVyc2lvbiAoJWxsZCkgaXMgbGVzcyB0aGFuIHRo
ZSBleGlzdGluZyB2ZXJzaW9uICglbGxkKS4iLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHZlcnNp
b24pLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KG1fbWV0YWRhdGEudmVyc2lvbikpKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9Ci0gICAgQVNTRVJUKHZlcnNpb24gPT0gbV9tZXRhZGF0YS5pbnRW
ZXJzaW9uKTsKKworICAgIC8vIEZJWE1FOiBEYXRhYmFzZSB2ZXJzaW9ucyBhcmUgbm93IG9mIHR5
cGUgdWludDY0X3QsIGJ1dCB0aGlzIGNvZGUgZXhwZWN0ZWQgaW50NjRfdC4KKyAgICBBU1NFUlQo
dmVyc2lvbiA9PSAoaW50NjRfdCltX21ldGFkYXRhLnZlcnNpb24pOwogICAgIG1fZGF0YWJhc2VD
YWxsYmFja3NTZXQuYWRkKGRhdGFiYXNlQ2FsbGJhY2tzKTsKICAgICBjYWxsYmFja3MtPm9uU3Vj
Y2Vzcyh0aGlzLCB0aGlzLT5tZXRhZGF0YSgpKTsKIH0KQEAgLTEyNTAsNyArMTI1NCw3IEBAIHZv
aWQgSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQjo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0
aW9uKFBhc3NSZWZQdHI8SURCQ2FsCiAgICAgZm9yIChEYXRhYmFzZUNhbGxiYWNrc1NldDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmJlZ2luKCk7IGl0ICE9IG1f
ZGF0YWJhc2VDYWxsYmFja3NTZXQuZW5kKCk7ICsraXQpIHsKICAgICAgICAgLy8gRnJvbnQgZW5k
IGVuc3VyZXMgdGhlIGV2ZW50IGlzIG5vdCBmaXJlZCBhdCBjb25uZWN0aW9ucyB0aGF0IGhhdmUg
Y2xvc2VQZW5kaW5nIHNldC4KICAgICAgICAgaWYgKCppdCAhPSBkYXRhYmFzZUNhbGxiYWNrcykK
LSAgICAgICAgICAgICgqaXQpLT5vblZlcnNpb25DaGFuZ2UobV9tZXRhZGF0YS5pbnRWZXJzaW9u
LCByZXF1ZXN0ZWRWZXJzaW9uKTsKKyAgICAgICAgICAgICgqaXQpLT5vblZlcnNpb25DaGFuZ2Uo
bV9tZXRhZGF0YS52ZXJzaW9uLCByZXF1ZXN0ZWRWZXJzaW9uLCBJbmRleGVkREI6Ok51bGxWZXJz
aW9uKTsKICAgICB9CiAgICAgLy8gVGhlIHNwZWMgZGljdGF0ZXMgd2Ugd2FpdCB1bnRpbCBhbGwg
dGhlIHZlcnNpb24gY2hhbmdlIGV2ZW50cyBhcmUKICAgICAvLyBkZWxpdmVyZWQgYW5kIHRoZW4g
Y2hlY2sgbV9kYXRhYmFzZUNhbGxiYWNrcy5lbXB0eSgpIGJlZm9yZSBwcm9jZWVkaW5nCkBAIC0x
MjYwLDcgKzEyNjQsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZExldmVsREI6OnJ1bkludFZl
cnNpb25DaGFuZ2VUcmFuc2FjdGlvbihQYXNzUmVmUHRyPElEQkNhbAogICAgIC8vIHRlbGxzIHVz
IHRoYXQgYWxsIHRoZSBibG9ja2VkIGV2ZW50cyBoYXZlIGJlZW4gZGVsaXZlcmVkLiBTZWUKICAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMzAKICAgICBp
ZiAoY29ubmVjdGlvbkNvdW50KCkpCi0gICAgICAgIGNhbGxiYWNrcy0+b25CbG9ja2VkKG1fbWV0
YWRhdGEuaW50VmVyc2lvbik7CisgICAgICAgIGNhbGxiYWNrcy0+b25CbG9ja2VkKG1fbWV0YWRh
dGEudmVyc2lvbik7CiAgICAgLy8gRklYTUU6IEFkZCB0ZXN0IGZvciBtX3J1bm5pbmdWZXJzaW9u
Q2hhbmdlVHJhbnNhY3Rpb24uCiAgICAgaWYgKG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2Fj
dGlvbiB8fCBjb25uZWN0aW9uQ291bnQoKSkgewogICAgICAgICBtX3BlbmRpbmdPcGVuQ2FsbHMu
YXBwZW5kKFBlbmRpbmdPcGVuQ2FsbDo6Y3JlYXRlKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFj
a3MsIHRyYW5zYWN0aW9uSWQsIHJlcXVlc3RlZFZlcnNpb24pKTsKQEAgLTEyNzEsNyArMTI3NSw3
IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQjo6cnVuSW50VmVyc2lvbkNoYW5nZVRy
YW5zYWN0aW9uKFBhc3NSZWZQdHI8SURCQ2FsCiAgICAgY3JlYXRlVHJhbnNhY3Rpb24odHJhbnNh
Y3Rpb25JZCwgZGF0YWJhc2VDYWxsYmFja3MsIG9iamVjdFN0b3JlSWRzLCBJbmRleGVkREI6OlRy
YW5zYWN0aW9uVmVyc2lvbkNoYW5nZSk7CiAgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZExldmVsREI+IHRyYW5zYWN0aW9uID0gbV90cmFuc2FjdGlvbnMuZ2V0KHRyYW5zYWN0aW9uSWQp
OwogCi0gICAgdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhWZXJzaW9uQ2hhbmdlT3BlcmF0aW9u
OjpjcmVhdGUodGhpcywgdHJhbnNhY3Rpb25JZCwgcmVxdWVzdGVkVmVyc2lvbiwgY2FsbGJhY2tz
LCBkYXRhYmFzZUNhbGxiYWNrcyksIFZlcnNpb25DaGFuZ2VBYm9ydE9wZXJhdGlvbjo6Y3JlYXRl
KHRoaXMsIG1fbWV0YWRhdGEudmVyc2lvbiwgbV9tZXRhZGF0YS5pbnRWZXJzaW9uKSk7CisgICAg
dHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFzayhWZXJzaW9uQ2hhbmdlT3BlcmF0aW9uOjpjcmVhdGUo
dGhpcywgdHJhbnNhY3Rpb25JZCwgcmVxdWVzdGVkVmVyc2lvbiwgY2FsbGJhY2tzLCBkYXRhYmFz
ZUNhbGxiYWNrcyksIFZlcnNpb25DaGFuZ2VBYm9ydE9wZXJhdGlvbjo6Y3JlYXRlKHRoaXMsIFN0
cmluZzo6bnVtYmVyKG1fbWV0YWRhdGEudmVyc2lvbiksIG1fbWV0YWRhdGEudmVyc2lvbikpOwog
CiAgICAgQVNTRVJUKCFtX3BlbmRpbmdTZWNvbmRIYWxmT3Blbik7CiAgICAgbV9kYXRhYmFzZUNh
bGxiYWNrc1NldC5hZGQoZGF0YWJhc2VDYWxsYmFja3MpOwpAQCAtMTI4MywxMiArMTI4NywxMiBA
QCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZExldmVsREI6OmRlbGV0ZURhdGFiYXNlKFBhc3NSZWZQ
dHI8SURCQ2FsbGJhY2tzPiBwcnBDYWxsYgogICAgIGlmIChpc0RlbGV0ZURhdGFiYXNlQmxvY2tl
ZCgpKSB7CiAgICAgICAgIGZvciAoRGF0YWJhc2VDYWxsYmFja3NTZXQ6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5iZWdpbigpOyBpdCAhPSBtX2RhdGFiYXNlQ2Fs
bGJhY2tzU2V0LmVuZCgpOyArK2l0KSB7CiAgICAgICAgICAgICAvLyBGcm9udCBlbmQgZW5zdXJl
cyB0aGUgZXZlbnQgaXMgbm90IGZpcmVkIGF0IGNvbm5lY3Rpb25zIHRoYXQgaGF2ZSBjbG9zZVBl
bmRpbmcgc2V0LgotICAgICAgICAgICAgKCppdCktPm9uVmVyc2lvbkNoYW5nZShtX21ldGFkYXRh
LmludFZlcnNpb24sIElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbik7CisgICAgICAg
ICAgICAoKml0KS0+b25WZXJzaW9uQ2hhbmdlKG1fbWV0YWRhdGEudmVyc2lvbiwgMCwgSW5kZXhl
ZERCOjpOdWxsVmVyc2lvbik7CiAgICAgICAgIH0KICAgICAgICAgLy8gRklYTUU6IE9ubHkgZmly
ZSBvbkJsb2NrZWQgaWYgdGhlcmUgYXJlIG9wZW4gY29ubmVjdGlvbnMgYWZ0ZXIgdGhlCiAgICAg
ICAgIC8vIFZlcnNpb25DaGFuZ2VFdmVudHMgYXJlIHJlY2VpdmVkLCBub3QganVzdCBzZXQgdXAg
dG8gZmlyZS4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcxMTMwCi0gICAgICAgIGNhbGxiYWNrcy0+b25CbG9ja2VkKG1fbWV0YWRhdGEuaW50VmVy
c2lvbik7CisgICAgICAgIGNhbGxiYWNrcy0+b25CbG9ja2VkKG1fbWV0YWRhdGEudmVyc2lvbik7
CiAgICAgICAgIG1fcGVuZGluZ0RlbGV0ZUNhbGxzLmFwcGVuZChQZW5kaW5nRGVsZXRlQ2FsbDo6
Y3JlYXRlKGNhbGxiYWNrcy5yZWxlYXNlKCkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTEzMDgsOSArMTMxMiw4IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQjo6ZGVsZXRl
RGF0YWJhc2VGaW5hbChQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsCiAgICAgICAgIGNhbGxi
YWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRp
b246OlVua25vd25FcnJvciwgIkludGVybmFsIGVycm9yIGRlbGV0aW5nIGRhdGFiYXNlLiIpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX21ldGFkYXRhLnZlcnNpb24gPSBOb1N0cmlu
Z1ZlcnNpb247CiAgICAgbV9tZXRhZGF0YS5pZCA9IEludmFsaWRJZDsKLSAgICBtX21ldGFkYXRh
LmludFZlcnNpb24gPSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb247CisgICAgbV9t
ZXRhZGF0YS52ZXJzaW9uID0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uOwogICAg
IG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmNsZWFyKCk7CiAgICAgY2FsbGJhY2tzLT5vblN1Y2Nl
c3MoKTsKIH0KQEAgLTEzNzUsOCArMTM3OCw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kTGV2
ZWxEQjo6VmVyc2lvbkNoYW5nZUFib3J0T3BlcmF0aW9uOjpwZXJmb3JtKElEQlRyYW5zYWN0CiB7
CiAgICAgSURCX1RSQUNFKCJWZXJzaW9uQ2hhbmdlQWJvcnRPcGVyYXRpb24iKTsKICAgICBBU1NF
UlRfVU5VU0VEKHRyYW5zYWN0aW9uLCAhdHJhbnNhY3Rpb24pOwotICAgIG1fZGF0YWJhc2UtPm1f
bWV0YWRhdGEudmVyc2lvbiA9IG1fcHJldmlvdXNWZXJzaW9uOwotICAgIG1fZGF0YWJhc2UtPm1f
bWV0YWRhdGEuaW50VmVyc2lvbiA9IG1fcHJldmlvdXNJbnRWZXJzaW9uOworICAgIG1fZGF0YWJh
c2UtPm1fbWV0YWRhdGEudmVyc2lvbiA9IG1fcHJldmlvdXNJbnRWZXJzaW9uOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9sZXZlbGRiL0lEQkxldmVsREJDb2RpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJMZXZlbERCQ29kaW5nLmNwcAppbmRleCAwNGU0MjU5
Li4wMDhjYjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9s
ZXZlbGRiL0lEQkxldmVsREJDb2RpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2xldmVsZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKQEAgLTU4MCw3ICs1ODAsNyBA
QCBzdGF0aWMgSURCS2V5OjpUeXBlIGtleVR5cGVCeXRlVG9LZXlUeXBlKHVuc2lnbmVkIGNoYXIg
dHlwZSkKICAgICByZXR1cm4gSURCS2V5OjpJbnZhbGlkVHlwZTsKIH0KIAotaW50IGNvbXBhcmVF
bmNvZGVkSURCS2V5cyhjb25zdCBjaGFyKiYgcHRyQSwgY29uc3QgY2hhciogbGltaXRBLCBjb25z
dCBjaGFyKiYgcHRyQiwgY29uc3QgY2hhciogbGltaXRCLCBib29sJiBvaykKK3N0YXRpYyBpbnQg
Y29tcGFyZUVuY29kZWRJREJLZXlzKGNvbnN0IGNoYXIqJiBwdHJBLCBjb25zdCBjaGFyKiBsaW1p
dEEsIGNvbnN0IGNoYXIqJiBwdHJCLCBjb25zdCBjaGFyKiBsaW1pdEIsIGJvb2wmIG9rKQogewog
ICAgIG9rID0gdHJ1ZTsKICAgICBBU1NFUlQoJnB0ckEgIT0gJnB0ckIpOwo=
</data>
<flag name="commit-queue"
          id="235122"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212851</attachid>
            <date>2013-09-27 16:21:14 -0700</date>
            <delta_ts>2013-09-29 10:31:24 -0700</delta_ts>
            <desc>Patch v6 - Glad their EWS is fast</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>56007</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NmIzY2UwLi5hMzYxNjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTgg
QEAKKzIwMTMtMDktMjcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIEluZGV4ZWREQiBJREwgUmVmYWN0b3JpbmcuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE5OTYKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4
ZXkgUHJvc2t1cnlha292LgorCisgICAgICAgIFRoaXMgaW5jbHVkZXM6CisgICAgICAgIDEgLSBM
ZXZlcmFnaW5nIEV2ZW50VGFyZ2V0LmlkbCBpbmhlcml0YW5jZQorICAgICAgICAyIC0gUmVtb3Zp
bmcgY29tbWVudHMKKyAgICAgICAgMyAtIFJlb3JkZXJpbmcgdG8gbWF0Y2ggdGhlIHNwZWMncyBJ
RExzCisgICAgICAgIDQgLSBSZW1vdmluZyBub25zdGFuZGFyZCwgV2ViS2l0LXNwZWNpZmljIG1l
dGhvZHMKKyAgICAgICAgNSAtIFVwZGF0aW5nIGludGVyZmFjZXMgdG8gbWF0Y2ggdGhlIHNwZWMg
KHZlcnNpb25zIGFyZSBvbmx5IHVpbnQ2NF90J3Mgbm93Li4uKQorICAgICAgICA2IC0gVXBkYXRp
bmcgaW1wbGVtZW50YXRpb24gY29kZSBhcyBuZWVkZWQgKHZlcnNpb25zIGFyZSBvbmx5IHVpbnQ2
NF90J3Mgbm93Li4uKQorCisgICAgICAgIElETCBjaGFuZ2VzOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQkN1cnNvci5pZGw6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaWRs
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmlkbDoKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5pZGw6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCT2JqZWN0U3RvcmUuaWRsOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuaWRsOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQu
aWRsOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSW5kZXhlZERCLmg6IEFkZCBuZXcg
ZW51bSB0byByZXByZXNlbnQgdmVyc2lvbiBudWxsbmVzcy4KKworICAgICAgICBBZGFwdCB0byBu
ZXcgSURMcywgYW5kIGFsc28gcmVmYWN0b3IgcmVwcmVzZW50YXRpb24gb2YgaW5pdGlhbCwgbnVs
bCB2ZXJzaW9uaW5nOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkNhbGxiYWNrcy5o
OgorICAgICAgICAoV2ViQ29yZTo6SURCQ2FsbGJhY2tzOjpvbkJsb2NrZWQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCQ2FsbGJhY2tzOjpvblVwZ3JhZGVOZWVkZWQpOgorCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2U6OnZlcnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2U6Om9uVmVyc2lv
bkNoYW5nZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaDoKKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmg6CisgICAg
ICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6b25WZXJzaW9uQ2hhbmdl
KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwu
aDoKKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRmFjdG9yeTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0
b3J5OjpvcGVuSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeTo6ZGVsZXRl
RGF0YWJhc2UpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaDoKKwor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZU1ldGFkYXRhOjpJREJEYXRhYmFzZU1ldGFkYXRhKToKKworICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9w
ZW5EQlJlcXVlc3Q6OklEQk9wZW5EQlJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SURCT3Bl
bkRCUmVxdWVzdDo6b25CbG9ja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQk9wZW5EQlJlcXVl
c3Q6Om9uVXBncmFkZU5lZWRlZCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT3Bl
bkRCUmVxdWVzdC5oOgorCisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5j
cHA6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5oOgorCisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmg6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCVmVy
c2lvbkNoYW5nZUV2ZW50OjpJREJWZXJzaW9uQ2hhbmdlRXZlbnQpOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
SURCVmVyc2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVmVy
c2lvbkNoYW5nZUV2ZW50OjpvbGRWZXJzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlZlcnNp
b25DaGFuZ2VFdmVudDo6bmV3VmVyc2lvbik6CisKKyAgICAgICAgS2VlcCBsZXZlbGRiIGJ1aWxk
aW5nIHdpdGggbWluaW1hbCBhZGFwdGF0aW9ucyB0byB0aGUgbmV3IElETHMsCisgICAgICAgIGJ1
dCBub3RlIHRoYXQgdGhlIExldmVsREIgaW1wbGVtZW50YXRpb24gaXMgbm93IGluY29tcGF0aWJs
ZSB3aXRoIHRoZSBzcGVjOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURC
QmFja2luZ1N0b3JlTGV2ZWxEQi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3Rv
cmU6OmdldElEQkRhdGFiYXNlTWV0YURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6b2JqZWN0U3Rv
cmVDdXJzb3JPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OmluZGV4Q3Vyc29yT3B0aW9ucyk6
CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZExldmVsREIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxE
Qjo6SURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRh
YmFzZUJhY2tlbmRMZXZlbERCOjpvcGVuSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SURC
RGF0YWJhc2VCYWNrZW5kTGV2ZWxEQjo6VmVyc2lvbkNoYW5nZU9wZXJhdGlvbjo6cGVyZm9ybSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpwcm9jZXNzUGVu
ZGluZ0NhbGxzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZExldmVsREI6
Om9wZW5Db25uZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZExl
dmVsREI6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpkZWxldGVEYXRhYmFzZUZpbmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZExldmVsREI6OlZlcnNpb25DaGFu
Z2VBYm9ydE9wZXJhdGlvbjo6cGVyZm9ybSk6CisKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9sZXZlbGRiL0lEQkxldmVsREJDb2RpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2
ZWxEQkNvZGluZzo6Y29tcGFyZUVuY29kZWRJREJLZXlzKToKKworICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6IFVwZGF0ZSBmb3IgbWV0YWRhdGEgY2hhbmdl
LgorCiAyMDEzLTA5LTI3ICBUaGlhZ28gZGUgQmFycm9zIExhY2VyZGEgIDx0aGlhZ28ubGFjZXJk
YUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIEdldCBNZWRpYVN0cmVhbUNlbnRlckdTdHJlYW1l
ciBjb21waWxpbmcgYWdhaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQkNhbGxiYWNrcy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCQ2FsbGJhY2tzLmgKaW5kZXggZGE3ZGUwNy4uOWRhYTNmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ2FsbGJhY2tzLmgKQEAgLTY4LDkgKzY4LDkgQEAg
cHVibGljOgogICAgIC8vIEZyb20gSURCQ3Vyc29yLmFkdmFuY2UoKS9jb250aW51ZSgpCiAgICAg
dmlydHVhbCB2b2lkIG9uU3VjY2Vzc1dpdGhQcmVmZXRjaChjb25zdCBWZWN0b3I8UmVmUHRyPElE
QktleT4gPiYga2V5cywgY29uc3QgVmVjdG9yPFJlZlB0cjxJREJLZXk+ID4mIHByaW1hcnlLZXlz
LCBjb25zdCBWZWN0b3I8UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gPiYgdmFsdWVzKSA9IDA7CiAgICAg
Ly8gRnJvbSBJREJGYWN0b3J5Lm9wZW4oKS9kZWxldGVEYXRhYmFzZSgpCi0gICAgdmlydHVhbCB2
b2lkIG9uQmxvY2tlZChpbnQ2NF90IC8qIGV4aXN0aW5nVmVyc2lvbiAqLykgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQodWludDY0X3QgLyogZXhp
c3RpbmdWZXJzaW9uICovKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgLy8gRnJvbSBJ
REJGYWN0b3J5Lm9wZW4oKQotICAgIHZpcnR1YWwgdm9pZCBvblVwZ3JhZGVOZWVkZWQoaW50NjRf
dCAvKiBvbGRWZXJzaW9uICovLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZT4sIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9
CisgICAgdmlydHVhbCB2b2lkIG9uVXBncmFkZU5lZWRlZCh1aW50NjRfdCAvKiBvbGRWZXJzaW9u
ICovLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4sIGNvbnN0IElEQkRh
dGFiYXNlTWV0YWRhdGEmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAgICAgdmlydHVhbCB2
b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4sIGNv
bnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmKSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3Iu
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmlkbAppbmRl
eCA5NTU0MDdhLi41MDQzZWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJDdXJzb3IuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvci5pZGwKQEAgLTI3LDExICsyNywxMCBAQAogICAgIENvbmRpdGlvbmFsPUlO
REVYRURfREFUQUJBU0UsCiAgICAgSlNOb1N0YXRpY1RhYmxlcwogXSBpbnRlcmZhY2UgSURCQ3Vy
c29yIHsKLQorICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJBbnkgc291cmNlOwogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgZGlyZWN0aW9uOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBhbnkga2V5OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkgcHJpbWFyeUtleTsKLSAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgSURCQW55IHNvdXJjZTsKIAogICAgIFtDYWxsV2l0aD1TY3JpcHRT
dGF0ZSwgUmFpc2VzRXhjZXB0aW9uXSBJREJSZXF1ZXN0IHVwZGF0ZShhbnkgdmFsdWUpOwogICAg
IFtSYWlzZXNFeGNlcHRpb25dIHZvaWQgYWR2YW5jZShbRW5mb3JjZVJhbmdlXSB1bnNpZ25lZCBs
b25nIGNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlLmNwcAppbmRleCA4YzRlNTQ5Li44N2NhMTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuY3BwCkBAIC0xMzEsMTIgKzEzMSw5IEBA
IFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCRGF0YWJhc2U6Om9iamVjdFN0b3JlTmFtZXMo
KSBjb25zdAogICAgIHJldHVybiBvYmplY3RTdG9yZU5hbWVzLnJlbGVhc2UoKTsKIH0KIAotUGFz
c1JlZlB0cjxJREJBbnk+IElEQkRhdGFiYXNlOjp2ZXJzaW9uKCkgY29uc3QKK3VpbnQ2NF90IElE
QkRhdGFiYXNlOjp2ZXJzaW9uKCkgY29uc3QKIHsKLSAgICBpbnQ2NF90IGludFZlcnNpb24gPSBt
X21ldGFkYXRhLmludFZlcnNpb247Ci0gICAgaWYgKGludFZlcnNpb24gPT0gSURCRGF0YWJhc2VN
ZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKQotICAgICAgICByZXR1cm4gSURCQW55OjpjcmVhdGVTdHJp
bmcobV9tZXRhZGF0YS52ZXJzaW9uKTsKLSAgICByZXR1cm4gSURCQW55OjpjcmVhdGUoaW50VmVy
c2lvbik7CisgICAgcmV0dXJuIG1fbWV0YWRhdGEudmVyc2lvbjsKIH0KIAogUGFzc1JlZlB0cjxJ
REJPYmplY3RTdG9yZT4gSURCRGF0YWJhc2U6OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucywgRXhjZXB0aW9uQ29kZSYgZWMpCkBA
IC0zMDMsNyArMzAwLDcgQEAgdm9pZCBJREJEYXRhYmFzZTo6Y2xvc2VDb25uZWN0aW9uKCkKICAg
ICB9CiB9CiAKLXZvaWQgSURCRGF0YWJhc2U6Om9uVmVyc2lvbkNoYW5nZShpbnQ2NF90IG9sZFZl
cnNpb24sIGludDY0X3QgbmV3VmVyc2lvbikKK3ZvaWQgSURCRGF0YWJhc2U6Om9uVmVyc2lvbkNo
YW5nZSh1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uLCBJbmRleGVkREI6
OlZlcnNpb25OdWxsbmVzcyBuZXdWZXJzaW9uTnVsbG5lc3MpCiB7CiAgICAgSURCX1RSQUNFKCJJ
REJEYXRhYmFzZTo6b25WZXJzaW9uQ2hhbmdlIik7CiAgICAgaWYgKG1fY29udGV4dFN0b3BwZWQg
fHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKQEAgLTMxMiw4ICszMDksNyBAQCB2b2lkIElE
QkRhdGFiYXNlOjpvblZlcnNpb25DaGFuZ2UoaW50NjRfdCBvbGRWZXJzaW9uLCBpbnQ2NF90IG5l
d1ZlcnNpb24pCiAgICAgaWYgKG1fY2xvc2VQZW5kaW5nKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBSZWZQdHI8SURCQW55PiBuZXdWZXJzaW9uQW55ID0gbmV3VmVyc2lvbiA9PSBJREJEYXRhYmFz
ZU1ldGFkYXRhOjpOb0ludFZlcnNpb24gPyBJREJBbnk6OmNyZWF0ZU51bGwoKSA6IElEQkFueTo6
Y3JlYXRlKG5ld1ZlcnNpb24pOwotICAgIGVucXVldWVFdmVudChJREJWZXJzaW9uQ2hhbmdlRXZl
bnQ6OmNyZWF0ZShJREJBbnk6OmNyZWF0ZShvbGRWZXJzaW9uKSwgbmV3VmVyc2lvbkFueS5yZWxl
YXNlKCksIGV2ZW50TmFtZXMoKS52ZXJzaW9uY2hhbmdlRXZlbnQpKTsKKyAgICBlbnF1ZXVlRXZl
bnQoSURCVmVyc2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUob2xkVmVyc2lvbiwgbmV3VmVyc2lvbiwg
bmV3VmVyc2lvbk51bGxuZXNzKSk7CiB9CiAKIHZvaWQgSURCRGF0YWJhc2U6OmVucXVldWVFdmVu
dChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJEYXRhYmFzZS5oCmluZGV4IDJhNDZlNDYuLjkwMjUzMTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaApAQCAtNjAsNyArNjAs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBJbXBsZW1lbnQgdGhlIElETAogICAgIGNvbnN0IFN0cmlu
ZyBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YS5uYW1lOyB9Ci0gICAgUGFzc1JlZlB0
cjxJREJBbnk+IHZlcnNpb24oKSBjb25zdDsKKyAgICB1aW50NjRfdCB2ZXJzaW9uKCkgY29uc3Q7
CiAgICAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiBvYmplY3RTdG9yZU5hbWVzKCkgY29uc3Q7
CiAKICAgICBQYXNzUmVmUHRyPElEQk9iamVjdFN0b3JlPiBjcmVhdGVPYmplY3RTdG9yZShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IERpY3Rpb25hcnkmLCBFeGNlcHRpb25Db2RlJik7CkBAIC03
Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVS
KHZlcnNpb25jaGFuZ2UpOwogCiAgICAgLy8gSURCRGF0YWJhc2VDYWxsYmFja3MKLSAgICB2aXJ0
dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGludDY0X3Qgb2xkVmVyc2lvbiwgaW50NjRfdCBuZXdW
ZXJzaW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKHVpbnQ2NF90IG9sZFZl
cnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNpb24sIEluZGV4ZWREQjo6VmVyc2lvbk51bGxuZXNzIG5l
d1ZlcnNpb25OdWxsbmVzcyk7CiAgICAgdmlydHVhbCB2b2lkIG9uQWJvcnQoaW50NjRfdCwgUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPik7CiAgICAgdmlydHVhbCB2b2lkIG9uQ29tcGxldGUo
aW50NjRfdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkRhdGFiYXNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRh
dGFiYXNlLmlkbAppbmRleCAyYzVjYzg2Li5kNjAzOGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZS5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2UuaWRsCkBAIC0yOSwzMCArMjksMjAgQEAK
ICAgICBBY3RpdmVET01PYmplY3QsCiAgICAgRXZlbnRUYXJnZXQsCiAgICAgSlNOb1N0YXRpY1Rh
YmxlcwotXSBpbnRlcmZhY2UgSURCRGF0YWJhc2UgeworXSBpbnRlcmZhY2UgSURCRGF0YWJhc2Ug
OiBFdmVudFRhcmdldCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBuYW1lOwot
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJBbnkgdmVyc2lvbjsKKyAgICByZWFkb25seSBhdHRy
aWJ1dGUgdW5zaWduZWQgbG9uZyBsb25nIHZlcnNpb247CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IERPTVN0cmluZ0xpc3Qgb2JqZWN0U3RvcmVOYW1lczsKIAotICAgIGF0dHJpYnV0ZSBFdmVudExp
c3RlbmVyIG9uYWJvcnQ7Ci0gICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25lcnJvcjsKLSAg
ICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnZlcnNpb25jaGFuZ2U7Ci0KICAgICBbQ3VzdG9t
LCBSYWlzZXNFeGNlcHRpb25dIElEQk9iamVjdFN0b3JlIGNyZWF0ZU9iamVjdFN0b3JlKERPTVN0
cmluZyBuYW1lLCBvcHRpb25hbCBEaWN0aW9uYXJ5IG9wdGlvbnMpOwogICAgIFtSYWlzZXNFeGNl
cHRpb25dIHZvaWQgZGVsZXRlT2JqZWN0U3RvcmUoRE9NU3RyaW5nIG5hbWUpOwotICAgIFtDYWxs
V2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIElEQlRyYW5zYWN0
aW9uIHRyYW5zYWN0aW9uKERPTVN0cmluZ0xpc3Qgc3RvcmVOYW1lcywgW0RlZmF1bHQ9TnVsbFN0
cmluZ10gb3B0aW9uYWwgRE9NU3RyaW5nIG1vZGUpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIElEQlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9u
KHNlcXVlbmNlPERPTVN0cmluZz4gc3RvcmVOYW1lcywgW0RlZmF1bHQ9TnVsbFN0cmluZ10gb3B0
aW9uYWwgRE9NU3RyaW5nIG1vZGUpOwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBSYWlzZXNFeGNlcHRpb25dIElEQlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKERPTVN0cmlu
ZyBzdG9yZU5hbWUsIFtEZWZhdWx0PU51bGxTdHJpbmddIG9wdGlvbmFsIERPTVN0cmluZyBtb2Rl
KTsKLQorICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRp
b25dIElEQlRyYW5zYWN0aW9uIHRyYW5zYWN0aW9uKHNlcXVlbmNlPERPTVN0cmluZz4gc3RvcmVO
YW1lcywgW0RlZmF1bHQ9TnVsbFN0cmluZ10gb3B0aW9uYWwgRE9NU3RyaW5nIG1vZGUpOwogICAg
IHZvaWQgY2xvc2UoKTsKIAotICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQotICAgIHZvaWQg
YWRkRXZlbnRMaXN0ZW5lcihET01TdHJpbmcgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0
aW9uYWwgYm9vbGVhbiB1c2VDYXB0dXJlKTsKLSAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIo
RE9NU3RyaW5nIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50TGlzdGVu
ZXIgbGlzdGVuZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsIGJvb2xl
YW4gdXNlQ2FwdHVyZSk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gYm9vbGVhbiBkaXNwYXRjaEV2
ZW50KEV2ZW50IGV2dCk7CisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25hYm9ydDsKKyAg
ICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVycm9yOworICAgIGF0dHJpYnV0ZSBFdmVudExp
c3RlbmVyIG9udmVyc2lvbmNoYW5nZTsKKwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzLmgKaW5kZXggZmMyNDJl
MC4uNzc3MGFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VDYWxsYmFja3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrcy5oCkBAIC0yOSwyMCArMjksMjUgQEAKICNpZiBFTkFC
TEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKKyNp
bmNsdWRlICJJbmRleGVkREIuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IElEQkRhdGFiYXNlOworCiBjbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrcyA6IHB1YmxpYyBSZWZD
b3VudGVkPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURC
RGF0YWJhc2VDYWxsYmFja3MoKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBvbkZvcmNlZENsb3Nl
KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoaW50NjRfdCBvbGRWZXJz
aW9uLCBpbnQ2NF90IG5ld1ZlcnNpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9u
Q2hhbmdlKHVpbnQ2NF90IG9sZFZlcnNpb24sIHVpbnQ2NF90IG5ld1ZlcnNpb24sIEluZGV4ZWRE
Qjo6VmVyc2lvbk51bGxuZXNzIG5ld1ZlcnNpb25OdWxsbmVzcykgPSAwOwogCiAgICAgdmlydHVh
bCB2b2lkIG9uQWJvcnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNzUmVmUHRyPElEQkRhdGFi
YXNlRXJyb3I+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uQ29tcGxldGUoaW50NjRfdCB0cmFu
c2FjdGlvbklkKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdChJREJEYXRhYmFzZSop
ID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwu
Y3BwCmluZGV4IDQyYWY3YTIuLjU4N2M0YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmNwcApA
QCAtNTIsMTAgKzUyLDEwIEBAIHZvaWQgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOjpvbkZvcmNl
ZENsb3NlKCkKICAgICAgICAgbV9kYXRhYmFzZS0+Zm9yY2VDbG9zZSgpOwogfQogCi12b2lkIElE
QkRhdGFiYXNlQ2FsbGJhY2tzSW1wbDo6b25WZXJzaW9uQ2hhbmdlKGludDY0X3Qgb2xkVmVyc2lv
biwgaW50NjRfdCBuZXdWZXJzaW9uKQordm9pZCBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6Om9u
VmVyc2lvbkNoYW5nZSh1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uLCBJ
bmRleGVkREI6OlZlcnNpb25OdWxsbmVzcyBuZXdWZXJzaW9uTnVsbG5lc3MpCiB7CiAgICAgaWYg
KG1fZGF0YWJhc2UpCi0gICAgICAgIG1fZGF0YWJhc2UtPm9uVmVyc2lvbkNoYW5nZShvbGRWZXJz
aW9uLCBuZXdWZXJzaW9uKTsKKyAgICAgICAgbV9kYXRhYmFzZS0+b25WZXJzaW9uQ2hhbmdlKG9s
ZFZlcnNpb24sIG5ld1ZlcnNpb24sIG5ld1ZlcnNpb25OdWxsbmVzcyk7CiB9CiAKIHZvaWQgSURC
RGF0YWJhc2VDYWxsYmFja3NJbXBsOjpjb25uZWN0KElEQkRhdGFiYXNlKiBkYXRhYmFzZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQ2Fs
bGJhY2tzSW1wbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsLmgKaW5kZXggNWE3OGIzNy4uNGZkNzU1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VDYWxsYmFj
a3NJbXBsLmgKQEAgLTM2LDE5ICszNiwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IElEQkRhdGFiYXNlOwogCi1jbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGwgOiBwdWJsaWMg
SURCRGF0YWJhc2VDYWxsYmFja3MgeworY2xhc3MgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsIEZJ
TkFMIDogcHVibGljIElEQkRhdGFiYXNlQ2FsbGJhY2tzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw+IGNyZWF0ZSgpOwotICAgIHZpcnR1
YWwgfklEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbCgpOworICAgIHZpcnR1YWwgfklEQkRhdGFiYXNl
Q2FsbGJhY2tzSW1wbCgpIE9WRVJSSURFOwogCiAgICAgLy8gSURCRGF0YWJhc2VDYWxsYmFja3MK
LSAgICB2aXJ0dWFsIHZvaWQgb25Gb3JjZWRDbG9zZSgpOwotICAgIHZpcnR1YWwgdm9pZCBvblZl
cnNpb25DaGFuZ2UoaW50NjRfdCBvbGRWZXJzaW9uLCBpbnQ2NF90IG5ld1ZlcnNpb24pOworICAg
IHZpcnR1YWwgdm9pZCBvbkZvcmNlZENsb3NlKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IG9uVmVyc2lvbkNoYW5nZSh1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9u
LCBJbmRleGVkREI6OlZlcnNpb25OdWxsbmVzcyBuZXdWZXJzaW9uTnVsbG5lc3MpIE9WRVJSSURF
OwogCi0gICAgdmlydHVhbCB2b2lkIG9uQWJvcnQoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQYXNz
UmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KTsKLSAgICB2aXJ0dWFsIHZvaWQgb25Db21wbGV0ZShp
bnQ2NF90IHRyYW5zYWN0aW9uSWQpOworICAgIHZpcnR1YWwgdm9pZCBvbkFib3J0KGludDY0X3Qg
dHJhbnNhY3Rpb25JZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIG9uQ29tcGxldGUoaW50NjRfdCB0cmFuc2FjdGlvbklkKSBPVkVSUklE
RTsKIAotICAgIHZvaWQgY29ubmVjdChJREJEYXRhYmFzZSopOworICAgIHZpcnR1YWwgdm9pZCBj
b25uZWN0KElEQkRhdGFiYXNlKikgT1ZFUlJJREU7CiAKIHByaXZhdGU6CiAgICAgSURCRGF0YWJh
c2VDYWxsYmFja3NJbXBsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9JREJGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQkZhY3RvcnkuY3BwCmluZGV4IGVhODIwMDcuLmM0ZmIwZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuY3BwCkBAIC0xMTMsNiArMTEzLDEy
IEBAIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gSURCRmFjdG9yeTo6Z2V0RGF0YWJhc2VOYW1lcyhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKK1Bh
c3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURCRmFjdG9yeTo6b3BlbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQoreworICAgIElEQl9UUkFDRSgiSURCRmFjdG9yeTo6b3BlbiIpOworICAgIHJldHVybiBvcGVu
SW50ZXJuYWwoY29udGV4dCwgbmFtZSwgMCwgSW5kZXhlZERCOjpOdWxsVmVyc2lvbiwgZWMpOwor
fQorCiBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9wZW4oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCB1bnNpZ25lZCBs
b25nIGxvbmcgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSURCX1RSQUNFKCJJ
REJGYWN0b3J5OjpvcGVuIik7CkBAIC0xMjAsMTMgKzEyNiwxMyBAQCBQYXNzUmVmUHRyPElEQk9w
ZW5EQlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgYwogICAgICAgICBlYyA9IFR5cGVFcnJvcjsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQotICAgIHJldHVybiBvcGVuSW50ZXJuYWwoY29udGV4dCwgbmFtZSwgdmVyc2lvbiwgZWMpOwor
ICAgIHJldHVybiBvcGVuSW50ZXJuYWwoY29udGV4dCwgbmFtZSwgdmVyc2lvbiwgSW5kZXhlZERC
OjpOb25OdWxsVmVyc2lvbiwgZWMpOwogfQogCi1QYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+
IElEQkZhY3Rvcnk6Om9wZW5JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgdmVyc2lvbiwgRXhjZXB0aW9uQ29kZSYgZWMp
CitQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IElEQkZhY3Rvcnk6Om9wZW5JbnRlcm5hbChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIHVpbnQ2
NF90IHZlcnNpb24sIEluZGV4ZWREQjo6VmVyc2lvbk51bGxuZXNzIHZlcnNpb25OdWxsbmVzcywg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51
bWVyYXRpb24oIldlYkNvcmUuSW5kZXhlZERCLkZyb250RW5kQVBJQ2FsbHMiLCBJREJPcGVuQ2Fs
bCwgSURCTWV0aG9kc01heCk7Ci0gICAgQVNTRVJUKHZlcnNpb24gPj0gMSB8fCB2ZXJzaW9uID09
IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbik7CisgICAgQVNTRVJUKHZlcnNpb24g
Pj0gMSB8fCB2ZXJzaW9uTnVsbG5lc3MgPT0gSW5kZXhlZERCOjpOdWxsVmVyc2lvbik7CiAgICAg
aWYgKG5hbWUuaXNOdWxsKCkpIHsKICAgICAgICAgZWMgPSBUeXBlRXJyb3I7CiAgICAgICAgIHJl
dHVybiAwOwpAQCAtMTM4LDE5ICsxNDQsMTMgQEAgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0
PiBJREJGYWN0b3J5OjpvcGVuSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY28KICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tz
SW1wbD4gZGF0YWJhc2VDYWxsYmFja3MgPSBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNyZWF0
ZSgpOworICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gZGF0YWJhc2VDYWxsYmFja3Mg
PSBJREJEYXRhYmFzZUNhbGxiYWNrc0ltcGw6OmNyZWF0ZSgpOwogICAgIGludDY0X3QgdHJhbnNh
Y3Rpb25JZCA9IElEQkRhdGFiYXNlOjpuZXh0VHJhbnNhY3Rpb25JZCgpOwotICAgIFJlZlB0cjxJ
REJPcGVuREJSZXF1ZXN0PiByZXF1ZXN0ID0gSURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKGNvbnRl
eHQsIGRhdGFiYXNlQ2FsbGJhY2tzLCB0cmFuc2FjdGlvbklkLCB2ZXJzaW9uKTsKKyAgICBSZWZQ
dHI8SURCT3BlbkRCUmVxdWVzdD4gcmVxdWVzdCA9IElEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZShj
b250ZXh0LCBkYXRhYmFzZUNhbGxiYWNrcywgdHJhbnNhY3Rpb25JZCwgdmVyc2lvbiwgdmVyc2lv
bk51bGxuZXNzKTsKICAgICBtX2JhY2tlbmQtPm9wZW4obmFtZSwgdmVyc2lvbiwgdHJhbnNhY3Rp
b25JZCwgcmVxdWVzdCwgZGF0YWJhc2VDYWxsYmFja3MsIGNvbnRleHQtPnNlY3VyaXR5T3JpZ2lu
KCksIGNvbnRleHQsIGdldEluZGV4ZWREQkRhdGFiYXNlUGF0aChjb250ZXh0KSk7CiAgICAgcmV0
dXJuIHJlcXVlc3Q7CiB9CiAKLVBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gSURCRmFjdG9y
eTo6b3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5h
bWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIElEQl9UUkFDRSgiSURCRmFjdG9yeTo6b3Bl
biIpOwotICAgIHJldHVybiBvcGVuSW50ZXJuYWwoY29udGV4dCwgbmFtZSwgSURCRGF0YWJhc2VN
ZXRhZGF0YTo6Tm9JbnRWZXJzaW9uLCBlYyk7Ci19Ci0KIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVx
dWVzdD4gSURCRmFjdG9yeTo6ZGVsZXRlRGF0YWJhc2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBJ
REJfVFJBQ0UoIklEQkZhY3Rvcnk6OmRlbGV0ZURhdGFiYXNlIik7CkBAIC0xNjYsNyArMTY2LDcg
QEAgUGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBJREJGYWN0b3J5OjpkZWxldGVEYXRhYmFz
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KgogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAg
ICBSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gcmVxdWVzdCA9IElEQk9wZW5EQlJlcXVlc3Q6OmNy
ZWF0ZShjb250ZXh0LCAwLCAwLCBJREJEYXRhYmFzZU1ldGFkYXRhOjpEZWZhdWx0SW50VmVyc2lv
bik7CisgICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJPcGVuREJSZXF1
ZXN0OjpjcmVhdGUoY29udGV4dCwgMCwgMCwgMCwgSW5kZXhlZERCOjpOdWxsVmVyc2lvbik7CiAg
ICAgbV9iYWNrZW5kLT5kZWxldGVEYXRhYmFzZShuYW1lLCByZXF1ZXN0LCBjb250ZXh0LT5zZWN1
cml0eU9yaWdpbigpLCBjb250ZXh0LCBnZXRJbmRleGVkREJEYXRhYmFzZVBhdGgoY29udGV4dCkp
OwogICAgIHJldHVybiByZXF1ZXN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCRmFjdG9yeS5oCmluZGV4IDQxZTIzODUuLjkwNjVkODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkZhY3RvcnkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmgKQEAgLTY4LDcgKzY4LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBJREJGYWN0b3J5KElEQkZhY3RvcnlCYWNrZW5kSW50ZXJm
YWNlKik7CiAKLSAgICBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IG9wZW5JbnRlcm5hbChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQ2NF90IHZlcnNp
b24sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IG9w
ZW5JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCB1
aW50NjRfdCB2ZXJzaW9uLCBJbmRleGVkREI6OlZlcnNpb25OdWxsbmVzcywgRXhjZXB0aW9uQ29k
ZSYpOwogCiAgICAgUmVmUHRyPElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlPiBtX2JhY2tlbmQ7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRmFj
dG9yeS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5Lmlk
bAppbmRleCA5MDE2OGE1Li44OTZkNjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJGYWN0b3J5LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJGYWN0b3J5LmlkbApAQCAtMjgsMTEgKzI4LDggQEAKICAgICBKU05vU3Rh
dGljVGFibGVzLAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUKIF0gaW50ZXJmYWNlIElE
QkZhY3RvcnkgewotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBJbXBsZW1l
bnRlZEFzPWdldERhdGFiYXNlTmFtZXMsIFJhaXNlc0V4Y2VwdGlvbl0gSURCUmVxdWVzdCB3ZWJr
aXRHZXREYXRhYmFzZU5hbWVzKCk7Ci0KICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBJREJPcGVuREJSZXF1ZXN0IG9wZW4oRE9NU3RyaW5nIG5h
bWUsIFtFbmZvcmNlUmFuZ2VdIG9wdGlvbmFsIHVuc2lnbmVkIGxvbmcgbG9uZyB2ZXJzaW9uKTsK
ICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBJ
REJPcGVuREJSZXF1ZXN0IGRlbGV0ZURhdGFiYXNlKERPTVN0cmluZyBuYW1lKTsKLQogICAgIFtD
YWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIHNob3J0IGNt
cChhbnkgZmlyc3QsIGFueSBzZWNvbmQpOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCSW5kZXguaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCSW5kZXguaWRsCmluZGV4IGNkYWNmZTYuLmJhMGIwYWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkluZGV4LmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJJbmRleC5pZGwKQEAgLTMxLDggKzMx
LDggQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG5hbWU7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIElEQk9iamVjdFN0b3JlIG9iamVjdFN0b3JlOwogICAgIFtJbXBsZW1lbnRl
ZEFzPWtleVBhdGhBbnldIHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJBbnkga2V5UGF0aDsKLSAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB1bmlxdWU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGJvb2xlYW4gbXVsdGlFbnRyeTsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB1bmlx
dWU7CiAKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0
aW9uXSBJREJSZXF1ZXN0IG9wZW5DdXJzb3Iob3B0aW9uYWwgSURCS2V5UmFuZ2U/IHJhbmdlLCBv
cHRpb25hbCBET01TdHJpbmcgZGlyZWN0aW9uKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0
aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBJREJSZXF1ZXN0IG9wZW5DdXJzb3IoYW55IGtl
eSwgb3B0aW9uYWwgRE9NU3RyaW5nIGRpcmVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJLZXlSYW5nZS5pZGwKaW5kZXggYzYwZDc0MC4uMGZlYzMxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UmFuZ2Uu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVJhbmdlLmlk
bApAQCAtMzQsOCArMzQsOCBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHVwcGVy
T3BlbjsKIAogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNl
cHRpb25dIHN0YXRpYyBJREJLZXlSYW5nZSBvbmx5KGFueSB2YWx1ZSk7Ci0gICAgW0NhbGxXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gc3RhdGljIElEQktleVJh
bmdlIGxvd2VyQm91bmQoYW55IGJvdW5kLCBvcHRpb25hbCBib29sZWFuIG9wZW4pOwotICAgIFtD
YWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIHN0YXRpYyBJ
REJLZXlSYW5nZSB1cHBlckJvdW5kKGFueSBib3VuZCwgb3B0aW9uYWwgYm9vbGVhbiBvcGVuKTsK
KyAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmFpc2VzRXhjZXB0aW9uXSBz
dGF0aWMgSURCS2V5UmFuZ2UgbG93ZXJCb3VuZChhbnkgbG93ZXIsIG9wdGlvbmFsIGJvb2xlYW4g
b3Blbik7CisgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2Vw
dGlvbl0gc3RhdGljIElEQktleVJhbmdlIHVwcGVyQm91bmQoYW55IHVwcGVyLCBvcHRpb25hbCBi
b29sZWFuIG9wZW4pOwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlz
ZXNFeGNlcHRpb25dIHN0YXRpYyBJREJLZXlSYW5nZSBib3VuZChhbnkgbG93ZXIsIGFueSB1cHBl
ciwgb3B0aW9uYWwgYm9vbGVhbiBsb3dlck9wZW4sIG9wdGlvbmFsIGJvb2xlYW4gdXBwZXJPcGVu
KTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
Qk1ldGFkYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJNZXRhZGF0
YS5oCmluZGV4IGMzYjMzMzQuLjE2ZTg3NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk1ldGFkYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCTWV0YWRhdGEuaApAQCAtMzAsNiArMzAsNyBAQAogI2RlZmluZSBJREJN
ZXRhZGF0YV9oCiAKICNpbmNsdWRlICJJREJLZXlQYXRoLmgiCisjaW5jbHVkZSA8c3RkaW50Lmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNo
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC03OSwzMSArODAsNDUgQEAg
c3RydWN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEgewogfTsKIAogc3RydWN0IElEQkRhdGFiYXNl
TWV0YWRhdGEgewotICAgIC8vIEZJWE1FOiBUaGVzZSBjYW4gcHJvYmFibHkgYmUgY29sbGFwc2Vk
IGludG8gMC4KKworI2lmIFVTRShMRVZFTERCKQorICAgIC8vIEZJWE1FOiBUaGVzZSBhcmUgb25s
eSBoZXJlIHRvIHN1cHBvcnQgdGhlIExldmVsREIgYmFja2VuZCB3aGljaCBpbmNvcnJlY3RseSBo
YW5kbGVzIHZlcnNpb25pbmcuCisgICAgLy8gT25jZSBMZXZlbERCIHN1cHBvcnRzIGEgc2luZ2xl
LCB1aW50NjRfdCB2ZXJzaW9uIGFuZCB0aHJvd3Mgb3V0IHRoZSBvbGQgc3RyaW5nIHZlcnNpb24s
IHRoZXNlCisgICAgLy8gc2hvdWxkIGJlIGdvdHRlbiByaWQgb2YuCisgICAgLy8gQWxzbywgIk5v
SW50VmVyc2lvbiIgdXNlZCB0byBiZSBhIG1hZ2ljIG51bWJlciBvZiAtMSwgd2hpY2ggZG9lc24n
dCB3b3JrIHdpdGggdGhlIG5ldyB1bnNpZ25lZCB0eXBlLgorICAgIC8vIENoYW5naW5nIHRoZSB2
YWx1ZSB0byBJTlQ2NF9NQVggaGVyZSBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSB0ZW1wb3Jhcnkg
Zml4IGFzIHRoZSBjdXJyZW50IExldmVsREIKKyAgICAvLyBhbHJlYWR5IGNhbm5vdCByZXByZXNl
bnQgdmFsaWQgdmVyc2lvbiBudW1iZXJzIGJldHdlZW4gSU5UNjRfTUFYIGFuZCBVSU5UNjRfTUFY
LgorCisjaWZuZGVmIElOVDY0X01BWAorI2RlZmluZSBJTlQ2NF9NQVggOTIyMzM3MjAzNjg1NDc3
NTgwN0xMCisjZW5kaWYKKwogICAgIGVudW0gewotICAgICAgICBOb0ludFZlcnNpb24gPSAtMSwK
KyAgICAgICAgTm9JbnRWZXJzaW9uID0gSU5UNjRfTUFYLAogICAgICAgICBEZWZhdWx0SW50VmVy
c2lvbiA9IDAKICAgICB9OworI2VuZGlmIC8vIFVTRShMRVZFTERCKQogCiAgICAgdHlwZWRlZiBI
YXNoTWFwPGludDY0X3QsIElEQk9iamVjdFN0b3JlTWV0YWRhdGE+IE9iamVjdFN0b3JlTWFwOwog
CiAgICAgSURCRGF0YWJhc2VNZXRhZGF0YSgpCi0gICAgICAgIDogaW50VmVyc2lvbihOb0ludFZl
cnNpb24pCisgICAgICAgIDogaWQoMCkKKyAgICAgICAgLCB2ZXJzaW9uKDApCisgICAgICAgICwg
bWF4T2JqZWN0U3RvcmVJZCgwKQogICAgIHsKICAgICB9Ci0gICAgSURCRGF0YWJhc2VNZXRhZGF0
YShjb25zdCBTdHJpbmcmIG5hbWUsIGludDY0X3QgaWQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwg
aW50NjRfdCBpbnRWZXJzaW9uLCBpbnQ2NF90IG1heE9iamVjdFN0b3JlSWQpCisKKyAgICBJREJE
YXRhYmFzZU1ldGFkYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgaW50NjRfdCBpZCwgdWludDY0X3Qg
dmVyc2lvbiwgaW50NjRfdCBtYXhPYmplY3RTdG9yZUlkKQogICAgICAgICA6IG5hbWUobmFtZSkK
ICAgICAgICAgLCBpZChpZCkKICAgICAgICAgLCB2ZXJzaW9uKHZlcnNpb24pCi0gICAgICAgICwg
aW50VmVyc2lvbihpbnRWZXJzaW9uKQogICAgICAgICAsIG1heE9iamVjdFN0b3JlSWQobWF4T2Jq
ZWN0U3RvcmVJZCkKICAgICB7CiAgICAgfQogCiAgICAgU3RyaW5nIG5hbWU7CiAgICAgaW50NjRf
dCBpZDsKLSAgICBTdHJpbmcgdmVyc2lvbjsKLSAgICBpbnQ2NF90IGludFZlcnNpb247CisgICAg
dWludDY0X3QgdmVyc2lvbjsKICAgICBpbnQ2NF90IG1heE9iamVjdFN0b3JlSWQ7CiAKICAgICBP
YmplY3RTdG9yZU1hcCBvYmplY3RTdG9yZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZS5pZGwKaW5kZXggYzcyYTkxYi4uNDYzYjlmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0
b3JlLmlkbApAQCAtMzgsMTIgKzM4LDExIEBACiAgICAgW0NhbGxXaXRoPVNjcmlwdFN0YXRlLCBS
YWlzZXNFeGNlcHRpb25dIElEQlJlcXVlc3QgYWRkKGFueSB2YWx1ZSwgb3B0aW9uYWwgYW55IGtl
eSk7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEltcGxlbWVudGVkQXM9
ZGVsZXRlRnVuY3Rpb24sIFJhaXNlc0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBkZWxldGUoSURCS2V5
UmFuZ2U/IGtleVJhbmdlKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
SW1wbGVtZW50ZWRBcz1kZWxldGVGdW5jdGlvbiwgUmFpc2VzRXhjZXB0aW9uXSBJREJSZXF1ZXN0
IGRlbGV0ZShhbnkga2V5KTsKLSAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
UmFpc2VzRXhjZXB0aW9uXSBJREJSZXF1ZXN0IGNsZWFyKCk7CiAgICAgW0NhbGxXaXRoPVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBnZXQoSURCS2V5
UmFuZ2U/IGtleSk7CiAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNl
c0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBnZXQoYW55IGtleSk7CisgICAgW0NhbGxXaXRoPVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQsIFJhaXNlc0V4Y2VwdGlvbl0gSURCUmVxdWVzdCBjbGVhcigpOwog
ICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSYWlzZXNFeGNlcHRpb25dIElE
QlJlcXVlc3Qgb3BlbkN1cnNvcihvcHRpb25hbCBJREJLZXlSYW5nZT8gcmFuZ2UsIG9wdGlvbmFs
IERPTVN0cmluZyBkaXJlY3Rpb24pOwogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0LCBSYWlzZXNFeGNlcHRpb25dIElEQlJlcXVlc3Qgb3BlbkN1cnNvcihhbnkga2V5LCBvcHRp
b25hbCBET01TdHJpbmcgZGlyZWN0aW9uKTsKLQogICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBDdXN0b20sIFJhaXNlc0V4Y2VwdGlvbl0gSURCSW5kZXggY3JlYXRlSW5kZXgo
RE9NU3RyaW5nIG5hbWUsIHNlcXVlbmNlPERPTVN0cmluZz4ga2V5UGF0aCwgb3B0aW9uYWwgRGlj
dGlvbmFyeSBvcHRpb25zKTsKICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwg
Q3VzdG9tLCBSYWlzZXNFeGNlcHRpb25dIElEQkluZGV4IGNyZWF0ZUluZGV4KERPTVN0cmluZyBu
YW1lLCBET01TdHJpbmcga2V5UGF0aCwgb3B0aW9uYWwgRGljdGlvbmFyeSBvcHRpb25zKTsKICAg
ICBbUmFpc2VzRXhjZXB0aW9uXSBJREJJbmRleCBpbmRleChET01TdHJpbmcgbmFtZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJPcGVuREJSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3Qu
Y3BwCmluZGV4IDU2ZTBmMTYuLjllMmYwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuY3BwCkBAIC0zNywxOCArMzcsMTkg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+
IElEQk9wZW5EQlJlcXVlc3Q6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gY2FsbGJhY2tzLCBpbnQ2NF90
IHRyYW5zYWN0aW9uSWQsIGludDY0X3QgdmVyc2lvbikKK1Bhc3NSZWZQdHI8SURCT3BlbkRCUmVx
dWVzdD4gSURCT3BlbkRCUmVxdWVzdDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGNhbGxiYWNrcywgaW50NjRf
dCB0cmFuc2FjdGlvbklkLCB1aW50NjRfdCB2ZXJzaW9uLCBJbmRleGVkREI6OlZlcnNpb25OdWxs
bmVzcyB2ZXJzaW9uTnVsbG5lc3MpCiB7Ci0gICAgUmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IHJl
cXVlc3QoYWRvcHRSZWYobmV3IElEQk9wZW5EQlJlcXVlc3QoY29udGV4dCwgY2FsbGJhY2tzLCB0
cmFuc2FjdGlvbklkLCB2ZXJzaW9uKSkpOworICAgIFJlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBy
ZXF1ZXN0KGFkb3B0UmVmKG5ldyBJREJPcGVuREJSZXF1ZXN0KGNvbnRleHQsIGNhbGxiYWNrcywg
dHJhbnNhY3Rpb25JZCwgdmVyc2lvbiwgdmVyc2lvbk51bGxuZXNzKSkpOwogICAgIHJlcXVlc3Qt
PnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAot
SURCT3BlbkRCUmVxdWVzdDo6SURCT3BlbkRCUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4gY2FsbGJhY2tz
LCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIGludDY0X3QgdmVyc2lvbikKK0lEQk9wZW5EQlJlcXVl
c3Q6OklEQk9wZW5EQlJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFz
c1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gY2FsbGJhY2tzLCBpbnQ2NF90IHRyYW5zYWN0
aW9uSWQsIHVpbnQ2NF90IHZlcnNpb24sIEluZGV4ZWREQjo6VmVyc2lvbk51bGxuZXNzIHZlcnNp
b25OdWxsbmVzcykKICAgICA6IElEQlJlcXVlc3QoY29udGV4dCwgSURCQW55OjpjcmVhdGVOdWxs
KCksIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6Tm9ybWFsVGFzaywgMCkKICAgICAsIG1f
ZGF0YWJhc2VDYWxsYmFja3MoY2FsbGJhY2tzKQogICAgICwgbV90cmFuc2FjdGlvbklkKHRyYW5z
YWN0aW9uSWQpCiAgICAgLCBtX3ZlcnNpb24odmVyc2lvbikKKyAgICAsIG1fdmVyc2lvbk51bGxu
ZXNzKHZlcnNpb25OdWxsbmVzcykKIHsKICAgICBBU1NFUlQoIW1fcmVzdWx0KTsKIH0KQEAgLTYy
LDE2ICs2MywxNiBAQCBFdmVudFRhcmdldEludGVyZmFjZSBJREJPcGVuREJSZXF1ZXN0OjpldmVu
dFRhcmdldEludGVyZmFjZSgpIGNvbnN0CiAgICAgcmV0dXJuIElEQk9wZW5EQlJlcXVlc3RFdmVu
dFRhcmdldEludGVyZmFjZVR5cGU7CiB9CiAKLXZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25CbG9j
a2VkKGludDY0X3Qgb2xkVmVyc2lvbikKK3ZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25CbG9ja2Vk
KHVpbnQ2NF90IG9sZFZlcnNpb24pCiB7CiAgICAgSURCX1RSQUNFKCJJREJPcGVuREJSZXF1ZXN0
OjpvbkJsb2NrZWQoKSIpOwogICAgIGlmICghc2hvdWxkRW5xdWV1ZUV2ZW50KCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBSZWZQdHI8SURCQW55PiBuZXdWZXJzaW9uQW55ID0gKG1fdmVyc2lvbiA9
PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpEZWZhdWx0SW50VmVyc2lvbikgPyBJREJBbnk6OmNyZWF0
ZU51bGwoKSA6IElEQkFueTo6Y3JlYXRlKG1fdmVyc2lvbik7Ci0gICAgZW5xdWV1ZUV2ZW50KElE
QlZlcnNpb25DaGFuZ2VFdmVudDo6Y3JlYXRlKElEQkFueTo6Y3JlYXRlKG9sZFZlcnNpb24pLCBu
ZXdWZXJzaW9uQW55LnJlbGVhc2UoKSwgZXZlbnROYW1lcygpLmJsb2NrZWRFdmVudCkpOworICAg
IAorICAgIGVucXVldWVFdmVudChJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OmNyZWF0ZShvbGRWZXJz
aW9uLCBtX3ZlcnNpb24sIG1fdmVyc2lvbk51bGxuZXNzLCBldmVudE5hbWVzKCkuYmxvY2tlZEV2
ZW50KSk7CiB9CiAKLXZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRlTmVlZGVkKGludDY0
X3Qgb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IHBy
cERhdGFiYXNlQmFja2VuZCwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYgbWV0YWRhdGEpCit2
b2lkIElEQk9wZW5EQlJlcXVlc3Q6Om9uVXBncmFkZU5lZWRlZCh1aW50NjRfdCBvbGRWZXJzaW9u
LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gcHJwRGF0YWJhc2VCYWNr
ZW5kLCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJiBtZXRhZGF0YSkKIHsKICAgICBJREJfVFJB
Q0UoIklEQk9wZW5EQlJlcXVlc3Q6Om9uVXBncmFkZU5lZWRlZCgpIik7CiAgICAgaWYgKG1fY29u
dGV4dFN0b3BwZWQgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgewpAQCAtOTIsMTkgKzkz
LDE1IEBAIHZvaWQgSURCT3BlbkRCUmVxdWVzdDo6b25VcGdyYWRlTmVlZGVkKGludDY0X3Qgb2xk
VmVyc2lvbiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzCiAgICAgbV9kYXRhYmFzZUNhbGxiYWNrcy0+
Y29ubmVjdChpZGJEYXRhYmFzZS5nZXQoKSk7CiAgICAgbV9kYXRhYmFzZUNhbGxiYWNrcyA9IDA7
CiAKLSAgICBpZiAob2xkVmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNp
b24pIHsKLSAgICAgICAgLy8gVGhpcyBkYXRhYmFzZSBoYXNuJ3QgaGFkIGFuIGludGVnZXIgdmVy
c2lvbiBiZWZvcmUuCi0gICAgICAgIG9sZFZlcnNpb24gPSBJREJEYXRhYmFzZU1ldGFkYXRhOjpE
ZWZhdWx0SW50VmVyc2lvbjsKLSAgICB9CiAgICAgSURCRGF0YWJhc2VNZXRhZGF0YSBvbGRNZXRh
ZGF0YShtZXRhZGF0YSk7Ci0gICAgb2xkTWV0YWRhdGEuaW50VmVyc2lvbiA9IG9sZFZlcnNpb247
CisgICAgb2xkTWV0YWRhdGEudmVyc2lvbiA9IG9sZFZlcnNpb247CiAKICAgICBtX3RyYW5zYWN0
aW9uID0gSURCVHJhbnNhY3Rpb246OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1f
dHJhbnNhY3Rpb25JZCwgaWRiRGF0YWJhc2UuZ2V0KCksIHRoaXMsIG9sZE1ldGFkYXRhKTsKICAg
ICBtX3Jlc3VsdCA9IElEQkFueTo6Y3JlYXRlKGlkYkRhdGFiYXNlLnJlbGVhc2UoKSk7CiAKLSAg
ICBpZiAobV92ZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbikKKyAg
ICBpZiAobV92ZXJzaW9uTnVsbG5lc3MgPT0gSW5kZXhlZERCOjpOdWxsVmVyc2lvbikKICAgICAg
ICAgbV92ZXJzaW9uID0gMTsKLSAgICBlbnF1ZXVlRXZlbnQoSURCVmVyc2lvbkNoYW5nZUV2ZW50
OjpjcmVhdGUoSURCQW55OjpjcmVhdGUob2xkVmVyc2lvbiksIElEQkFueTo6Y3JlYXRlKG1fdmVy
c2lvbiksIGV2ZW50TmFtZXMoKS51cGdyYWRlbmVlZGVkRXZlbnQpKTsKKyAgICBlbnF1ZXVlRXZl
bnQoSURCVmVyc2lvbkNoYW5nZUV2ZW50OjpjcmVhdGUob2xkVmVyc2lvbiwgbV92ZXJzaW9uLCBt
X3ZlcnNpb25OdWxsbmVzcywgZXZlbnROYW1lcygpLnVwZ3JhZGVuZWVkZWRFdmVudCkpOwogfQog
CiB2b2lkIElEQk9wZW5EQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZT4gcHJwQmFja2VuZCwgY29uc3QgSURCRGF0YWJhc2VNZXRhZGF0YSYg
bWV0YWRhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJPcGVuREJSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJP
cGVuREJSZXF1ZXN0LmgKaW5kZXggMmZjZWQ5OC4uOTYwNDU5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT3BlbkRCUmVxdWVzdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9wZW5EQlJlcXVlc3QuaApAQCAtMjksMjAg
KzI5LDIxIEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRlICJJREJS
ZXF1ZXN0LmgiCisjaW5jbHVkZSAiSW5kZXhlZERCLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgSURCRGF0YWJhc2VDYWxsYmFja3NJbXBsOworY2xhc3MgSURCRGF0YWJhc2VDYWxs
YmFja3M7CiAKIGNsYXNzIElEQk9wZW5EQlJlcXVlc3QgOiBwdWJsaWMgSURCUmVxdWVzdCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8SURCT3BlbkRCUmVxdWVzdD4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1w
bD4sIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCB2ZXJzaW9uKTsKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxJREJPcGVuREJSZXF1ZXN0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBpbnQ2NF90IHRyYW5zYWN0aW9u
SWQsIHVpbnQ2NF90IHZlcnNpb24sIEluZGV4ZWREQjo6VmVyc2lvbk51bGxuZXNzKTsKICAgICB2
aXJ0dWFsIH5JREJPcGVuREJSZXF1ZXN0KCk7CiAKICAgICB1c2luZyBJREJSZXF1ZXN0OjpvblN1
Y2Nlc3M7CiAKLSAgICB2aXJ0dWFsIHZvaWQgb25CbG9ja2VkKGludDY0X3QgZXhpc3RpbmdWZXJz
aW9uKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgb25VcGdyYWRlTmVlZGVkKGludDY0X3Qg
b2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+LCBjb25z
dCBJREJEYXRhYmFzZU1ldGFkYXRhJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIG9uQmxv
Y2tlZCh1aW50NjRfdCBleGlzdGluZ1ZlcnNpb24pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBvblVwZ3JhZGVOZWVkZWQodWludDY0X3Qgb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2U+LCBjb25zdCBJREJEYXRhYmFzZU1ldGFkYXRhJikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZT4sIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmKSBPVkVSUklERTsKIAog
ICAgIC8vIEV2ZW50VGFyZ2V0CkBAIC01NiwxMSArNTcsMTIgQEAgcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRFbnF1ZXVlRXZlbnQoKSBjb25zdCBPVkVSUklERTsKIAogcHJpdmF0
ZToKLSAgICBJREJPcGVuREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVm
UHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzSW1wbD4sIGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50
NjRfdCB2ZXJzaW9uKTsKKyAgICBJREJPcGVuREJSZXF1ZXN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgaW50NjRfdCB0cmFuc2FjdGlv
bklkLCB1aW50NjRfdCB2ZXJzaW9uLCBJbmRleGVkREI6OlZlcnNpb25OdWxsbmVzcyk7CiAKLSAg
ICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3NJbXBsPiBtX2RhdGFiYXNlQ2FsbGJhY2tzOwor
ICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gbV9kYXRhYmFzZUNhbGxiYWNrczsKICAg
ICBjb25zdCBpbnQ2NF90IG1fdHJhbnNhY3Rpb25JZDsKLSAgICBpbnQ2NF90IG1fdmVyc2lvbjsK
KyAgICB1aW50NjRfdCBtX3ZlcnNpb247CisgICAgSW5kZXhlZERCOjpWZXJzaW9uTnVsbG5lc3Mg
bV92ZXJzaW9uTnVsbG5lc3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuY3BwCmluZGV4IDQ3ZjU1
ZmYuLjFkOWZlNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlJlcXVlc3QuY3BwCkBAIC0xMjAsMTUgKzEyMCw2IEBAIHVuc2lnbmVkIHNob3J0IElEQlJlcXVl
c3Q6OmVycm9yQ29kZShFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKICAgICByZXR1cm4gbV9lcnJv
ckNvZGU7CiB9CiAKLVN0cmluZyBJREJSZXF1ZXN0Ojp3ZWJraXRFcnJvck1lc3NhZ2UoRXhjZXB0
aW9uQ29kZSYgZWMpIGNvbnN0Ci17Ci0gICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSBET05FKSB7Ci0g
ICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OkludmFsaWRTdGF0ZUVycm9yOwotICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7Ci0gICAgfQotICAgIHJldHVybiBtX2Vycm9yTWVzc2FnZTsK
LX0KLQogUGFzc1JlZlB0cjxJREJBbnk+IElEQlJlcXVlc3Q6OnNvdXJjZSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fc291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCUmVxdWVzdC5oCmluZGV4IGU1Y2NjYjQuLjI1ZjI4MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJSZXF1ZXN0LmgKQEAgLTU5LDcgKzU5LDYgQEAgcHVibGlj
OgogICAgIFBhc3NSZWZQdHI8SURCQW55PiByZXN1bHQoRXhjZXB0aW9uQ29kZSYpIGNvbnN0Owog
ICAgIHVuc2lnbmVkIHNob3J0IGVycm9yQ29kZShFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAg
UGFzc1JlZlB0cjxET01FcnJvcj4gZXJyb3IoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwotICAgIFN0
cmluZyB3ZWJraXRFcnJvck1lc3NhZ2UoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIFBhc3NS
ZWZQdHI8SURCQW55PiBzb3VyY2UoKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPElEQlRyYW5zYWN0
aW9uPiB0cmFuc2FjdGlvbigpIGNvbnN0OwogICAgIHZvaWQgcHJldmVudFByb3BhZ2F0aW9uKCkg
eyBtX3ByZXZlbnRQcm9wYWdhdGlvbiA9IHRydWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlJlcXVlc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5pZGwKaW5kZXggMDA2ZmMxNC4uMTU3NWI2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCUmVxdWVzdC5pZGwKQEAg
LTMyLDI3ICszMiwxMyBAQAogICAgIEFjdGl2ZURPTU9iamVjdCwKICAgICBFdmVudFRhcmdldCwK
ICAgICBKU05vU3RhdGljVGFibGVzCi1dIGludGVyZmFjZSBJREJSZXF1ZXN0IHsKK10gaW50ZXJm
YWNlIElEQlJlcXVlc3QgOiBFdmVudFRhcmdldCB7CiAgICAgW0dldHRlclJhaXNlc0V4Y2VwdGlv
bl0gcmVhZG9ubHkgYXR0cmlidXRlIElEQkFueSByZXN1bHQ7CiAgICAgW0dldHRlclJhaXNlc0V4
Y2VwdGlvbl0gcmVhZG9ubHkgYXR0cmlidXRlIERPTUVycm9yIGVycm9yOwotICAgIFtUcmVhdFJl
dHVybmVkTnVsbFN0cmluZ0FzPVVuZGVmaW5lZCwgR2V0dGVyUmFpc2VzRXhjZXB0aW9uXSByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHdlYmtpdEVycm9yTWVzc2FnZTsKLQogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBJREJBbnkgc291cmNlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBJREJU
cmFuc2FjdGlvbiB0cmFuc2FjdGlvbjsKLQotICAgIC8vIFN0YXRlcwogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgcmVhZHlTdGF0ZTsKIAotICAgIC8vIEV2ZW50cwogICAgIGF0dHJp
YnV0ZSBFdmVudExpc3RlbmVyIG9uc3VjY2VzczsKICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5l
ciBvbmVycm9yOwotCi0gICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCi0gICAgdm9pZCBhZGRF
dmVudExpc3RlbmVyKERPTVN0cmluZyB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBF
dmVudExpc3RlbmVyIGxpc3RlbmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25h
bCBib29sZWFuIHVzZUNhcHR1cmUpOwotICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihET01T
dHJpbmcgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXZlbnRMaXN0ZW5lciBs
aXN0ZW5lciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiB1
c2VDYXB0dXJlKTsKLSAgICBbUmFpc2VzRXhjZXB0aW9uXSBib29sZWFuIGRpc3BhdGNoRXZlbnQo
RXZlbnQgZXZ0KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbi5jcHAKaW5kZXggMDBiZGE0Yy4uMmRmYjhjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAt
MTM4LDExICsxMzgsNiBAQCB2b2lkIElEQlRyYW5zYWN0aW9uOjpzZXRFcnJvcihQYXNzUmVmUHRy
PERPTUVycm9yPiBlcnJvciwgY29uc3QgU3RyaW5nJiBlcnJvck1lcwogICAgIH0KIH0KIAotU3Ry
aW5nIElEQlRyYW5zYWN0aW9uOjp3ZWJraXRFcnJvck1lc3NhZ2UoKSBjb25zdAotewotICAgIHJl
dHVybiBtX2Vycm9yTWVzc2FnZTsKLX0KLQogUGFzc1JlZlB0cjxJREJPYmplY3RTdG9yZT4gSURC
VHJhbnNhY3Rpb246Om9iamVjdFN0b3JlKGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7CiAgICAgaWYgKG1fc3RhdGUgPT0gRmluaXNoZWQpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCmluZGV4IDg5NzAxNTQu
LmQxODU5ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uaApAQCAtOTcsNyArOTcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBvYmplY3RT
dG9yZURlbGV0ZWQoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCk7CiAg
ICAgdm9pZCBzZXRFcnJvcihQYXNzUmVmUHRyPERPTUVycm9yPiwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpOwotICAgIFN0cmluZyB3ZWJraXRFcnJvck1lc3NhZ2UoKSBjb25zdDsKIAogICAg
IERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWJvcnQpOwogICAgIERFRklORV9BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIoY29tcGxldGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaWRsIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaWRsCmluZGV4IDY0N2VmZTEuLjhlYWM5
YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5pZGwKQEAgLTI5LDI4ICsyOSwxNSBAQAogICAgIEFjdGl2ZURPTU9iamVjdCwKICAg
ICBFdmVudFRhcmdldCwKICAgICBKU05vU3RhdGljVGFibGVzCi1dIGludGVyZmFjZSBJREJUcmFu
c2FjdGlvbiB7Ci0KLSAgICAvLyBQcm9wZXJ0aWVzCitdIGludGVyZmFjZSBJREJUcmFuc2FjdGlv
biA6IEV2ZW50VGFyZ2V0IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG1vZGU7
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIElEQkRhdGFiYXNlIGRiOwogICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01FcnJvciBlcnJvcjsKLSAgICBbVHJlYXRSZXR1cm5lZE51bGxTdHJpbmdBcz1V
bmRlZmluZWRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgd2Via2l0RXJyb3JNZXNzYWdl
OwogCi0gICAgLy8gTWV0aG9kcwogICAgIFtSYWlzZXNFeGNlcHRpb25dIElEQk9iamVjdFN0b3Jl
IG9iamVjdFN0b3JlIChET01TdHJpbmcgbmFtZSk7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9p
ZCBhYm9ydCAoKTsKIAotICAgIC8vIEV2ZW50cwogICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVy
IG9uYWJvcnQ7CiAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jb21wbGV0ZTsKICAgICBh
dHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVycm9yOwotICAgIC8vIEV2ZW50VGFyZ2V0IGludGVy
ZmFjZQotICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihET01TdHJpbmcgdHlwZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3B0aW9uYWwgYm9vbGVhbiB1c2VDYXB0dXJlKTsKLSAgICB2b2lkIHJlbW92
ZUV2ZW50TGlzdGVuZXIoRE9NU3RyaW5nIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9wdGlvbmFsIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Ci0gICAgW1JhaXNlc0V4Y2VwdGlvbl0gYm9v
bGVhbiBkaXNwYXRjaEV2ZW50KEV2ZW50IGV2dCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAKaW5k
ZXggMGM4NjFhZi4uOTRmM2MwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwCkBAIC0yOCwyMCArMjgs
MTMgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCi0jaW5jbHVkZSAiRXZlbnRO
YW1lcy5oIgotI2luY2x1ZGUgIklEQkFueS5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBh
c3NSZWZQdHI8SURCVmVyc2lvbkNoYW5nZUV2ZW50PiBJREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OmNy
ZWF0ZShQYXNzUmVmUHRyPElEQkFueT4gb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJBbnk+IG5l
d1ZlcnNpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKQotewotICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSURCVmVyc2lvbkNoYW5nZUV2ZW50KG9sZFZlcnNpb24sIG5ld1ZlcnNpb24s
IGV2ZW50VHlwZSkpOwotfQotCi1JREJWZXJzaW9uQ2hhbmdlRXZlbnQ6OklEQlZlcnNpb25DaGFu
Z2VFdmVudChQYXNzUmVmUHRyPElEQkFueT4gb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJBbnk+
IG5ld1ZlcnNpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKQorSURCVmVyc2lvbkNo
YW5nZUV2ZW50OjpJREJWZXJzaW9uQ2hhbmdlRXZlbnQodW5zaWduZWQgbG9uZyBsb25nIG9sZFZl
cnNpb24sIHVuc2lnbmVkIGxvbmcgbG9uZyBuZXdWZXJzaW9uLCBJbmRleGVkREI6OlZlcnNpb25O
dWxsbmVzcyBuZXdWZXJzaW9uTnVsbG5lc3MsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBl
KQogICAgIDogRXZlbnQoZXZlbnRUeXBlLCBmYWxzZSAvKmNhbkJ1YmJsZSovLCBmYWxzZSAvKmNh
bmNlbGFibGUqLykKICAgICAsIG1fb2xkVmVyc2lvbihvbGRWZXJzaW9uKQogICAgICwgbV9uZXdW
ZXJzaW9uKG5ld1ZlcnNpb24pCisgICAgLCBtX25ld1ZlcnNpb25OdWxsbmVzcyhuZXdWZXJzaW9u
TnVsbG5lc3MpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmgKaW5kZXggZDA4NGViMi4uOTQ4MGNjZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNo
YW5nZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVy
c2lvbkNoYW5nZUV2ZW50LmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFCTEUoSU5ERVhFRF9E
QVRBQkFTRSkKIAogI2luY2x1ZGUgIkV2ZW50LmgiCi0jaW5jbHVkZSAiSURCQW55LmgiCisjaW5j
bHVkZSAiSW5kZXhlZERCLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0zOCwx
OSArMzgsMjQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJWZXJzaW9uQ2hhbmdl
RXZlbnQgOiBwdWJsaWMgRXZlbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElE
QlZlcnNpb25DaGFuZ2VFdmVudD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQW55PiBvbGRWZXJzaW9u
ID0gSURCQW55OjpjcmVhdGVOdWxsKCksIFBhc3NSZWZQdHI8SURCQW55PiBuZXdWZXJzaW9uID0g
SURCQW55OjpjcmVhdGVOdWxsKCksIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlID0gQXRv
bWljU3RyaW5nKCkpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlZlcnNpb25DaGFuZ2VFdmVu
dD4gY3JlYXRlKHVuc2lnbmVkIGxvbmcgbG9uZyBvbGRWZXJzaW9uID0gMCwgdW5zaWduZWQgbG9u
ZyBsb25nIG5ld1ZlcnNpb24gPSAwLCBJbmRleGVkREI6OlZlcnNpb25OdWxsbmVzcyBuZXdWZXJz
aW9uTnVsbG5lc3MgPSBJbmRleGVkREI6Ok51bGxWZXJzaW9uLCBjb25zdCBBdG9taWNTdHJpbmcm
IGV2ZW50VHlwZSA9IEF0b21pY1N0cmluZygpKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBJREJWZXJzaW9uQ2hhbmdlRXZlbnQob2xkVmVyc2lvbiwgbmV3VmVyc2lvbiwgbmV3
VmVyc2lvbk51bGxuZXNzLCBldmVudFR5cGUpKTsKKyAgICB9CisKICAgICB2aXJ0dWFsIH5JREJW
ZXJzaW9uQ2hhbmdlRXZlbnQoKTsKIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxJREJBbnk+IG9s
ZFZlcnNpb24oKSB7IHJldHVybiBtX29sZFZlcnNpb247IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8SURCQW55PiBuZXdWZXJzaW9uKCkgeyByZXR1cm4gbV9uZXdWZXJzaW9uOyB9CisgICAgdmly
dHVhbCB1bnNpZ25lZCBsb25nIGxvbmcgb2xkVmVyc2lvbigpIHsgcmV0dXJuIG1fb2xkVmVyc2lv
bjsgfQorICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIG5ld1ZlcnNpb24oYm9vbCYgaXNO
dWxsKSB7IGlzTnVsbCA9IChtX25ld1ZlcnNpb25OdWxsbmVzcyA9PSBJbmRleGVkREI6Ok51bGxW
ZXJzaW9uKTsgcmV0dXJuIG1fbmV3VmVyc2lvbjsgfQogCiAgICAgdmlydHVhbCBFdmVudEludGVy
ZmFjZSBldmVudEludGVyZmFjZSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIElEQlZlcnNpb25D
aGFuZ2VFdmVudChQYXNzUmVmUHRyPElEQkFueT4gb2xkVmVyc2lvbiwgUGFzc1JlZlB0cjxJREJB
bnk+IG5ld1ZlcnNpb24sIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKKyAgICBJREJW
ZXJzaW9uQ2hhbmdlRXZlbnQodW5zaWduZWQgbG9uZyBsb25nIG9sZFZlcnNpb24sIHVuc2lnbmVk
IGxvbmcgbG9uZyBuZXdWZXJzaW9uLCBJbmRleGVkREI6OlZlcnNpb25OdWxsbmVzcyBuZXdWZXJz
aW9uTnVsbG5lc3MsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKTsKIAotICAgIFJlZlB0
cjxJREJBbnk+IG1fb2xkVmVyc2lvbjsKLSAgICBSZWZQdHI8SURCQW55PiBtX25ld1ZlcnNpb247
CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG1fb2xkVmVyc2lvbjsKKyAgICB1bnNpZ25lZCBsb25n
IGxvbmcgbV9uZXdWZXJzaW9uOworICAgIEluZGV4ZWREQjo6VmVyc2lvbk51bGxuZXNzIG1fbmV3
VmVyc2lvbk51bGxuZXNzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VF
dmVudC5pZGwKaW5kZXggZTkyMTkyOC4uOGQxMWM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJzaW9uQ2hhbmdlRXZlbnQuaWRsCkBA
IC0yNyw2ICsyNyw2IEBACiAgICAgQ29uZGl0aW9uYWw9SU5ERVhFRF9EQVRBQkFTRSwKICAgICBK
U05vU3RhdGljVGFibGVzCiBdIGludGVyZmFjZSBJREJWZXJzaW9uQ2hhbmdlRXZlbnQgOiBFdmVu
dCB7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIElEQkFueSBvbGRWZXJzaW9uOwotICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBJREJBbnkgbmV3VmVyc2lvbjsKKyAgICByZWFkb25seSBhdHRyaWJ1dGUg
dW5zaWduZWQgbG9uZyBsb25nIG9sZFZlcnNpb247CisgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVu
c2lnbmVkIGxvbmcgbG9uZz8gbmV3VmVyc2lvbjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JbmRleGVkREIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oCmluZGV4IDJlODRmYzcuLmNiN2U4ZmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0luZGV4ZWREQi5oCkBAIC01MCw2ICs1MCwx
MSBAQCBlbnVtIEN1cnNvclR5cGUgewogICAgIEN1cnNvcktleU9ubHkKIH07CiAKK2VudW0gVmVy
c2lvbk51bGxuZXNzIHsKKyAgICBOdWxsVmVyc2lvbiwKKyAgICBOb25OdWxsVmVyc2lvbgorfTsK
KwogfSAvLyBuYW1lc3BhY2UgSW5kZXhlZERCCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCQmFj
a2luZ1N0b3JlTGV2ZWxEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9s
ZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIuY3BwCmluZGV4IDUyNTA1NDkuLmU1ZjRjOWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURC
QmFja2luZ1N0b3JlTGV2ZWxEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvbGV2ZWxkYi9JREJCYWNraW5nU3RvcmVMZXZlbERCLmNwcApAQCAtNTEwLDcgKzUxMCw5
IEBAIGJvb2wgSURCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0
cmluZyYgbmFtZSwgSURCRGF0YWJhc2VNZXRhCiAgICAgaWYgKCFmb3VuZCkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBvayA9IGdldFN0cmluZyhtX2RiLmdldCgpLCBEYXRhYmFzZU1ldGFE
YXRhS2V5OjplbmNvZGUobWV0YWRhdGEtPmlkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VyVmVy
c2lvbiksIG1ldGFkYXRhLT52ZXJzaW9uLCBmb3VuZCk7CisgICAgLy8gRklYTUU6IFRoZSBzdHJp
bmcgdmVyc2lvbiBpcyBubyBsb25nZXIgc3VwcG9ydGVkLCBzbyB0aGUgbGV2ZWxEQiBwb3J0cyBz
aG91bGQgY29uc2lkZXIgcmVmYWN0b3Jpbmcgb2ZmIG9mIGl0LgorICAgIFN0cmluZyBzdHJpbmdW
ZXJzaW9uOworICAgIG9rID0gZ2V0U3RyaW5nKG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFL
ZXk6OmVuY29kZShtZXRhZGF0YS0+aWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVzZXJWZXJzaW9u
KSwgc3RyaW5nVmVyc2lvbiwgZm91bmQpOwogICAgIGlmICghb2spIHsKICAgICAgICAgSU5URVJO
QUxfUkVBRF9FUlJPUihHZXRJREJEYXRhYmFzZU1ldGFEYXRhKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtNTIwLDcgKzUyMiw4IEBAIGJvb2wgSURCQmFja2luZ1N0b3JlOjpnZXRJREJEYXRh
YmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCRGF0YWJhc2VNZXRhCiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBvayA9IGdldFZhckludChtX2RiLmdldCgpLCBE
YXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUobWV0YWRhdGEtPmlkLCBEYXRhYmFzZU1ldGFEYXRh
S2V5OjpVc2VySW50VmVyc2lvbiksIG1ldGFkYXRhLT5pbnRWZXJzaW9uLCBmb3VuZCk7CisgICAg
aW50NjRfdCB2ZXJzaW9uOworICAgIG9rID0gZ2V0VmFySW50KG1fZGIuZ2V0KCksIERhdGFiYXNl
TWV0YURhdGFLZXk6OmVuY29kZShtZXRhZGF0YS0+aWQsIERhdGFiYXNlTWV0YURhdGFLZXk6OlVz
ZXJJbnRWZXJzaW9uKSwgdmVyc2lvbiwgZm91bmQpOwogICAgIGlmICghb2spIHsKICAgICAgICAg
SU5URVJOQUxfUkVBRF9FUlJPUihHZXRJREJEYXRhYmFzZU1ldGFEYXRhKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtNTMwLDggKzUzMywxMSBAQCBib29sIElEQkJhY2tpbmdTdG9yZTo6Z2V0
SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIElEQkRhdGFiYXNlTWV0YQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKG1ldGFkYXRhLT5pbnRWZXJz
aW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6OkRlZmF1bHRJbnRWZXJzaW9uKQotICAgICAgICBt
ZXRhZGF0YS0+aW50VmVyc2lvbiA9IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbjsK
KyAgICAvLyBGSVhNRTogVGhlIHZlcnNpb25pbmcgc2VtYW50aWNzIGhhdmUgY2hhbmdlZCBzaW5j
ZSB0aGlzIG9yaWdpbmFsIGNvZGUgd2FzIHdyaXR0ZW4sIGFuZCB3aGF0IHdhcyBvbmNlIGEgbmVn
YXRpdmUgbnVtYmVyCisgICAgLy8gc3RvcmVkIGluIHRoZSBkYXRhYmFzZSBpcyBubyBsb25nZXIg
YSB2YWxpZCB2ZXJzaW9uLgorICAgIGlmICh2ZXJzaW9uIDwgMCkKKyAgICAgICAgdmVyc2lvbiA9
IDA7CisgICAgbWV0YWRhdGEtPnZlcnNpb24gPSB2ZXJzaW9uOwogCiAgICAgb2sgPSBnZXRNYXhP
YmplY3RTdG9yZUlkKG1fZGIuZ2V0KCksIG1ldGFkYXRhLT5pZCwgbWV0YWRhdGEtPm1heE9iamVj
dFN0b3JlSWQpOwogICAgIGlmICghb2spIHsKQEAgLTU2OSw2ICs1NzUsNyBAQCBXQVJOX1VOVVNF
RF9SRVRVUk4gc3RhdGljIGJvb2wgZ2V0TmV3RGF0YWJhc2VJZChMZXZlbERCRGF0YWJhc2UqIGRi
LCBpbnQ2NF90JiBuZQogICAgIHJldHVybiB0cnVlOwogfQogCisvLyBGSVhNRTogVGhlIHZlcnNp
b24gc2VtYW50aWNzIGhhdmUgY2hhbmdlZC4gU3RyaW5nIHZlcnNpb25zIG5vIGxvbmdlciBleGlz
dCwgYW5kIHRoZSBpbnRlZ2VyIHZlcnNpb24gaXMgbm93IGEgdWludDY0X3QKIGJvb2wgSURCQmFj
a2luZ1N0b3JlOjpjcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBpbnQ2NF90IGludFZlcnNpb24sIGludDY0X3QmIHJvd0lk
KQogewogICAgIGJvb2wgb2sgPSBnZXROZXdEYXRhYmFzZUlkKG1fZGIuZ2V0KCksIHJvd0lkKTsK
QEAgLTE4MDQsNyArMTgxMSw3IEBAIGJvb2wgSW5kZXhDdXJzb3JJbXBsOjpsb2FkQ3VycmVudFJv
dygpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgb2JqZWN0U3RvcmVDdXJzb3JPcHRpb25z
KExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24sIGludDY0X3QgZGF0YWJhc2VJZCwgaW50
NjRfdCBvYmplY3RTdG9yZUlkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIEluZGV4ZWREQjo6
Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCQmFja2luZ1N0b3JlOjpDdXJzb3I6OkN1cnNv
ck9wdGlvbnMmIGN1cnNvck9wdGlvbnMpCitzdGF0aWMgYm9vbCBvYmplY3RTdG9yZUN1cnNvck9w
dGlvbnMoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFzZUlk
LCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGNvbnN0IElEQktleVJhbmdlKiByYW5nZSwgSW5kZXhl
ZERCOjpDdXJzb3JEaXJlY3Rpb24gZGlyZWN0aW9uLCBJREJCYWNraW5nU3RvcmU6OkN1cnNvcjo6
Q3Vyc29yT3B0aW9ucyYgY3Vyc29yT3B0aW9ucykKIHsKICAgICBjdXJzb3JPcHRpb25zLmRhdGFi
YXNlSWQgPSBkYXRhYmFzZUlkOwogICAgIGN1cnNvck9wdGlvbnMub2JqZWN0U3RvcmVJZCA9IG9i
amVjdFN0b3JlSWQ7CkBAIC0xODU0LDcgKzE4NjEsNyBAQCBib29sIG9iamVjdFN0b3JlQ3Vyc29y
T3B0aW9ucyhMZXZlbERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNl
SQogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIGluZGV4Q3Vyc29yT3B0aW9ucyhMZXZlbERC
VHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2Jq
ZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBjb25zdCBJREJLZXlSYW5nZSogcmFuZ2UsIElu
ZGV4ZWREQjo6Q3Vyc29yRGlyZWN0aW9uIGRpcmVjdGlvbiwgSURCQmFja2luZ1N0b3JlOjpDdXJz
b3I6OkN1cnNvck9wdGlvbnMmIGN1cnNvck9wdGlvbnMpCitzdGF0aWMgYm9vbCBpbmRleEN1cnNv
ck9wdGlvbnMoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgaW50NjRfdCBkYXRhYmFz
ZUlkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgSURCS2V5
UmFuZ2UqIHJhbmdlLCBJbmRleGVkREI6OkN1cnNvckRpcmVjdGlvbiBkaXJlY3Rpb24sIElEQkJh
Y2tpbmdTdG9yZTo6Q3Vyc29yOjpDdXJzb3JPcHRpb25zJiBjdXJzb3JPcHRpb25zKQogewogICAg
IEFTU0VSVCh0cmFuc2FjdGlvbik7CiAgICAgaWYgKCFLZXlQcmVmaXg6OnZhbGlkSWRzKGRhdGFi
YXNlSWQsIG9iamVjdFN0b3JlSWQsIGluZGV4SWQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRGF0YWJhc2VC
YWNrZW5kTGV2ZWxEQi5jcHAKaW5kZXggOWQ5OWRhZC4uMTE5OTQ3MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJEYXRhYmFzZUJhY2tlbmRM
ZXZlbERCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRi
L0lEQkRhdGFiYXNlQmFja2VuZExldmVsREIuY3BwCkBAIC00NzMsMTMgKzQ3Myw5IEBAIFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQj4gSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxE
Qjo6Y3JlYXRlKGNvbnN0IFN0CiAgICAgcmV0dXJuIGJhY2tlbmQucmVsZWFzZSgpOwogfQogCi1u
YW1lc3BhY2UgewotY29uc3QgY2hhciogTm9TdHJpbmdWZXJzaW9uID0gIiI7Ci19Ci0KIElEQkRh
dGFiYXNlQmFja2VuZExldmVsREI6OklEQkRhdGFiYXNlQmFja2VuZExldmVsREIoY29uc3QgU3Ry
aW5nJiBuYW1lLCBJREJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSwgSURCRmFjdG9yeUJhY2tl
bmRMZXZlbERCKiBmYWN0b3J5LCBjb25zdCBTdHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpCiAgICAg
OiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3RvcmUpCi0gICAgLCBtX21ldGFkYXRhKG5hbWUsIElu
dmFsaWRJZCwgTm9TdHJpbmdWZXJzaW9uLCBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNp
b24sIEludmFsaWRJZCkKKyAgICAsIG1fbWV0YWRhdGEobmFtZSwgSW52YWxpZElkLCAwLCBJbnZh
bGlkSWQpCiAgICAgLCBtX2lkZW50aWZpZXIodW5pcXVlSWRlbnRpZmllcikKICAgICAsIG1fZmFj
dG9yeShmYWN0b3J5KQogICAgICwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yKElEQlRyYW5zYWN0
aW9uQ29vcmRpbmF0b3JMZXZlbERCOjpjcmVhdGUoKSkKQEAgLTUzOCw3ICs1MzQsNyBAQCBib29s
IElEQkRhdGFiYXNlQmFja2VuZExldmVsREI6Om9wZW5JbnRlcm5hbCgpCiAgICAgaWYgKHN1Y2Nl
c3MpCiAgICAgICAgIHJldHVybiBtX2JhY2tpbmdTdG9yZS0+Z2V0T2JqZWN0U3RvcmVzKG1fbWV0
YWRhdGEuaWQsICZtX21ldGFkYXRhLm9iamVjdFN0b3Jlcyk7CiAKLSAgICByZXR1cm4gbV9iYWNr
aW5nU3RvcmUtPmNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEobV9tZXRhZGF0YS5uYW1lLCBtX21l
dGFkYXRhLnZlcnNpb24sIG1fbWV0YWRhdGEuaW50VmVyc2lvbiwgbV9tZXRhZGF0YS5pZCk7Cisg
ICAgcmV0dXJuIG1fYmFja2luZ1N0b3JlLT5jcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRhKG1fbWV0
YWRhdGEubmFtZSwgU3RyaW5nOjpudW1iZXIobV9tZXRhZGF0YS52ZXJzaW9uKSwgbV9tZXRhZGF0
YS52ZXJzaW9uLCBtX21ldGFkYXRhLmlkKTsKIH0KIAogSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxE
Qjo6fklEQkRhdGFiYXNlQmFja2VuZExldmVsREIoKQpAQCAtMTA3MiwxMCArMTA2OCwxMiBAQCB2
b2lkIElEQkRhdGFiYXNlQmFja2VuZExldmVsREI6OlZlcnNpb25DaGFuZ2VPcGVyYXRpb246OnBl
cmZvcm0oSURCVHJhbnNhY3Rpb25CYQogewogICAgIElEQl9UUkFDRSgiVmVyc2lvbkNoYW5nZU9w
ZXJhdGlvbiIpOwogICAgIGludDY0X3QgZGF0YWJhc2VJZCA9IG1fZGF0YWJhc2UtPmlkKCk7Ci0g
ICAgaW50NjRfdCBvbGRWZXJzaW9uID0gbV9kYXRhYmFzZS0+bV9tZXRhZGF0YS5pbnRWZXJzaW9u
OwotICAgIEFTU0VSVChtX3ZlcnNpb24gPiBvbGRWZXJzaW9uKTsKLSAgICBtX2RhdGFiYXNlLT5t
X21ldGFkYXRhLmludFZlcnNpb24gPSBtX3ZlcnNpb247Ci0gICAgaWYgKCFtX2RhdGFiYXNlLT5t
X2JhY2tpbmdTdG9yZS0+dXBkYXRlSURCRGF0YWJhc2VJbnRWZXJzaW9uKHRyYW5zYWN0aW9uLT5i
YWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBkYXRhYmFzZUlkLCBtX2RhdGFiYXNlLT5tX21ldGFk
YXRhLmludFZlcnNpb24pKSB7CisgICAgdWludDY0X3Qgb2xkVmVyc2lvbiA9IG1fZGF0YWJhc2Ut
Pm1fbWV0YWRhdGEudmVyc2lvbjsKKworICAgIC8vIEZJWE1FOiBEYXRhYmFzZSB2ZXJzaW9ucyBh
cmUgbm93IG9mIHR5cGUgdWludDY0X3QsIGJ1dCB0aGlzIGNvZGUgZXhwZWN0ZWQgaW50NjRfdC4K
KyAgICBBU1NFUlQobV92ZXJzaW9uID4gKGludDY0X3Qpb2xkVmVyc2lvbik7CisgICAgbV9kYXRh
YmFzZS0+bV9tZXRhZGF0YS52ZXJzaW9uID0gbV92ZXJzaW9uOworICAgIGlmICghbV9kYXRhYmFz
ZS0+bV9iYWNraW5nU3RvcmUtPnVwZGF0ZUlEQkRhdGFiYXNlSW50VmVyc2lvbih0cmFuc2FjdGlv
bi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgZGF0YWJhc2VJZCwgbV9kYXRhYmFzZS0+bV9t
ZXRhZGF0YS52ZXJzaW9uKSkgewogICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gZXJy
b3IgPSBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25v
d25FcnJvciwgIkVycm9yIHdyaXRpbmcgZGF0YSB0byBzdGFibGUgc3RvcmFnZSB3aGVuIHVwZGF0
aW5nIHZlcnNpb24uIik7CiAgICAgICAgIG1fY2FsbGJhY2tzLT5vbkVycm9yKGVycm9yKTsKICAg
ICAgICAgdHJhbnNhY3Rpb24tPmFib3J0KGVycm9yKTsKQEAgLTExMzgsNyArMTEzNiw4IEBAIHNp
emVfdCBJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpjb25uZWN0aW9uQ291bnQoKQogdm9pZCBJ
REJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpwcm9jZXNzUGVuZGluZ0NhbGxzKCkKIHsKICAgICBp
ZiAobV9wZW5kaW5nU2Vjb25kSGFsZk9wZW4pIHsKLSAgICAgICAgQVNTRVJUKG1fcGVuZGluZ1Nl
Y29uZEhhbGZPcGVuLT52ZXJzaW9uKCkgPT0gbV9tZXRhZGF0YS5pbnRWZXJzaW9uKTsKKyAgICAg
ICAgLy8gRklYTUU6IERhdGFiYXNlIHZlcnNpb25zIGFyZSBub3cgb2YgdHlwZSB1aW50NjRfdCwg
YnV0IHRoaXMgY29kZSBleHBlY3RlZCBpbnQ2NF90LgorICAgICAgICBBU1NFUlQobV9wZW5kaW5n
U2Vjb25kSGFsZk9wZW4tPnZlcnNpb24oKSA9PSAoaW50NjRfdCltX21ldGFkYXRhLnZlcnNpb24p
OwogICAgICAgICBBU1NFUlQobV9tZXRhZGF0YS5pZCAhPSBJbnZhbGlkSWQpOwogICAgICAgICBt
X3BlbmRpbmdTZWNvbmRIYWxmT3Blbi0+Y2FsbGJhY2tzKCktPm9uU3VjY2Vzcyh0aGlzLCB0aGlz
LT5tZXRhZGF0YSgpKTsKICAgICAgICAgbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW4ucmVsZWFzZSgp
OwpAQCAtMTE5NCw3ICsxMTkzLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpv
cGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGIKICAgICBpZiAo
bV9tZXRhZGF0YS5pZCA9PSBJbnZhbGlkSWQpIHsKICAgICAgICAgLy8gVGhlIGRhdGFiYXNlIHdh
cyBkZWxldGVkIHRoZW4gaW1tZWRpYXRlbHkgcmUtb3BlbmVkOyBvcGVuSW50ZXJuYWwoKSByZWNy
ZWF0ZXMgaXQgaW4gdGhlIGJhY2tpbmcgc3RvcmUuCiAgICAgICAgIGlmIChvcGVuSW50ZXJuYWwo
KSkKLSAgICAgICAgICAgIEFTU0VSVChtX21ldGFkYXRhLmludFZlcnNpb24gPT0gSURCRGF0YWJh
c2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKTsKKyAgICAgICAgICAgIEFTU0VSVChtX21ldGFkYXRh
LnZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZTsKICAgICAgICAgICAgIFJlZlB0cjxJ
REJEYXRhYmFzZUVycm9yPiBlcnJvcjsKQEAgLTEyMDgsNyArMTIwNyw3IEBAIHZvaWQgSURCRGF0
YWJhc2VCYWNrZW5kTGV2ZWxEQjo6b3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IHBycENhbGxiCiAgICAgfQogCiAgICAgLy8gV2UgaW5mZXIgdGhhdCB0aGUgZGF0YWJhc2Ug
ZGlkbid0IGV4aXN0IGZyb20gaXRzIGxhY2sgb2YgZWl0aGVyIHR5cGUgb2YgdmVyc2lvbi4KLSAg
ICBib29sIGlzTmV3RGF0YWJhc2UgPSBtX21ldGFkYXRhLnZlcnNpb24gPT0gTm9TdHJpbmdWZXJz
aW9uICYmIG1fbWV0YWRhdGEuaW50VmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0lu
dFZlcnNpb247CisgICAgYm9vbCBpc05ld0RhdGFiYXNlID0gbV9tZXRhZGF0YS52ZXJzaW9uID09
IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbjsKIAogICAgIGlmICh2ZXJzaW9uID09
IElEQkRhdGFiYXNlTWV0YWRhdGE6OkRlZmF1bHRJbnRWZXJzaW9uKSB7CiAgICAgICAgIC8vIEZJ
WE1FOiB0aGlzIGNvbW1lbnRzIHdhcyByZWxhdGVkIHRvIENocm9taXVtIGNvZGUuIEl0IG1heSBi
ZSBpbmNvcnJlY3QKQEAgLTEyMjksMTUgKzEyMjgsMjAgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRMZXZlbERCOjpvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2Fs
bGIKICAgICAgICAgdmVyc2lvbiA9IDE7CiAgICAgfQogCi0gICAgaWYgKHZlcnNpb24gPiBtX21l
dGFkYXRhLmludFZlcnNpb24pIHsKKyAgICAvLyBGSVhNRTogRGF0YWJhc2UgdmVyc2lvbnMgYXJl
IG5vdyBvZiB0eXBlIHVpbnQ2NF90LCBidXQgdGhpcyBjb2RlIGV4cGVjdGVkIGludDY0X3QuCisg
ICAgaWYgKHZlcnNpb24gPiAoaW50NjRfdCltX21ldGFkYXRhLnZlcnNpb24pIHsKICAgICAgICAg
cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFj
a3MsIHRyYW5zYWN0aW9uSWQsIHZlcnNpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGlmICh2ZXJzaW9uIDwgbV9tZXRhZGF0YS5pbnRWZXJzaW9uKSB7Ci0gICAgICAgIGNhbGxiYWNr
cy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246
OlZlcnNpb25FcnJvciwgU3RyaW5nOjpmb3JtYXQoIlRoZSByZXF1ZXN0ZWQgdmVyc2lvbiAoJWxs
ZCkgaXMgbGVzcyB0aGFuIHRoZSBleGlzdGluZyB2ZXJzaW9uICglbGxkKS4iLCBzdGF0aWNfY2Fz
dDxsb25nIGxvbmc+KHZlcnNpb24pLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KG1fbWV0YWRhdGEu
aW50VmVyc2lvbikpKSk7CisKKyAgICAvLyBGSVhNRTogRGF0YWJhc2UgdmVyc2lvbnMgYXJlIG5v
dyBvZiB0eXBlIHVpbnQ2NF90LCBidXQgdGhpcyBjb2RlIGV4cGVjdGVkIGludDY0X3QuCisgICAg
aWYgKHZlcnNpb24gPCAoaW50NjRfdCltX21ldGFkYXRhLnZlcnNpb24pIHsKKyAgICAgICAgY2Fs
bGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6VmVyc2lvbkVycm9yLCBTdHJpbmc6OmZvcm1hdCgiVGhlIHJlcXVlc3RlZCB2ZXJzaW9u
ICglbGxkKSBpcyBsZXNzIHRoYW4gdGhlIGV4aXN0aW5nIHZlcnNpb24gKCVsbGQpLiIsIHN0YXRp
Y19jYXN0PGxvbmcgbG9uZz4odmVyc2lvbiksIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4obV9tZXRh
ZGF0YS52ZXJzaW9uKSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBBU1NFUlQodmVy
c2lvbiA9PSBtX21ldGFkYXRhLmludFZlcnNpb24pOworCisgICAgLy8gRklYTUU6IERhdGFiYXNl
IHZlcnNpb25zIGFyZSBub3cgb2YgdHlwZSB1aW50NjRfdCwgYnV0IHRoaXMgY29kZSBleHBlY3Rl
ZCBpbnQ2NF90LgorICAgIEFTU0VSVCh2ZXJzaW9uID09IChpbnQ2NF90KW1fbWV0YWRhdGEudmVy
c2lvbik7CiAgICAgbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5hZGQoZGF0YWJhc2VDYWxsYmFja3Mp
OwogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKHRoaXMsIHRoaXMtPm1ldGFkYXRhKCkpOwogfQpA
QCAtMTI1MCw3ICsxMjU0LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpydW5J
bnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxJREJDYWwKICAgICBmb3IgKERh
dGFiYXNlQ2FsbGJhY2tzU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZGF0YWJhc2VDYWxsYmFj
a3NTZXQuYmVnaW4oKTsgaXQgIT0gbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5lbmQoKTsgKytpdCkg
ewogICAgICAgICAvLyBGcm9udCBlbmQgZW5zdXJlcyB0aGUgZXZlbnQgaXMgbm90IGZpcmVkIGF0
IGNvbm5lY3Rpb25zIHRoYXQgaGF2ZSBjbG9zZVBlbmRpbmcgc2V0LgogICAgICAgICBpZiAoKml0
ICE9IGRhdGFiYXNlQ2FsbGJhY2tzKQotICAgICAgICAgICAgKCppdCktPm9uVmVyc2lvbkNoYW5n
ZShtX21ldGFkYXRhLmludFZlcnNpb24sIHJlcXVlc3RlZFZlcnNpb24pOworICAgICAgICAgICAg
KCppdCktPm9uVmVyc2lvbkNoYW5nZShtX21ldGFkYXRhLnZlcnNpb24sIHJlcXVlc3RlZFZlcnNp
b24sIEluZGV4ZWREQjo6TnVsbFZlcnNpb24pOwogICAgIH0KICAgICAvLyBUaGUgc3BlYyBkaWN0
YXRlcyB3ZSB3YWl0IHVudGlsIGFsbCB0aGUgdmVyc2lvbiBjaGFuZ2UgZXZlbnRzIGFyZQogICAg
IC8vIGRlbGl2ZXJlZCBhbmQgdGhlbiBjaGVjayBtX2RhdGFiYXNlQ2FsbGJhY2tzLmVtcHR5KCkg
YmVmb3JlIHByb2NlZWRpbmcKQEAgLTEyNjAsNyArMTI2NCw3IEBAIHZvaWQgSURCRGF0YWJhc2VC
YWNrZW5kTGV2ZWxEQjo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKFBhc3NSZWZQdHI8
SURCQ2FsCiAgICAgLy8gdGVsbHMgdXMgdGhhdCBhbGwgdGhlIGJsb2NrZWQgZXZlbnRzIGhhdmUg
YmVlbiBkZWxpdmVyZWQuIFNlZQogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MTEzMAogICAgIGlmIChjb25uZWN0aW9uQ291bnQoKSkKLSAgICAgICAgY2Fs
bGJhY2tzLT5vbkJsb2NrZWQobV9tZXRhZGF0YS5pbnRWZXJzaW9uKTsKKyAgICAgICAgY2FsbGJh
Y2tzLT5vbkJsb2NrZWQobV9tZXRhZGF0YS52ZXJzaW9uKTsKICAgICAvLyBGSVhNRTogQWRkIHRl
c3QgZm9yIG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbi4KICAgICBpZiAobV9ydW5u
aW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uIHx8IGNvbm5lY3Rpb25Db3VudCgpKSB7CiAgICAg
ICAgIG1fcGVuZGluZ09wZW5DYWxscy5hcHBlbmQoUGVuZGluZ09wZW5DYWxsOjpjcmVhdGUoY2Fs
bGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgdHJhbnNhY3Rpb25JZCwgcmVxdWVzdGVkVmVyc2lv
bikpOwpAQCAtMTI3MSw3ICsxMjc1LDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERC
OjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxJREJDYWwKICAgICBj
cmVhdGVUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkLCBkYXRhYmFzZUNhbGxiYWNrcywgb2JqZWN0
U3RvcmVJZHMsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKTsKICAgICBSZWZQ
dHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQj4gdHJhbnNhY3Rpb24gPSBtX3RyYW5zYWN0
aW9ucy5nZXQodHJhbnNhY3Rpb25JZCk7CiAKLSAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNr
KFZlcnNpb25DaGFuZ2VPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCB0cmFuc2FjdGlvbklkLCByZXF1
ZXN0ZWRWZXJzaW9uLCBjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKSwgVmVyc2lvbkNoYW5n
ZUFib3J0T3BlcmF0aW9uOjpjcmVhdGUodGhpcywgbV9tZXRhZGF0YS52ZXJzaW9uLCBtX21ldGFk
YXRhLmludFZlcnNpb24pKTsKKyAgICB0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKFZlcnNpb25D
aGFuZ2VPcGVyYXRpb246OmNyZWF0ZSh0aGlzLCB0cmFuc2FjdGlvbklkLCByZXF1ZXN0ZWRWZXJz
aW9uLCBjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKSwgVmVyc2lvbkNoYW5nZUFib3J0T3Bl
cmF0aW9uOjpjcmVhdGUodGhpcywgU3RyaW5nOjpudW1iZXIobV9tZXRhZGF0YS52ZXJzaW9uKSwg
bV9tZXRhZGF0YS52ZXJzaW9uKSk7CiAKICAgICBBU1NFUlQoIW1fcGVuZGluZ1NlY29uZEhhbGZP
cGVuKTsKICAgICBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmFkZChkYXRhYmFzZUNhbGxiYWNrcyk7
CkBAIC0xMjgzLDEyICsxMjg3LDEyIEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQjo6
ZGVsZXRlRGF0YWJhc2UoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiCiAgICAgaWYg
KGlzRGVsZXRlRGF0YWJhc2VCbG9ja2VkKCkpIHsKICAgICAgICAgZm9yIChEYXRhYmFzZUNhbGxi
YWNrc1NldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmJlZ2lu
KCk7IGl0ICE9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuZW5kKCk7ICsraXQpIHsKICAgICAgICAg
ICAgIC8vIEZyb250IGVuZCBlbnN1cmVzIHRoZSBldmVudCBpcyBub3QgZmlyZWQgYXQgY29ubmVj
dGlvbnMgdGhhdCBoYXZlIGNsb3NlUGVuZGluZyBzZXQuCi0gICAgICAgICAgICAoKml0KS0+b25W
ZXJzaW9uQ2hhbmdlKG1fbWV0YWRhdGEuaW50VmVyc2lvbiwgSURCRGF0YWJhc2VNZXRhZGF0YTo6
Tm9JbnRWZXJzaW9uKTsKKyAgICAgICAgICAgICgqaXQpLT5vblZlcnNpb25DaGFuZ2UobV9tZXRh
ZGF0YS52ZXJzaW9uLCAwLCBJbmRleGVkREI6Ok51bGxWZXJzaW9uKTsKICAgICAgICAgfQogICAg
ICAgICAvLyBGSVhNRTogT25seSBmaXJlIG9uQmxvY2tlZCBpZiB0aGVyZSBhcmUgb3BlbiBjb25u
ZWN0aW9ucyBhZnRlciB0aGUKICAgICAgICAgLy8gVmVyc2lvbkNoYW5nZUV2ZW50cyBhcmUgcmVj
ZWl2ZWQsIG5vdCBqdXN0IHNldCB1cCB0byBmaXJlLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzExMzAKLSAgICAgICAgY2FsbGJhY2tzLT5vbkJs
b2NrZWQobV9tZXRhZGF0YS5pbnRWZXJzaW9uKTsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkJsb2Nr
ZWQobV9tZXRhZGF0YS52ZXJzaW9uKTsKICAgICAgICAgbV9wZW5kaW5nRGVsZXRlQ2FsbHMuYXBw
ZW5kKFBlbmRpbmdEZWxldGVDYWxsOjpjcmVhdGUoY2FsbGJhY2tzLnJlbGVhc2UoKSkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMTMwOCw5ICsxMzEyLDggQEAgdm9pZCBJREJEYXRhYmFz
ZUJhY2tlbmRMZXZlbERCOjpkZWxldGVEYXRhYmFzZUZpbmFsKFBhc3NSZWZQdHI8SURCQ2FsbGJh
Y2tzPiBjYWwKICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNy
ZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VW5rbm93bkVycm9yLCAiSW50ZXJuYWwgZXJyb3Ig
ZGVsZXRpbmcgZGF0YWJhc2UuIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fbWV0
YWRhdGEudmVyc2lvbiA9IE5vU3RyaW5nVmVyc2lvbjsKICAgICBtX21ldGFkYXRhLmlkID0gSW52
YWxpZElkOwotICAgIG1fbWV0YWRhdGEuaW50VmVyc2lvbiA9IElEQkRhdGFiYXNlTWV0YWRhdGE6
Ok5vSW50VmVyc2lvbjsKKyAgICBtX21ldGFkYXRhLnZlcnNpb24gPSBJREJEYXRhYmFzZU1ldGFk
YXRhOjpOb0ludFZlcnNpb247CiAgICAgbV9tZXRhZGF0YS5vYmplY3RTdG9yZXMuY2xlYXIoKTsK
ICAgICBjYWxsYmFja3MtPm9uU3VjY2VzcygpOwogfQpAQCAtMTM3NSw4ICsxMzc4LDcgQEAgdm9p
ZCBJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpWZXJzaW9uQ2hhbmdlQWJvcnRPcGVyYXRpb246
OnBlcmZvcm0oSURCVHJhbnNhY3QKIHsKICAgICBJREJfVFJBQ0UoIlZlcnNpb25DaGFuZ2VBYm9y
dE9wZXJhdGlvbiIpOwogICAgIEFTU0VSVF9VTlVTRUQodHJhbnNhY3Rpb24sICF0cmFuc2FjdGlv
bik7Ci0gICAgbV9kYXRhYmFzZS0+bV9tZXRhZGF0YS52ZXJzaW9uID0gbV9wcmV2aW91c1ZlcnNp
b247Ci0gICAgbV9kYXRhYmFzZS0+bV9tZXRhZGF0YS5pbnRWZXJzaW9uID0gbV9wcmV2aW91c0lu
dFZlcnNpb247CisgICAgbV9kYXRhYmFzZS0+bV9tZXRhZGF0YS52ZXJzaW9uID0gbV9wcmV2aW91
c0ludFZlcnNpb247CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCTGV2ZWxEQkNvZGluZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkxldmVsREJD
b2RpbmcuY3BwCmluZGV4IDA0ZTQyNTkuLjAwOGNiMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCTGV2ZWxEQkNvZGluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJMZXZlbERCQ29kaW5n
LmNwcApAQCAtNTgwLDcgKzU4MCw3IEBAIHN0YXRpYyBJREJLZXk6OlR5cGUga2V5VHlwZUJ5dGVU
b0tleVR5cGUodW5zaWduZWQgY2hhciB0eXBlKQogICAgIHJldHVybiBJREJLZXk6OkludmFsaWRU
eXBlOwogfQogCi1pbnQgY29tcGFyZUVuY29kZWRJREJLZXlzKGNvbnN0IGNoYXIqJiBwdHJBLCBj
b25zdCBjaGFyKiBsaW1pdEEsIGNvbnN0IGNoYXIqJiBwdHJCLCBjb25zdCBjaGFyKiBsaW1pdEIs
IGJvb2wmIG9rKQorc3RhdGljIGludCBjb21wYXJlRW5jb2RlZElEQktleXMoY29uc3QgY2hhciom
IHB0ckEsIGNvbnN0IGNoYXIqIGxpbWl0QSwgY29uc3QgY2hhciomIHB0ckIsIGNvbnN0IGNoYXIq
IGxpbWl0QiwgYm9vbCYgb2spCiB7CiAgICAgb2sgPSB0cnVlOwogICAgIEFTU0VSVCgmcHRyQSAh
PSAmcHRyQik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
ZGV4ZWREQkFnZW50LmNwcAppbmRleCBjODQwYjdkLi4zNzQ4ZmQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTMx
Nyw4ICszMTcsOCBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAgICAgUmVmUHRyPERhdGFiYXNl
V2l0aE9iamVjdFN0b3Jlcz4gcmVzdWx0ID0gRGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzOjpjcmVh
dGUoKQogICAgICAgICAgICAgLnNldE5hbWUoZGF0YWJhc2VNZXRhZGF0YS5uYW1lKQotICAgICAg
ICAgICAgLnNldEludFZlcnNpb24oZGF0YWJhc2VNZXRhZGF0YS5pbnRWZXJzaW9uKQotICAgICAg
ICAgICAgLnNldFZlcnNpb24oZGF0YWJhc2VNZXRhZGF0YS52ZXJzaW9uKQorICAgICAgICAgICAg
LnNldEludFZlcnNpb24oZGF0YWJhc2VNZXRhZGF0YS52ZXJzaW9uKQorICAgICAgICAgICAgLnNl
dFZlcnNpb24oU3RyaW5nOjpudW1iZXIoZGF0YWJhc2VNZXRhZGF0YS52ZXJzaW9uKSkKICAgICAg
ICAgICAgIC5zZXRPYmplY3RTdG9yZXMob2JqZWN0U3RvcmVzKTsKIAogICAgICAgICBtX3JlcXVl
c3RDYWxsYmFjay0+c2VuZFN1Y2Nlc3MocmVzdWx0KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>