<?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>105676</bug_id>
          
          <creation_ts>2012-12-21 21:39:43 -0800</creation_ts>
          <short_desc>Add a separate class for networking related storage</short_desc>
          <delta_ts>2013-01-03 13:41:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>105686</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>danw</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fpizlo</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ossy</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>roger_fong</cc>
    
    <cc>sam</cc>
    
    <cc>tony</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>796609</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-21 21:39:43 -0800</bug_when>
    <thetext>NetworkingContext combines a reference to storage (cookies and more) and data that&apos;s only meaningful when loading. This makes it very ugly to use for cookie manipulation when there is no load (e.g. for document.cookie).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796610</commentid>
    <comment_count>1</comment_count>
      <attachid>180590</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-21 21:42:24 -0800</bug_when>
    <thetext>Created attachment 180590
patch for EWS

Will likely take many iterations to make EWS happy...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796611</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-21 21:48:22 -0800</bug_when>
    <thetext>Attachment 180590 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebCore/platform/network/NetworkingContext.h:23:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 67 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>796612</commentid>
    <comment_count>3</comment_count>
      <attachid>180590</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-21 21:50:38 -0800</bug_when>
    <thetext>Comment on attachment 180590
patch for EWS

Attachment 180590 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15452665</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796613</commentid>
    <comment_count>4</comment_count>
      <attachid>180590</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-12-21 21:51:21 -0800</bug_when>
    <thetext>Comment on attachment 180590
patch for EWS

Attachment 180590 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15456665</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796614</commentid>
    <comment_count>5</comment_count>
      <attachid>180590</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-21 21:52:35 -0800</bug_when>
    <thetext>Comment on attachment 180590
patch for EWS

Attachment 180590 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15457641</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796615</commentid>
    <comment_count>6</comment_count>
      <attachid>180590</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-21 22:08:30 -0800</bug_when>
    <thetext>Comment on attachment 180590
patch for EWS

Attachment 180590 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15475227</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796617</commentid>
    <comment_count>7</comment_count>
      <attachid>180592</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-21 22:22:43 -0800</bug_when>
    <thetext>Created attachment 180592
patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796618</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-21 22:28:28 -0800</bug_when>
    <thetext>Attachment 180592 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebCore/platform/network/NetworkingContext.h:23:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/platform/network/NetworkStorageSession.h:55:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 67 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>796619</commentid>
    <comment_count>9</comment_count>
      <attachid>180592</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-21 22:30:30 -0800</bug_when>
    <thetext>Comment on attachment 180592
patch for EWS

Attachment 180592 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15457650</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796620</commentid>
    <comment_count>10</comment_count>
      <attachid>180592</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-21 22:32:37 -0800</bug_when>
    <thetext>Comment on attachment 180592
patch for EWS

Attachment 180592 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15458624</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796621</commentid>
    <comment_count>11</comment_count>
      <attachid>180592</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-12-21 22:32:53 -0800</bug_when>
    <thetext>Comment on attachment 180592
patch for EWS

Attachment 180592 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15458625</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796622</commentid>
    <comment_count>12</comment_count>
      <attachid>180593</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-21 22:39:04 -0800</bug_when>
    <thetext>Created attachment 180593
patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796623</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-21 22:45:09 -0800</bug_when>
    <thetext>Attachment 180593 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebCore/platform/network/NetworkingContext.h:23:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 68 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>796624</commentid>
    <comment_count>14</comment_count>
      <attachid>180593</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-12-21 22:47:49 -0800</bug_when>
    <thetext>Comment on attachment 180593
patch for EWS

Attachment 180593 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/15456679</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796625</commentid>
    <comment_count>15</comment_count>
      <attachid>180593</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-21 22:47:57 -0800</bug_when>
    <thetext>Comment on attachment 180593
patch for EWS

Attachment 180593 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15458630</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796626</commentid>
    <comment_count>16</comment_count>
      <attachid>180593</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-12-21 22:48:27 -0800</bug_when>
    <thetext>Comment on attachment 180593
patch for EWS

Attachment 180593 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15454666</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796627</commentid>
    <comment_count>17</comment_count>
      <attachid>180593</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-21 22:49:21 -0800</bug_when>
    <thetext>Comment on attachment 180593
patch for EWS

Attachment 180593 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15451682</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796628</commentid>
    <comment_count>18</comment_count>
      <attachid>180594</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-21 22:55:36 -0800</bug_when>
    <thetext>Created attachment 180594
patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796630</commentid>
    <comment_count>19</comment_count>
      <attachid>180595</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-21 22:57:34 -0800</bug_when>
    <thetext>Created attachment 180595
why was it small?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796631</commentid>
    <comment_count>20</comment_count>
      <attachid>180595</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-12-21 23:05:19 -0800</bug_when>
    <thetext>Comment on attachment 180595
why was it small?

Attachment 180595 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/15458631</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796632</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-21 23:05:41 -0800</bug_when>
    <thetext>Attachment 180595 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebCore/platform/network/NetworkingContext.h:23:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 69 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>796633</commentid>
    <comment_count>22</comment_count>
      <attachid>180595</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-21 23:06:27 -0800</bug_when>
    <thetext>Comment on attachment 180595
why was it small?

Attachment 180595 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15450681</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796635</commentid>
    <comment_count>23</comment_count>
      <attachid>180596</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-21 23:13:15 -0800</bug_when>
    <thetext>Created attachment 180596
patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796636</commentid>
    <comment_count>24</comment_count>
      <attachid>180596</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-12-21 23:19:37 -0800</bug_when>
    <thetext>Comment on attachment 180596
patch for EWS

Attachment 180596 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15457664</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796637</commentid>
    <comment_count>25</comment_count>
      <attachid>180596</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-21 23:20:33 -0800</bug_when>
    <thetext>Comment on attachment 180596
patch for EWS

Attachment 180596 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15457665</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796638</commentid>
    <comment_count>26</comment_count>
      <attachid>180596</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-21 23:22:51 -0800</bug_when>
    <thetext>Comment on attachment 180596
patch for EWS

Attachment 180596 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15458636</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796641</commentid>
    <comment_count>27</comment_count>
      <attachid>180596</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-21 23:41:25 -0800</bug_when>
    <thetext>Comment on attachment 180596
patch for EWS

Attachment 180596 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15462560</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796642</commentid>
    <comment_count>28</comment_count>
      <attachid>180597</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-21 23:42:34 -0800</bug_when>
    <thetext>Created attachment 180597
patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796643</commentid>
    <comment_count>29</comment_count>
      <attachid>180597</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-21 23:50:42 -0800</bug_when>
    <thetext>Comment on attachment 180597
patch for EWS

Attachment 180597 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15462571</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796644</commentid>
    <comment_count>30</comment_count>
      <attachid>180597</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-21 23:52:44 -0800</bug_when>
    <thetext>Comment on attachment 180597
patch for EWS

Attachment 180597 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15452695</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796645</commentid>
    <comment_count>31</comment_count>
      <attachid>180598</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-22 00:02:18 -0800</bug_when>
    <thetext>Created attachment 180598
patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796646</commentid>
    <comment_count>32</comment_count>
      <attachid>180598</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-22 00:11:40 -0800</bug_when>
    <thetext>Comment on attachment 180598
patch for EWS

Attachment 180598 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15445781</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796647</commentid>
    <comment_count>33</comment_count>
      <attachid>180598</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-22 00:12:58 -0800</bug_when>
    <thetext>Comment on attachment 180598
patch for EWS

Attachment 180598 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15456694</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796648</commentid>
    <comment_count>34</comment_count>
      <attachid>180598</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-12-22 00:29:44 -0800</bug_when>
    <thetext>Comment on attachment 180598
patch for EWS

Attachment 180598 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15456697</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796649</commentid>
    <comment_count>35</comment_count>
      <attachid>180598</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-22 00:36:57 -0800</bug_when>
    <thetext>Comment on attachment 180598
patch for EWS

Attachment 180598 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15460605</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796650</commentid>
    <comment_count>36</comment_count>
      <attachid>180598</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-22 00:45:14 -0800</bug_when>
    <thetext>Comment on attachment 180598
patch for EWS

Attachment 180598 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15445784</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796652</commentid>
    <comment_count>37</comment_count>
      <attachid>180599</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-22 01:03:22 -0800</bug_when>
    <thetext>Created attachment 180599
patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796653</commentid>
    <comment_count>38</comment_count>
      <attachid>180599</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-12-22 01:12:52 -0800</bug_when>
    <thetext>Comment on attachment 180599
patch for EWS

Attachment 180599 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15454702</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796654</commentid>
    <comment_count>39</comment_count>
      <attachid>180599</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-22 01:13:34 -0800</bug_when>
    <thetext>Comment on attachment 180599
patch for EWS

Attachment 180599 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15445794</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796655</commentid>
    <comment_count>40</comment_count>
      <attachid>180599</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-22 01:14:18 -0800</bug_when>
    <thetext>Comment on attachment 180599
patch for EWS

Attachment 180599 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15455692</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796656</commentid>
    <comment_count>41</comment_count>
      <attachid>180600</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-22 01:33:03 -0800</bug_when>
    <thetext>Created attachment 180600
patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796657</commentid>
    <comment_count>42</comment_count>
      <attachid>180600</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-12-22 01:42:05 -0800</bug_when>
    <thetext>Comment on attachment 180600
patch for EWS

Attachment 180600 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15446786</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796658</commentid>
    <comment_count>43</comment_count>
      <attachid>180600</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-22 02:13:08 -0800</bug_when>
    <thetext>Comment on attachment 180600
patch for EWS

Attachment 180600 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15450729</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796684</commentid>
    <comment_count>44</comment_count>
      <attachid>180608</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-22 14:04:34 -0800</bug_when>
    <thetext>Created attachment 180608
patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796686</commentid>
    <comment_count>45</comment_count>
      <attachid>180608</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-22 14:33:31 -0800</bug_when>
    <thetext>Comment on attachment 180608
patch for EWS

Attachment 180608 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15460780</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796691</commentid>
    <comment_count>46</comment_count>
      <attachid>180609</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-22 16:10:28 -0800</bug_when>
    <thetext>Created attachment 180609
patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796692</commentid>
    <comment_count>47</comment_count>
      <attachid>180609</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-12-22 16:27:16 -0800</bug_when>
    <thetext>Comment on attachment 180609
patch for review

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

&gt; Source/WebCore/platform/network/NetworkStorageSession.h:41
&gt; +class NetworkStorageSession {

Given how platform dependent this looking, do you think it might make sense to follow the idiom we use in ResourceRequest/ResourceResponse, where we have a base that is platform agnostic and concrete implementations that are platform specific?

Another though is I wonder if this really needs to be storage specific?  It seems like there might be other facets of a networking session that might be useful to keep.

&gt; Source/WebCore/platform/network/PlatformCookieJar.h:49
&gt; -String cookiesForDOM(NetworkingContext*, const KURL&amp; firstParty, const KURL&amp;);
&gt; -void setCookiesFromDOM(NetworkingContext*, const KURL&amp; firstParty, const KURL&amp;, const String&amp;);
&gt; -bool cookiesEnabled(NetworkingContext*, const KURL&amp; firstParty, const KURL&amp;);
&gt; -String cookieRequestHeaderFieldValue(NetworkingContext*, const KURL&amp; firstParty, const KURL&amp;);
&gt; -bool getRawCookies(NetworkingContext*, const KURL&amp; firstParty, const KURL&amp;, Vector&lt;Cookie&gt;&amp;);
&gt; -void deleteCookie(NetworkingContext*, const KURL&amp;, const String&amp;);
&gt; -void getHostnamesWithCookies(NetworkingContext*, HashSet&lt;String&gt;&amp; hostnames);
&gt; -void deleteCookiesForHostname(NetworkingContext*, const String&amp; hostname);
&gt; -void deleteAllCookies(NetworkingContext*);
&gt; +String cookiesForDOM(const NetworkStorageSession&amp;, const KURL&amp; firstParty, const KURL&amp;);
&gt; +void setCookiesFromDOM(const NetworkStorageSession&amp;, const KURL&amp; firstParty, const KURL&amp;, const String&amp;);
&gt; +bool cookiesEnabled(const NetworkStorageSession&amp;, const KURL&amp; firstParty, const KURL&amp;);
&gt; +String cookieRequestHeaderFieldValue(const NetworkStorageSession&amp;, const KURL&amp; firstParty, const KURL&amp;);
&gt; +bool getRawCookies(const NetworkStorageSession&amp;, const KURL&amp; firstParty, const KURL&amp;, Vector&lt;Cookie&gt;&amp;);
&gt; +void deleteCookie(const NetworkStorageSession&amp;, const KURL&amp;, const String&amp;);
&gt; +void getHostnamesWithCookies(const NetworkStorageSession&amp;, HashSet&lt;String&gt;&amp; hostnames);
&gt; +void deleteCookiesForHostname(const NetworkStorageSession&amp;, const String&amp; hostname);
&gt; +void deleteAllCookies(const NetworkStorageSession&amp;);

Since you are passing by const reference now, the comment doesn&apos;t make as much sense.  It also seems like we should eventually move these functions to be member functions on NetworkStorageSession. If so, a FIXME should be added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796693</commentid>
    <comment_count>48</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-22 16:40:44 -0800</bug_when>
    <thetext>&gt; Given how platform dependent this looking, do you think it might make sense to follow the idiom we use in ResourceRequest/ResourceResponse, where we have a base that is platform agnostic and concrete implementations that are platform specific?

Not sure if there is anything to share here. This is now more like ResourceHandle, which works quite well in practice, arguably better than ResourceResponse (despite a number of ifdefs in the header).

&gt; Another though is I wonder if this really needs to be storage specific?  It seems like there might be other facets of a networking session that might be useful to keep.

I think that storage session management is complicated enough that it deserves its own class. Eventually, we&apos;ll expand it to provide more control, such as setting location of cache directory, or tracking more sessions.

&gt;  It also seems like we should eventually move these functions to be member functions on NetworkStorageSession. If so, a FIXME should be added.

Good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796694</commentid>
    <comment_count>49</comment_count>
      <attachid>180609</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-22 16:49:19 -0800</bug_when>
    <thetext>Comment on attachment 180609
patch for review

Attachment 180609 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15452901</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796695</commentid>
    <comment_count>50</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-12-22 17:05:47 -0800</bug_when>
    <thetext>(In reply to comment #48)
&gt; &gt; Given how platform dependent this looking, do you think it might make sense to follow the idiom we use in ResourceRequest/ResourceResponse, where we have a base that is platform agnostic and concrete implementations that are platform specific?
&gt; 
&gt; Not sure if there is anything to share here. This is now more like ResourceHandle, which works quite well in practice, arguably better than ResourceResponse (despite a number of ifdefs in the header).
&gt; 

Ok.

&gt; &gt; Another though is I wonder if this really needs to be storage specific?  It seems like there might be other facets of a networking session that might be useful to keep.
&gt; 
&gt; I think that storage session management is complicated enough that it deserves its own class. Eventually, we&apos;ll expand it to provide more control, such as setting location of cache directory, or tracking more sessions.

Fair enough.

&gt; 
&gt; &gt;  It also seems like we should eventually move these functions to be member functions on NetworkStorageSession. If so, a FIXME should be added.
&gt; 
&gt; Good idea.

Cool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796696</commentid>
    <comment_count>51</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-22 18:17:43 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/138413&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796726</commentid>
    <comment_count>52</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-12-23 00:39:18 -0800</bug_when>
    <thetext>This doesn&apos;t compile on the Chromium Linux clang build. Looks like we&apos;re trying to copy a NetworkStorageSession?  Alexey, can you take a look?
http://build.chromium.org/p/tryserver.chromium/builders/linux_clang/builds/73126/steps/compile/logs/stdio

FAILED: clang++ -MMD -MF obj/third_party/WebKit/Source/WebCore/loader/webcore_remaining.CookieJar.o.d -D_FILE_OFFSET_BITS=64 -DCHROMIUM_BUILD -DCOMPONENT_BUILD -DUSE_DEFAULT_RENDER_THEME=1 -DUSE_LIBJPEG_TURBO=1 -DUSE_NSS=1 -DENABLE_ONE_CLICK_SIGNIN -DGTK_DISABLE_SINGLE_INCLUDES=1 -DENABLE_REMOTING=1 -DENABLE_WEBRTC=1 -DENABLE_PEPPER_THREADING -DENABLE_CONFIGURATION_POLICY -DENABLE_INPUT_SPEECH -DENABLE_NOTIFICATIONS -DDCHECK_ALWAYS_ON=1 -DENABLE_GPU=1 -DENABLE_EGLIMAGE=1 -DUSE_SKIA=1 -DENABLE_TASK_MANAGER=1 -DENABLE_WEB_INTENTS=1 -DENABLE_EXTENSIONS=1 -DENABLE_PLUGIN_INSTALLATION=1 -DENABLE_PLUGINS=1 -DENABLE_SESSION_SERVICE=1 -DENABLE_THEMES=1 -DENABLE_BACKGROUND=1 -DENABLE_AUTOMATION=1 -DENABLE_GOOGLE_NOW=1 -DENABLE_LANGUAGE_DETECTION=1 -DENABLE_PRINTING=1 -DENABLE_CAPTIVE_PORTAL_DETECTION=1 -DGL_GLEXT_PROTOTYPES &apos;-DWEBCORE_NAVIGATOR_VENDOR=&quot;Google Inc.&quot;&apos; -DWEBKIT_IMPLEMENTATION=1 -DENABLE_3D_PLUGIN=1 -DENABLE_BATTERY_STATUS=0 -DENABLE_BLOB=1 -DENABLE_BLOB_SLICE=1 -DENABLE_CHANNEL_MESSAGING=1 -DENABLE_CSP_NEXT=1 -DENABLE_CSS3_CONDITIONAL_RULES=0 -DENABLE_CSS3_TEXT=0 -DENABLE_CSS_BOX_DECORATION_BREAK=1 -DENABLE_CSS_COMPOSITING=0 -DENABLE_CSS_DEVICE_ADAPTATION=0 -DENABLE_CSS_EXCLUSIONS=1 -DENABLE_CSS_FILTERS=1 -DENABLE_CSS_IMAGE_SET=1 -DENABLE_CSS_IMAGE_RESOLUTION=0 -DENABLE_CSS_REGIONS=1 -DENABLE_CSS_SHADERS=1 -DENABLE_CSS_TRANSFORMS_ANIMATIONS_TRANSITIONS_UNPREFIXED=1 -DENABLE_CSS_VARIABLES=1 -DENABLE_CSS_STICKY_POSITION=1 -DENABLE_CUSTOM_SCHEME_HANDLER=0 -DENABLE_DASHBOARD_SUPPORT=0 -DENABLE_DATA_TRANSFER_ITEMS=1 -DENABLE_DETAILS_ELEMENT=1 -DENABLE_DEVICE_ORIENTATION=1 -DENABLE_DIALOG_ELEMENT=1 -DENABLE_DIRECTORY_UPLOAD=1 -DENABLE_DOWNLOAD_ATTRIBUTE=1 -DENABLE_DRAGGABLE_REGION=1 -DENABLE_ENCRYPTED_MEDIA=1 -DENABLE_FILE_SYSTEM=1 -DENABLE_FILTERS=1 -DENABLE_FULLSCREEN_API=1 -DENABLE_GAMEPAD=1 -DENABLE_GEOLOCATION=1 -DENABLE_GESTURE_EVENTS=1 -DENABLE_ICONDATABASE=0 -DENABLE_IFRAME_SEAMLESS=1 -DENABLE_INDEXED_DATABASE=1 -DENABLE_INPUT_TYPE_DATE=1 -DENABLE_INPUT_TYPE_DATETIME=1 -DENABLE_INPUT_TYPE_DATETIMELOCAL=1 -DENABLE_INPUT_TYPE_MONTH=1 -DENABLE_INPUT_TYPE_TIME=1 -DENABLE_JAVASCRIPT_DEBUGGER=1 -DENABLE_JAVASCRIPT_I18N_API=1 -DENABLE_LEGACY_CSS_VENDOR_PREFIXES=0 -DENABLE_LEGACY_VIEWPORT_ADAPTION=1 -DENABLE_LEGACY_VENDOR_PREFIXES=0 -DENABLE_LEGACY_WEB_AUDIO=1 -DENABLE_LINK_PREFETCH=1 -DENABLE_LINK_PRERENDER=1 -DENABLE_MATHML=1 -DENABLE_MEDIA_SOURCE=1 -DENABLE_MEDIA_STATISTICS=1 -DENABLE_MEDIA_STREAM=1 -DENABLE_METER_ELEMENT=1 -DENABLE_MHTML=1 -DENABLE_MICRODATA=0 -DENABLE_MOUSE_CURSOR_SCALE=1 -DENABLE_MUTATION_OBSERVERS=1 -DENABLE_NAVIGATOR_CONTENT_UTILS=1 -DENABLE_PAGE_VISIBILITY_API=1 -DENABLE_PERFORMANCE_TIMELINE=1 -DENABLE_POINTER_LOCK=1 -DENABLE_PROGRESS_ELEMENT=1 -DENABLE_PROXIMITY_EVENTS=0 -DENABLE_QUOTA=1 -DENABLE_REQUEST_ANIMATION_FRAME=1 -DENABLE_REQUEST_AUTOCOMPLETE=1 -DENABLE_RESOLUTION_MEDIA_QUERY=0 -DENABLE_RESOURCE_TIMING=1 -DENABLE_RUBY=1 -DENABLE_SANDBOX=1 -DENABLE_SCRIPTED_SPEECH=1 -DENABLE_SHADOW_DOM=1 -DENABLE_SMOOTH_SCROLLING=1 -DENABLE_SQL_DATABASE=1 -DENABLE_STYLE_SCOPED=1 -DENABLE_SVG=1 -DENABLE_SVG_FONTS=1 -DENABLE_TEMPLATE_ELEMENT=1 -DENABLE_TEXT_AUTOSIZING=1 -DENABLE_TOUCH_ADJUSTMENT=1 -DENABLE_TOUCH_EVENTS=1 -DENABLE_TOUCH_ICON_LOADING=0 -DENABLE_TOUCH_EVENT_TRACKING=1 -DENABLE_TOUCH_SLIDER=1 -DENABLE_USER_TIMING=1 -DENABLE_V8_SCRIPT_DEBUG_SERVER=1 -DENABLE_VIDEO=1 -DENABLE_VIDEO_TRACK=1 -DENABLE_VIEWPORT=1 -DENABLE_WEBGL=1 -DENABLE_WEB_SOCKETS=1 -DENABLE_WEB_TIMING=1 -DENABLE_WORKERS=1 -DENABLE_XHR_RESPONSE_BLOB=1 -DENABLE_XHR_TIMEOUT=0 -DENABLE_XSLT=1 -DWTF_USE_LEVELDB=1 -DWTF_USE_BUILTIN_UTF8_CODEC=1 -DWTF_USE_OPENTYPE_SANITIZER=1 -DWTF_USE_RTL_SCROLLBAR=1 -DWTF_USE_SKIA_TEXT=1 -DWTF_USE_WEBP=1 -DWTF_USE_WEBKIT_IMAGE_DECODERS=1 -DENABLE_ACCELERATED_OVERFLOW_SCROLLING=0 -DENABLE_CALENDAR_PICKER=1 -DENABLE_DATALIST_ELEMENT=1 -DENABLE_INPUT_SPEECH=1 -DENABLE_INPUT_TYPE_COLOR=1 -DENABLE_INPUT_TYPE_WEEK=1 -DENABLE_INPUT_MULTIPLE_FIELDS_UI=1 -DENABLE_LEGACY_NOTIFICATIONS=1 -DENABLE_MEDIA_CAPTURE=0 -DENABLE_NOTIFICATIONS=1 -DENABLE_ORIENTATION_EVENTS=0 -DENABLE_PAGE_POPUP=1 -DENABLE_SHARED_WORKERS=1 -DENABLE_WEB_AUDIO=1 -DENABLE_3D_RENDERING=1 -DENABLE_ACCELERATED_2D_CANVAS=1 -DWTF_USE_ACCELERATED_COMPOSITING=1 -DWTF_USE_WEBAUDIO_FFMPEG=1 -DENABLE_OPENTYPE_VERTICAL=1 -DWTF_USE_HARFBUZZ_NG=1 -DENABLE_DEFAULT_RENDER_THEME=1 -DBUILDING_CHROMIUM__=1 -DWTF_USE_PTHREADS=1 -DU_USING_ICU_NAMESPACE=0 -DGURL_DLL -DSK_BUILD_NO_IMAGE_ENCODE -DSK_DEFERRED_CANVAS_USES_GPIPE=1 &apos;-DGR_GL_CUSTOM_SETUP_HEADER=&quot;GrGLConfig_chrome.h&quot;&apos; -DGR_AGGRESSIVE_SHADER_OPTS=1 -DSK_USE_POSIX_THREADS -DGR_DLL -DSKIA_DLL -DCHROME_PNG_WRITE_SUPPORT -DPNG_USER_CONFIG -DLIBXML_STATIC -DLIBXSLT_STATIC -DV8_SHARED -DUSING_V8_SHARED -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DDYNAMIC_ANNOTATIONS_ENABLED=1 -DWTF_USE_DYNAMIC_ANNOTATIONS=1 -D_DEBUG -I../../third_party/icu/public/common -I../../third_party/icu/public/i18n -I../../third_party/khronos -I../../gpu -I../.. -I../../third_party -I../../third_party/WebKit/Source/Platform/chromium -Iobj/third_party/WebKit/Source/WebCore/WebCore.gyp/webcore_remaining.gen -I../../third_party/WebKit/Source/WebCore -I../../third_party/WebKit/Source -I../../third_party/WebKit/Source/WebCore/Modules/battery -I../../third_party/WebKit/Source/WebCore/Modules/filesystem -I../../third_party/WebKit/Source/WebCore/Modules/filesystem/chromium -I../../third_party/WebKit/Source/WebCore/Modules/gamepad -I../../third_party/WebKit/Source/WebCore/Modules/geolocation -I../../third_party/WebKit/Source/WebCore/Modules/intents -I../../third_party/WebKit/Source/WebCore/Modules/indexeddb -I../../third_party/WebKit/Source/WebCore/Modules/mediasource -I../../third_party/WebKit/Source/WebCore/Modules/mediastream -I../../third_party/WebKit/Source/WebCore/Modules/navigatorcontentutils -I../../third_party/WebKit/Source/WebCore/Modules/notifications -I../../third_party/WebKit/Source/WebCore/Modules/quota -I../../third_party/WebKit/Source/WebCore/Modules/speech -I../../third_party/WebKit/Source/WebCore/Modules/webaudio -I../../third_party/WebKit/Source/WebCore/Modules/webdatabase -I../../third_party/WebKit/Source/WebCore/Modules/webdatabase/chromium -I../../third_party/WebKit/Source/WebCore/Modules/websockets -I../../third_party/WebKit/Source/WebCore/accessibility -I../../third_party/WebKit/Source/WebCore/accessibility/chromium -I../../third_party/WebKit/Source/WebCore/bindings -I../../third_party/WebKit/Source/WebCore/bindings/generic -I../../third_party/WebKit/Source/WebCore/bindings/v8 -I../../third_party/WebKit/Source/WebCore/bindings/v8/custom -I../../third_party/WebKit/Source/WebCore/bridge -I../../third_party/WebKit/Source/WebCore/bridge/jni -I../../third_party/WebKit/Source/WebCore/bridge/jni/v8 -I../../third_party/WebKit/Source/WebCore/css -I../../third_party/WebKit/Source/WebCore/dom -I../../third_party/WebKit/Source/WebCore/dom/default -I../../third_party/WebKit/Source/WebCore/editing -I../../third_party/WebKit/Source/WebCore/fileapi -I../../third_party/WebKit/Source/WebCore/history -I../../third_party/WebKit/Source/WebCore/html -I../../third_party/WebKit/Source/WebCore/html/canvas -I../../third_party/WebKit/Source/WebCore/html/parser -I../../third_party/WebKit/Source/WebCore/html/shadow -I../../third_party/WebKit/Source/WebCore/html/track -I../../third_party/WebKit/Source/WebCore/inspector -I../../third_party/WebKit/Source/WebCore/loader -I../../third_party/WebKit/Source/WebCore/loader/appcache -I../../third_party/WebKit/Source/WebCore/loader/archive -I../../third_party/WebKit/Source/WebCore/loader/archive/cf -I../../third_party/WebKit/Source/WebCore/loader/archive/mhtml -I../../third_party/WebKit/Source/WebCore/loader/cache -I../../third_party/WebKit/Source/WebCore/loader/icon -I../../third_party/WebKit/Source/WebCore/mathml -I../../third_party/WebKit/Source/WebCore/page -I../../third_party/WebKit/Source/WebCore/page/animation -I../../third_party/WebKit/Source/WebCore/page/chromium -I../../third_party/WebKit/Source/WebCore/page/scrolling -I../../third_party/WebKit/Source/WebCore/page/scrolling/chromium -I../../third_party/WebKit/Source/WebCore/platform -I../../third_party/WebKit/Source/WebCore/platform/animation -I../../third_party/WebKit/Source/WebCore/platform/audio -I../../third_party/WebKit/Source/WebCore/platform/audio/chromium -I../../third_party/WebKit/Source/WebCore/platform/chromium -I../../third_party/WebKit/Source/WebCore/platform/chromium/support -I../../third_party/WebKit/Source/WebCore/platform/graphics -I../../third_party/WebKit/Source/WebCore/platform/graphics/chromium -I../../third_party/WebKit/Source/WebCore/platform/graphics/chromium/cc -I../../third_party/WebKit/Source/WebCore/platform/graphics/cpu/arm -I../../third_party/WebKit/Source/WebCore/platform/graphics/cpu/arm/filters -I../../third_party/WebKit/Source/WebCore/platform/graphics/filters -I../../third_party/WebKit/Source/WebCore/platform/graphics/filters/skia -I../../third_party/WebKit/Source/WebCore/platform/graphics/gpu -I../../third_party/WebKit/Source/WebCore/platform/graphics/opentype -I../../third_party/WebKit/Source/WebCore/platform/graphics/skia -I../../third_party/WebKit/Source/WebCore/platform/graphics/transforms -I../../third_party/WebKit/Source/WebCore/platform/image-decoders -I../../third_party/WebKit/Source/WebCore/platform/image-decoders/bmp -I../../third_party/WebKit/Source/WebCore/platform/image-decoders/gif -I../../third_party/WebKit/Source/WebCore/platform/image-decoders/ico -I../../third_party/WebKit/Source/WebCore/platform/image-decoders/jpeg -I../../third_party/WebKit/Source/WebCore/platform/image-decoders/png -I../../third_party/WebKit/Source/WebCore/platform/image-decoders/skia -I../../third_party/WebKit/Source/WebCore/platform/image-decoders/webp -I../../third_party/WebKit/Source/WebCore/platform/image-encoders/skia -I../../third_party/WebKit/Source/WebCore/platform/leveldb -I../../third_party/WebKit/Source/WebCore/platform/mediastream -I../../third_party/WebKit/Source/WebCore/platform/mediastream/chromium -I../../third_party/WebKit/Source/WebCore/platform/mock -I../../third_party/WebKit/Source/WebCore/platform/network -I../../third_party/WebKit/Source/WebCore/platform/network/chromium -I../../third_party/WebKit/Source/WebCore/platform/sql -I../../third_party/WebKit/Source/WebCore/platform/text -I../../third_party/WebKit/Source/WebCore/platform/text/transcoder -I../../third_party/WebKit/Source/WebCore/plugins -I../../third_party/WebKit/Source/WebCore/plugins/chromium -I../../third_party/WebKit/Source/WebCore/rendering -I../../third_party/WebKit/Source/WebCore/rendering/mathml -I../../third_party/WebKit/Source/WebCore/rendering/style -I../../third_party/WebKit/Source/WebCore/rendering/svg -I../../third_party/WebKit/Source/WebCore/storage -I../../third_party/WebKit/Source/WebCore/svg -I../../third_party/WebKit/Source/WebCore/svg/animation -I../../third_party/WebKit/Source/WebCore/svg/graphics -I../../third_party/WebKit/Source/WebCore/svg/graphics/filters -I../../third_party/WebKit/Source/WebCore/svg/properties -I../../third_party/WebKit/Source/ThirdParty/glu -I../../third_party/WebKit/Source/WebCore/workers -I../../third_party/WebKit/Source/WebCore/xml -I../../third_party/WebKit/Source/WebCore/xml/parser -I../../third_party/WebKit/Source/WebCore/platform/graphics/harfbuzz -I../../third_party/WebKit/Source/WebCore/platform/graphics/harfbuzz/ng -I../../third_party/angle/include/GLSLANG -Igen/webkit -Igen/webkit/bindings -I../../third_party/ffmpeg -I../../third_party/WebKit/Source/WTF -I../../third_party/WebKit/Source/JavaScriptCore -I../../skia/config -I../../third_party/skia/src/core -I../../third_party/skia/include/config -I../../third_party/skia/include/core -I../../third_party/skia/include/effects -I../../third_party/skia/include/pdf -I../../third_party/skia/include/gpu -I../../third_party/skia/include/gpu/gl -I../../third_party/skia/include/pipe -I../../third_party/skia/include/ports -I../../third_party/skia/include/utils -I../../skia/ext -I../../third_party/iccjpeg -I../../third_party/libwebp -I../../third_party/libpng -I../../third_party/libxml/linux/include -I../../third_party/libxml/src/include -I../../third_party/libxslt -I../../third_party/npapi -I../../third_party/npapi/bindings -I../../third_party/ots/include -I../../third_party/qcms/src -I../../third_party/sqlite -I../../third_party/zlib -I../../v8/include -I../../third_party/libjpeg_turbo -I../../third_party/leveldatabase/src/include -I../../third_party/leveldatabase/src -Wglobal-constructors -Wunused-parameter -fstack-protector --param=ssp-buffer-size=4 -Werror -pthread -fno-exceptions -fno-strict-aliasing -Wall -Wno-unused-parameter -Wno-missing-field-initializers -fvisibility=hidden -pipe -fPIC -Wheader-hygiene -Wno-unused-function -Wno-char-subscripts -Wno-unnamed-type-template-args -Wno-c++11-extensions -Wno-covered-switch-default -Xclang -load -Xclang /mnt/scratch0/b_used/build/slave/linux_clang/build/src/tools/clang/scripts/../../../third_party/llvm-build/Release+Asserts/lib/libFindBadConstructs.so -Xclang -add-plugin -Xclang find-bad-constructs -Xclang -plugin-arg-find-bad-constructs -Xclang skip-virtuals-in-implementations -fcolor-diagnostics -fno-strict-aliasing -pthread -D_REENTRANT -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/directfb -I/usr/include/libpng12 -Wexit-time-destructors -O0 -g -g0 -fno-rtti -fno-threadsafe-statics -fvisibility-inlines-hidden -Wsign-compare  -c ../../third_party/WebKit/Source/WebCore/loader/CookieJar.cpp -o obj/third_party/WebKit/Source/WebCore/loader/webcore_remaining.CookieJar.o
../../third_party/WebKit/Source/WebCore/loader/CookieJar.cpp:75:26: error: copying parameter of type &apos;WebCore::NetworkStorageSession&apos; invokes deleted constructor
    return cookiesForDOM(SESSION(document), document-&gt;firstPartyForCookies(), url);
                         ^~~~~~~~~~~~~~~~~
../../third_party/WebKit/Source/WebCore/loader/CookieJar.cpp:67:27: note: expanded from macro &apos;SESSION&apos;
#define SESSION(document) NetworkStorageSession(networkingContext(document))
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../third_party/WebKit/Source/WebCore/platform/network/NetworkStorageSession.h:42:26: note: function has been explicitly marked deleted here
    WTF_MAKE_NONCOPYABLE(NetworkStorageSession); WTF_MAKE_FAST_ALLOCATED;
                         ^
../../third_party/WebKit/Source/WTF/wtf/Noncopyable.h:29:13: note: expanded from macro &apos;WTF_MAKE_NONCOPYABLE&apos;
            ClassName(const ClassName&amp;) = delete; \
            ^
../../third_party/WebKit/Source/WebCore/loader/CookieJar.cpp:84:23: error: copying parameter of type &apos;WebCore::NetworkStorageSession&apos; invokes deleted constructor
    setCookiesFromDOM(SESSION(document), document-&gt;firstPartyForCookies(), url, cookieString);
                      ^~~~~~~~~~~~~~~~~
../../third_party/WebKit/Source/WebCore/loader/CookieJar.cpp:67:27: note: expanded from macro &apos;SESSION&apos;
#define SESSION(document) NetworkStorageSession(networkingContext(document))
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../third_party/WebKit/Source/WebCore/platform/network/NetworkStorageSession.h:42:26: note: function has been explicitly marked deleted here
    WTF_MAKE_NONCOPYABLE(NetworkStorageSession); WTF_MAKE_FAST_ALLOCATED;
                         ^
../../third_party/WebKit/Source/WTF/wtf/Noncopyable.h:29:13: note: expanded from macro &apos;WTF_MAKE_NONCOPYABLE&apos;
            ClassName(const ClassName&amp;) = delete; \
            ^
../../third_party/WebKit/Source/WebCore/loader/CookieJar.cpp:93:27: error: copying parameter of type &apos;WebCore::NetworkStorageSession&apos; invokes deleted constructor
    return cookiesEnabled(SESSION(document), document-&gt;firstPartyForCookies(), document-&gt;cookieURL());
                          ^~~~~~~~~~~~~~~~~
../../third_party/WebKit/Source/WebCore/loader/CookieJar.cpp:67:27: note: expanded from macro &apos;SESSION&apos;
#define SESSION(document) NetworkStorageSession(networkingContext(document))
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../third_party/WebKit/Source/WebCore/platform/network/NetworkStorageSession.h:42:26: note: function has been explicitly marked deleted here
    WTF_MAKE_NONCOPYABLE(NetworkStorageSession); WTF_MAKE_FAST_ALLOCATED;
                         ^
../../third_party/WebKit/Source/WTF/wtf/Noncopyable.h:29:13: note: expanded from macro &apos;WTF_MAKE_NONCOPYABLE&apos;
            ClassName(const ClassName&amp;) = delete; \
            ^
../../third_party/WebKit/Source/WebCore/loader/CookieJar.cpp:102:42: error: copying parameter of type &apos;WebCore::NetworkStorageSession&apos; invokes deleted constructor
    return cookieRequestHeaderFieldValue(SESSION(document), document-&gt;firstPartyForCookies(), url);
                                         ^~~~~~~~~~~~~~~~~
../../third_party/WebKit/Source/WebCore/loader/CookieJar.cpp:67:27: note: expanded from macro &apos;SESSION&apos;
#define SESSION(document) NetworkStorageSession(networkingContext(document))
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../third_party/WebKit/Source/WebCore/platform/network/NetworkStorageSession.h:42:26: note: function has been explicitly marked deleted here
    WTF_MAKE_NONCOPYABLE(NetworkStorageSession); WTF_MAKE_FAST_ALLOCATED;
                         ^
../../third_party/WebKit/Source/WTF/wtf/Noncopyable.h:29:13: note: expanded from macro &apos;WTF_MAKE_NONCOPYABLE&apos;
            ClassName(const ClassName&amp;) = delete; \
            ^
../../third_party/WebKit/Source/WebCore/loader/CookieJar.cpp:111:26: error: copying parameter of type &apos;WebCore::NetworkStorageSession&apos; invokes deleted constructor
    return getRawCookies(SESSION(document), document-&gt;firstPartyForCookies(), url, cookies);
                         ^~~~~~~~~~~~~~~~~
../../third_party/WebKit/Source/WebCore/loader/CookieJar.cpp:67:27: note: expanded from macro &apos;SESSION&apos;
#define SESSION(document) NetworkStorageSession(networkingContext(document))
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../third_party/WebKit/Source/WebCore/platform/network/NetworkStorageSession.h:42:26: note: function has been explicitly marked deleted here
    WTF_MAKE_NONCOPYABLE(NetworkStorageSession); WTF_MAKE_FAST_ALLOCATED;
                         ^
../../third_party/WebKit/Source/WTF/wtf/Noncopyable.h:29:13: note: expanded from macro &apos;WTF_MAKE_NONCOPYABLE&apos;
            ClassName(const ClassName&amp;) = delete; \
            ^
../../third_party/WebKit/Source/WebCore/loader/CookieJar.cpp:120:18: error: copying parameter of type &apos;WebCore::NetworkStorageSession&apos; invokes deleted constructor
    deleteCookie(SESSION(document), url, cookieName);
                 ^~~~~~~~~~~~~~~~~
../../third_party/WebKit/Source/WebCore/loader/CookieJar.cpp:67:27: note: expanded from macro &apos;SESSION&apos;
#define SESSION(document) NetworkStorageSession(networkingContext(document))
                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../third_party/WebKit/Source/WebCore/platform/network/NetworkStorageSession.h:42:26: note: function has been explicitly marked deleted here
    WTF_MAKE_NONCOPYABLE(NetworkStorageSession); WTF_MAKE_FAST_ALLOCATED;
                         ^
../../third_party/WebKit/Source/WTF/wtf/Noncopyable.h:29:13: note: expanded from macro &apos;WTF_MAKE_NONCOPYABLE&apos;
            ClassName(const ClassName&amp;) = delete; \
            ^
6 errors generated.
ninja: build stopped: subcommand failed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796730</commentid>
    <comment_count>53</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-12-23 01:04:41 -0800</bug_when>
    <thetext>Unsure why it complains, there should be no copying when binding a temporary to a const reference.

Since EWS isn&apos;t saying anything, someone with a chromium build will need to fix. I have three suggestions:

- check clang version, perhaps this is a compiler bug that has been fixed;

- ifdef out WTF_MAKE_NONCOPYABLE for platforms that just wrap m_context;

- or better, implement NetworkStorageSession in a proper way - wrapping m_context is just a hack to keep other platforms building.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796739</commentid>
    <comment_count>54</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-12-23 06:22:11 -0800</bug_when>
    <thetext>Similar build failure on Qt Mac build, see https://bugs.webkit.org/show_bug.cgi?id=105686 for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797626</commentid>
    <comment_count>55</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-27 10:50:16 -0800</bug_when>
    <thetext>This appears to have set the bots on fire.

Before: http://build.webkit.org/results/Apple%20Lion%20Debug%20WK1%20(Tests)/r138412%20(5567)/results.html
After: http://build.webkit.org/results/Apple%20Lion%20Debug%20WK1%20(Tests)/r138413%20(5568)/results.html

Locally, I&apos;m getting crashes on each test run.

The crash always seems to look like:


ASSERTION FAILED: mainThreadPthread
/Volumes/Data/fromMiniMe/secondary/OpenSource/Source/WTF/wtf/mac/MainThreadMac.mm(132) : bool WTF::isMainThread()
1   0x100787e18 WTF::isMainThread()
2   0x1034b3f3d _ZN7WebCoreL28defaultNetworkStorageSessionEv
3   0x1034b3ecd WebCore::NetworkStorageSession::switchToNewTestingSession()
4   0x10141b94a +[WebPreferences(WebPrivate) _switchNetworkLoaderToNewTestingSession]
5   0x10001be2e _ZL39setDefaultsToConsistentValuesForTestingv
6   0x10001668f _ZL35prepareConsistentTestingEnvironmentv
7   0x1000161c3 dumpRenderTree(int, char const**)
8   0x1000186c9 main
9   0x1000021c4 start
10  0x2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797628</commentid>
    <comment_count>56</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-27 11:07:59 -0800</bug_when>
    <thetext>(In reply to comment #55)
&gt; This appears to have set the bots on fire.
&gt; 
&gt; Before: http://build.webkit.org/results/Apple%20Lion%20Debug%20WK1%20(Tests)/r138412%20(5567)/results.html
&gt; After: http://build.webkit.org/results/Apple%20Lion%20Debug%20WK1%20(Tests)/r138413%20(5568)/results.html
&gt; 
&gt; Locally, I&apos;m getting crashes on each test run.
&gt; 
&gt; The crash always seems to look like:
&gt; 
&gt; 
&gt; ASSERTION FAILED: mainThreadPthread
&gt; /Volumes/Data/fromMiniMe/secondary/OpenSource/Source/WTF/wtf/mac/MainThreadMac.mm(132) : bool WTF::isMainThread()
&gt; 1   0x100787e18 WTF::isMainThread()
&gt; 2   0x1034b3f3d _ZN7WebCoreL28defaultNetworkStorageSessionEv
&gt; 3   0x1034b3ecd WebCore::NetworkStorageSession::switchToNewTestingSession()
&gt; 4   0x10141b94a +[WebPreferences(WebPrivate) _switchNetworkLoaderToNewTestingSession]
&gt; 5   0x10001be2e _ZL39setDefaultsToConsistentValuesForTestingv
&gt; 6   0x10001668f _ZL35prepareConsistentTestingEnvironmentv
&gt; 7   0x1000161c3 dumpRenderTree(int, char const**)
&gt; 8   0x1000186c9 main
&gt; 9   0x1000021c4 start
&gt; 10  0x2

Looks like this is fixed by http://trac.webkit.org/changeset/138510</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799088</commentid>
    <comment_count>57</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2013-01-02 16:58:10 -0800</bug_when>
    <thetext>8 tests crashing on Win7 port as a result of this patch.

See the http security tests.

http://build.webkit.org/results/Apple%20Win%207%20Release%20(Tests)/r138413%20(31145)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799632</commentid>
    <comment_count>58</comment_count>
    <who name="Roger Fong">roger_fong</who>
    <bug_when>2013-01-03 13:41:27 -0800</bug_when>
    <thetext>(In reply to comment #57)
&gt; 8 tests crashing on Win7 port as a result of this patch.
&gt; 
&gt; See the http security tests.
&gt; 
&gt; http://build.webkit.org/results/Apple%20Win%207%20Release%20(Tests)/r138413%20(31145)/results.html

https://bugs.webkit.org/show_bug.cgi?id=106032 tracking failures</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180590</attachid>
            <date>2012-12-21 21:42:24 -0800</date>
            <delta_ts>2012-12-21 22:22:43 -0800</delta_ts>
            <desc>patch for EWS</desc>
            <filename>StorageSession.txt</filename>
            <type>text/plain</type>
            <size>172402</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjAyOCw2ICsyMDI4LDcgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRUUFZhbGlkYXRpb24u
Y3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcAogICAgIHBsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCisgICAgcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29u
dGVudFR5cGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuY3BwCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNTc2MCw2ICs1NzYwLDcgQEAgd2ViY29y
ZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Byb3h5U2VydmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0YXRlTm90aWZpZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdGF0ZU5vdGlmaWVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9u
IDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAg
LTEwNjEsNiArMTA2MSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRU
UFZhbGlkYXRpb24uY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwIFwK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCBcCisgICAgcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcCBcCiAgICAgcGxhdGZv
cm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsv
UHJvdGVjdGlvblNwYWNlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5j
cHAgXApAQCAtMjI3Myw2ICsyMjc0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0
d29yay9IVFRQVmFsaWRhdGlvbi5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBTdGF0dXND
b2Rlcy5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmluZy5oIFwKKyAgICBwbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIFwKICAgICBwbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtpbmdDb250ZXh0LmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
YXRlTm90aWZpZXIuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5o
IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjA3LDcgKzIwNyw3IEBA
IF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yRDFFdgogX19aTjdXZWJDb3JlMTJjYWNoZVN0b3Jh
Z2VFdgogX19aTjdXZWJDb3JlMTJjcmVhdGVNYXJrdXBFUEtOU180Tm9kZUVOU18xM0VDaGlsZHJl
bk9ubHlFUE4zV1RGNlZlY3RvcklQUzBfTG0wRUVFTlNfMTNFQWJzb2x1dGVVUkxzRVBOUzVfSU5T
XzEzUXVhbGlmaWVkTmFtZUVMbTBFRUUKIF9fWk43V2ViQ29yZTEyY3JlYXRlTWFya3VwRVBLTlNf
NVJhbmdlRVBOM1dURjZWZWN0b3JJUE5TXzROb2RlRUxtMEVFRU5TXzIzRUFubm90YXRlRm9ySW50
ZXJjaGFuZ2VFYk5TXzEzRUFic29sdXRlVVJMc0UKLV9fWk43V2ViQ29yZTEyZGVsZXRlQ29va2ll
RVBOU18xN05ldHdvcmtpbmdDb250ZXh0RVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdFCitfX1pO
N1dlYkNvcmUxMmRlbGV0ZUNvb2tpZUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNf
NEtVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMmdjQ29udHJvbGxlckV2CiBfX1pO
N1dlYkNvcmUxMmljb25EYXRhYmFzZUV2CiBfX1pON1dlYkNvcmUxMnRvVWludDhBcnJheUVOM0pT
QzdKU1ZhbHVlRQpAQCAtMjM2LDEwICsyMzYsMTAgQEAgX19aTjdXZWJDb3JlMTNSZXNvdXJjZUVy
cm9yQzFFUDdOU0Vycm9yCiBfX1pON1dlYkNvcmUxM1Jlc291cmNlRXJyb3JDMUVQOV9fQ0ZFcnJv
cgogX19aTjdXZWJDb3JlMTNTdHlsZWRFbGVtZW50MjJzZXRJbmxpbmVTdHlsZVByb3BlcnR5RU5T
XzEzQ1NTUHJvcGVydHlJREVSS04zV1RGNlN0cmluZ0ViCiBfX1pON1dlYkNvcmUxM1N0eWxlZEVs
ZW1lbnQyMnNldElubGluZVN0eWxlUHJvcGVydHlFTlNfMTNDU1NQcm9wZXJ0eUlERWROU18xN0NT
U1ByaW1pdGl2ZVZhbHVlOVVuaXRUeXBlc0ViCi1fX1pON1dlYkNvcmUxM2Nvb2tpZXNGb3JET01F
UE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VSTEVTNF8KK19fWk43V2ViQ29yZTEzY29v
a2llc0ZvckRPTUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfNEtVUkxFUzVfCiBf
X1pON1dlYkNvcmUxM2NyZWF0ZVdyYXBwZXJFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUds
b2JhbE9iamVjdEVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUxM2RpcmVjdG9yeU5hbWVFUktOM1dU
RjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxM2dldFJhd0Nvb2tpZXNFUE5TXzE3TmV0d29ya2luZ0Nv
bnRleHRFUktOU180S1VSTEVTNF9STjNXVEY2VmVjdG9ySU5TXzZDb29raWVFTG0wRUVFCitfX1pO
N1dlYkNvcmUxM2dldFJhd0Nvb2tpZXNFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05T
XzRLVVJMRVM1X1JOM1dURjZWZWN0b3JJTlNfNkNvb2tpZUVMbTBFRUUKIF9fWk43V2ViQ29yZTEz
dG9BcnJheUJ1ZmZlckVOM0pTQzdKU1ZhbHVlRQogX19aTjdXZWJDb3JlMTN0b0hUTUxFbGVtZW50
RVBOU18yMUZvcm1Bc3NvY2lhdGVkRWxlbWVudEUKIF9fWk43V2ViQ29yZTEzdG9KU0RPTVdpbmRv
d0VOM0pTQzdKU1ZhbHVlRQpAQCAtMjU0LDYgKzI1NCwxMCBAQCBfX1pON1dlYkNvcmUxNERvY3Vt
ZW50TG9hZGVyMTNhdHRhY2hUb0ZyCiBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTVkZXRh
Y2hGcm9tRnJhbWVFdgogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjE4YWRkQXJjaGl2ZVJl
c291cmNlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzE1QXJjaGl2ZVJlc291cmNlRUVFCiBfX1pON1dl
YkNvcmUxNFJlc291cmNlTG9hZGVyMzJkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUVS
S05TXzIzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VFCitfX1pON1dlYkNvcmUxNGNvb2tpZXNFbmFi
bGVkRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU180S1VSTEVTNV8KK19fWk43V2Vi
Q29yZTE3c2V0Q29va2llc0Zyb21ET01FUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05T
XzRLVVJMRVM1X1JLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMjFOZXR3b3JrU3RvcmFnZVNl
c3Npb24yMWRlZmF1bHRTdG9yYWdlU2Vzc2lvbkV2CitfX1pON1dlYkNvcmUyMU5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjI1c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbkV2CiBfX1pON1dlYkNvcmUyMVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTExZGVzZXJpYWxpemVFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMxXzE0
SlNHbG9iYWxPYmplY3RFUE4zV1RGNlZlY3RvcklOUzZfNlJlZlB0cklOU18xMU1lc3NhZ2VQb3J0
RUVFTG0xRUVFTlNfMjJTZXJpYWxpemF0aW9uRXJyb3JNb2RlRQogX19aTjdXZWJDb3JlMjFTZXJp
YWxpemVkU2NyaXB0VmFsdWU2Y3JlYXRlRVBOM0pTQzlFeGVjU3RhdGVFTlMxXzdKU1ZhbHVlRVBO
M1dURjZWZWN0b3JJTlM1XzZSZWZQdHJJTlNfMTFNZXNzYWdlUG9ydEVFRUxtMUVFRVBOUzZfSU5T
N19JTlM1XzExQXJyYXlCdWZmZXJFRUVMbTFFRUVOU18yMlNlcmlhbGl6YXRpb25FcnJvck1vZGVF
CiBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTZjcmVhdGVFUktOM1dURjZTdHJp
bmdFCkBAIC0yODQsNyArMjg4LDYgQEAgX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjlzZWxl
Y3RBbGxFdgogX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbkMxRVBOU181RnJhbWVFCiBfX1pO
N1dlYkNvcmUxNExvYWRlclN0cmF0ZWd5MjFyZXNvdXJjZUxvYWRTY2hlZHVsZXJFdgogX19aTjdX
ZWJDb3JlMTRQbHVnaW5Eb2N1bWVudDEwcGx1Z2luTm9kZUV2Ci1fX1pON1dlYkNvcmUxNGNvb2tp
ZXNFbmFibGVkRVBOU18xN05ldHdvcmtpbmdDb250ZXh0RVJLTlNfNEtVUkxFUzRfCiBfX1pOSzdX
ZWJDb3JlNUZyYW1lMjV0cmFja2VkUmVwYWludFJlY3RzQXNUZXh0RXYKIF9fWk43V2ViQ29yZTlG
cmFtZVZpZXcxN3NldFRyYWNrc1JlcGFpbnRzRWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMHJl
c2V0VHJhY2tlZFJlcGFpbnRzRXYKQEAgLTQ4OCw3ICs0OTEsNyBAQCBfX1pON1dlYkNvcmUxNlZp
c2libGVTZWxlY3Rpb25DMUVSS05TXzE1CiBfX1pON1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb25D
MUVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRWIKIF9fWk43V2ViQ29yZTE2Y3JlYXRlRnVsbE1hcmt1
cEVQS05TXzROb2RlRQogX19aTjdXZWJDb3JlMTZjcmVhdGVGdWxsTWFya3VwRVBLTlNfNVJhbmdl
RQotX19aTjdXZWJDb3JlMTZkZWxldGVBbGxDb29raWVzRVBOU18xN05ldHdvcmtpbmdDb250ZXh0
RQorX19aTjdXZWJDb3JlMTZkZWxldGVBbGxDb29raWVzRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNl
c3Npb25FCiBfX1pON1dlYkNvcmUxNmVuY2xvc2luZ0ludFJlY3RFUktOU185RmxvYXRSZWN0RQog
X19aTjdXZWJDb3JlMTZpc0VuZE9mUGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNf
MjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCiBfX1pON1dlYkNvcmUxNmlzVXNlclZpc2li
bGVVUkxFUDhOU1N0cmluZwpAQCAtNTExLDcgKzUxNCw2IEBAIF9fWk43V2ViQ29yZTE3U3VicmVz
b3VyY2VMb2FkZXI2Y3JlYXRlRVAKIF9fWk43V2ViQ29yZTE3Vmlld3BvcnRBcmd1bWVudHMxOWRl
cHJlY2F0ZWRUYXJnZXREUElFCiBfX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0dXJlRVBOU18x
N0pTRE9NR2xvYmFsT2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNsYXNzSW5mb0UKIF9f
Wk43V2ViQ29yZTE3b3BlblRlbXBvcmFyeUZpbGVFUktOM1dURjZTdHJpbmdFUmkKLV9fWk43V2Vi
Q29yZTE3c2V0Q29va2llc0Zyb21ET01FUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VS
TEVTNF9SS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE3dXNlclZpc2libGVTdHJpbmdFUDVO
U1VSTAogX19aTjdXZWJDb3JlMThET01XaW5kb3dFeHRlbnNpb25DMUVQTlNfNUZyYW1lRVBOU18x
NURPTVdyYXBwZXJXb3JsZEUKIF9fWk43V2ViQ29yZTE4SFRNTENvbnRlbnRFbGVtZW50NmNyZWF0
ZUVQTlNfOERvY3VtZW50RQpAQCAtNTk1LDYgKzU5Nyw3IEBAIF9fWk43V2ViQ29yZTIwcHJvdG9j
b2xJc0phdmFTY3JpcHRFUktOM1cKIF9fWk43V2ViQ29yZTIwU3BhY2VTcGxpdFN0cmluZ0RhdGFE
MUV2CiBfX1pON1dlYkNvcmUyMUJhY2tGb3J3YXJkQ29udHJvbGxlcjExaXRlbUF0SW5kZXhFaQog
X19aTjdXZWJDb3JlMjFNZW1vcnlQcmVzc3VyZUhhbmRsZXI3aW5zdGFsbEV2CitfX1pON1dlYkNv
cmUyMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjI4Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkVS
S04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIxUGxhdGZvcm1LZXlib2FyZEV2ZW50MjRkaXNh
bWJpZ3VhdGVLZXlEb3duRXZlbnRFTlNfMTNQbGF0Zm9ybUV2ZW50NFR5cGVFYgogX19aTjdXZWJD
b3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIxOXN0YXJ0UmVzb3VyY2VMb2FkZXJFUE5TXzE0UmVz
b3VyY2VMb2FkZXJFCiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjIwc2VydmVQ
ZW5kaW5nUmVxdWVzdHNFTlNfMjBSZXNvdXJjZUxvYWRQcmlvcml0eUUKQEAgLTY1MCw3ICs2NTMs
NyBAQCBfX1pON1dlYkNvcmUyM2NyZWF0ZUZyYWdtZW50RnJvbU5vZGVzRVBOCiBfX1pON1dlYkNv
cmUyM2RhdGFGb3JVUkxDb21wb25lbnRUeXBlRVA1TlNVUkxsCiBfX1pON1dlYkNvcmUyM2RlY29k
ZUhvc3ROYW1lV2l0aFJhbmdlRVA4TlNTdHJpbmc4X05TUmFuZ2UKIF9fWk43V2ViQ29yZTIzZW5j
b2RlSG9zdE5hbWVXaXRoUmFuZ2VFUDhOU1N0cmluZzhfTlNSYW5nZQotX19aTjdXZWJDb3JlMjNn
ZXRIb3N0bmFtZXNXaXRoQ29va2llc0VQTlNfMTdOZXR3b3JraW5nQ29udGV4dEVSTjNXVEY3SGFz
aFNldElOUzJfNlN0cmluZ0VOUzJfMTBTdHJpbmdIYXNoRU5TMl8xMEhhc2hUcmFpdHNJUzRfRUVF
RQorX19aTjdXZWJDb3JlMjNnZXRIb3N0bmFtZXNXaXRoQ29va2llc0VSS05TXzIxTmV0d29ya1N0
b3JhZ2VTZXNzaW9uRVJOM1dURjdIYXNoU2V0SU5TM182U3RyaW5nRU5TM18xMFN0cmluZ0hhc2hF
TlMzXzEwSGFzaFRyYWl0c0lTNV9FRUVFCiBfX1pON1dlYkNvcmUyNEJpbmFyeVByb3BlcnR5TGlz
dFdyaXRlcjE3d3JpdGVQcm9wZXJ0eUxpc3RFdgogX19aTjdXZWJDb3JlMjRDYWNoZWRSZXNvdXJj
ZUhhbmRsZUJhc2UxMXNldFJlc291cmNlRVBOU18xNENhY2hlZFJlc291cmNlRQogX19aTjdXZWJD
b3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIxMGZpcnN0Q2hpbGRFdgpAQCAtNjY5LDcgKzY3
Miw3IEBAIF9fWk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyQzIKIF9fWk43V2Vi
Q29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyRDJFdgogX19aTjdXZWJDb3JlMjRjcmVhdGVG
cmFnbWVudEZyb21NYXJrdXBFUE5TXzhEb2N1bWVudEVSS04zV1RGNlN0cmluZ0VTNV9OU18yN0Zy
YWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbkUKIF9fWk43V2ViQ29yZTI0ZGVjb2RlVVJMRXNjYXBl
U2VxdWVuY2VzRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMjRkZWxldGVDb29raWVzRm9y
SG9zdG5hbWVFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOM1dURjZTdHJpbmdFCitfX1pON1dl
YkNvcmUyNGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNz
aW9uRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjRmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b25FUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyNG5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdl
ZEUKIF9fWk43V2ViQ29yZTI1SGlzdG9yeVByb3BlcnR5TGlzdFdyaXRlcjExcmVsZWFzZURhdGFF
dgpAQCAtNjk2LDEwICs2OTksOSBAQCBfX1pON1dlYkNvcmUyN0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvCiBfX1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazE0c2V0T3Jp
ZW50YXRpb25FTjNXVEYxMFBhc3NSZWZQdHJJTlNfMjFEZXZpY2VPcmllbnRhdGlvbkRhdGFFRUUK
IF9fWk43V2ViQ29yZTI3RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrQzFFdgogX19aTjdXZWJD
b3JlMjdzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXNFdgotX19aTjdXZWJDb3JlMjZkZWZhdWx0
Q0ZIVFRQQ29va2llU3RvcmFnZUV2CiBfX1pON1dlYkNvcmUyOGVuY29kZVdpdGhVUkxFc2NhcGVT
ZXF1ZW5jZXNFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyOHJlbW92ZUxhbmd1YWdlQ2hh
bmdlT2JzZXJ2ZXJFUHYKLV9fWk43V2ViQ29yZTI5Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWVFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VSTEVTNF8KK19fWk43V2ViQ29yZTI5
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWVFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lv
bkVSS05TXzRLVVJMRVM1XwogX19aTjdXZWJDb3JlMjlpc0NoYXJhY3RlclNtYXJ0UmVwbGFjZUV4
ZW1wdEVpYgogX19aTjdXZWJDb3JlMzBob3N0TmFtZU5lZWRzRGVjb2RpbmdXaXRoUmFuZ2VFUDhO
U1N0cmluZzhfTlNSYW5nZQogX19aTjdXZWJDb3JlMzBob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRo
UmFuZ2VFUDhOU1N0cmluZzhfTlNSYW5nZQpAQCAtMTMzMCw2ICsxMzMyLDcgQEAgX19aTks3V2Vi
Q29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U2aXNIVAogX19aTks3V2ViQ29yZTIwUmVzb3VyY2VS
ZXNwb25zZUJhc2U4bWltZVR5cGVFdgogX19aTks3V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9s
bGVyMTJmb3J3YXJkQ291bnRFdgogX19aTks3V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9sbGVy
OWJhY2tDb3VudEV2CitfX1pOSzdXZWJDb3JlMjFOZXR3b3JrU3RvcmFnZVNlc3Npb24xM2Nvb2tp
ZVN0b3JhZ2VFdgogX19aTks3V2ViQ29yZTIxUmVuZGVyTGF5ZXJDb21wb3NpdG9yMTFzY3JvbGxM
YXllckV2CiBfX1pOSzdXZWJDb3JlMjFSZW5kZXJMYXllckNvbXBvc2l0b3IxNXJvb3RSZW5kZXJM
YXllckV2CiBfX1pOSzdXZWJDb3JlMjFVc2VyQ29udGVudFVSTFBhdHRlcm43bWF0Y2hlc0VSS05T
XzRLVVJMRQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC00MzY3LDYgKzQzNjcsNyBA
QAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmNwcCcsCkBAIC00Mzg2LDcg
KzQzODcsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRp
b25DRi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZO
ZXQuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VD
Rk5ldC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9y
YWdlQ0ZOZXQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9jZi9Eb3dubG9hZEJ1bmRsZS5o
JywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzI2MjEsNiArMzI2MjEsMTAgQEAKIAkJCQkJ
PgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3Jt
XG5ldHdvcmtcTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJ
CQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXE5ldHdvcmtp
bmdDb250ZXh0LmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBAIC0zMjg0NCwxMCArMzI4NDgsNiBA
QAogCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJCQkJPC9GaWxlPgogCQkJCQk8RmlsZQot
CQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXENvb2tpZVN0b3JhZ2VD
Rk5ldC5oIgotCQkJCQkJPgotCQkJCQk8L0ZpbGU+Ci0JCQkJCTxGaWxlCiAJCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAi
CiAJCQkJCQk+CiAJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTMyOTQwLDYgKzMyOTQwLDEw
IEBACiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAi
CisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKIAkJCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGxhdGZvcm1cbmV0d29ya1xjZlxQcm94eVNlcnZlckNGTmV0LmNwcCIKIAkJCQkJCT4KIAkJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDM3LDcgKzIwMzcsNiBAQAogCQk3RUU2ODQ2MTEyRDI2RTM4MDBFNzk0MTUgLyogQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdFRTY4NDRFMTJEMjZFMzgwMEU3OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdFRTY4NDYyMTJEMjZFMzgwMEU3OTQxNSAvKiBDb29raWVKYXJDRk5ldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ0RjEyRDI2RTM4
MDBFNzk0MTUgLyogQ29va2llSmFyQ0ZOZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2MzEyRDI2RTM4
MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDUwMTJEMjZFMzgwMEU3OTQxNSAvKiBDb29r
aWVTdG9yYWdlQ0ZOZXQuY3BwICovOyB9OwotCQk3RUU2ODQ2NDEyRDI2RTM4MDBFNzk0MTUgLyog
Q29va2llU3RvcmFnZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VF
Njg0NjUxMkQyNkUzODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NTIxMkQyNkUz
ODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2
NjEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1MzEyRDI2RTM4MDBFNzk0
MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgKi87IH07CiAJCTdFRTY4NDY3MTJEMjZFMzgw
MEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1NDEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURh
dGFTdHJlYW1DRk5ldC5oICovOyB9OwpAQCAtNjA5NSw2ICs2MDk0LDggQEAKIAkJRTEzNEY1QUIx
MkVFMzQzRjAwNEVDNThEIC8qIEludFJlY3RIYXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTM0RjVBQTEyRUUzNDNGMDA0RUM1OEQgLyogSW50UmVj
dEhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMTM5ODY2MzE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTM5ODY2MTE1NDc4NDc0MDAx
RTNGNjUgLyogU3R5bGVSZXNvbHZlci5jcHAgKi87IH07CiAJCUUxMzk4NjY0MTU0Nzg0NzQwMDFF
M0Y2NSAvKiBTdHlsZVJlc29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTM5ODY2MjE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5o
ICovOyB9OworCQlFMTNFRjM0NDE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTNF
RjM0MjE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTEzRUYzNDkxNjg1MEM0
NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxM0VGMzQ3MTY4NTBDNDcwMDM0Qzgz
RiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgKi87IH07CiAJCUUxM0YwMUYxMTI3
MEUxOTAwMERGQkE3MSAvKiBDb29raWVTdG9yYWdlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEzRjAxRjAxMjcwRTE5MDAwREZCQTcxIC8qIENv
b2tpZVN0b3JhZ2VNYWMubW0gKi87IH07CiAJCUUxNDI0QzhBMTY0QjNCNEUwMEYzMkQ0MCAvKiBQ
bGF0Zm9ybUNvb2tpZUphci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTE0MjRDODkxNjRCM0I0RTAwRjMyRDQwIC8qIFBsYXRmb3JtQ29va2llSmFyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTE0MjRD
OTAxNjRCNDYwQjAwRjMyRDQwIC8qIENvb2tpZUphck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNDI0QzhGMTY0QjQ2MEIwMEYzMkQ0MCAvKiBD
b29raWVKYXJNYWMubW0gKi87IH07CkBAIC05MzcwLDcgKzkzNzEsNiBAQAogCQk3RUU2ODQ0RTEy
RDI2RTM4MDBFNzk0MTUgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NEYxMkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZUph
ckNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvb2tpZUph
ckNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTAxMkQyNkUz
ODAwRTc5NDE1IC8qIENvb2tpZVN0b3JhZ2VDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDb29raWVTdG9yYWdlQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNG
TmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tpZVN0b3JhZ2VDRk5l
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1MjEyRDI2RTM4MDBFNzk0
MTUgLyogQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTMxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybURhdGFT
dHJlYW1DRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDU0MTJE
MjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZvcm1EYXRhU3RyZWFtQ0ZOZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEzNTc2LDYgKzEzNTc2LDggQEAKIAkJRTEzNEY1QUExMkVFMzQzRjAwNEVD
NThEIC8qIEludFJlY3RIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
dFJlY3RIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMzk4NjYxMTU0Nzg0
NzQwMDFFM0Y2NSAvKiBTdHlsZVJlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0eWxlUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMTM5ODY2MjE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZVJlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUxM0VGMzQyMTY4NEVDRjQwMDM0QzgzRiAvKiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxM0VGMzQ3MTY4NTBD
NDcwMDM0QzgzRiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxM0YwMUVBMTI3MEUxMEQwMERGQkE3MSAv
KiBDb29raWVTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tp
ZVN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEzRjAxRjAxMjcwRTE5
MDAwREZCQTcxIC8qIENvb2tpZVN0b3JhZ2VNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBDb29raWVTdG9yYWdlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMTQyNEM4OTE2NEIzQjRFMDBGMzJENDAgLyogUGxhdGZvcm1Db29raWVKYXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxhdGZvcm1Db29raWVKYXIuaDsg
cGF0aCA9IG5ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE1ODMzLDYgKzE1ODM1LDcgQEAKIAkJCQkzN0REQ0Q5MjEzODQ0RkQ1MDAwOEI3
OTMgLyogTUlNRUhlYWRlci5jcHAgKi8sCiAJCQkJMzdERENEOTMxMzg0NEZENTAwMDhCNzkzIC8q
IE1JTUVIZWFkZXIuaCAqLywKIAkJCQk2MjhEMjE0QjEyMTMxRUQxMDA1NURDRkMgLyogTmV0d29y
a2luZ0NvbnRleHQuaCAqLywKKwkJCQlFMTNFRjM0MjE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmggKi8sCiAJCQkJMUE3RkE2MUEwRERBM0JCRTAwMjhGOEE1IC8qIE5l
dHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCAqLywKIAkJCQkxQTdGQTYxODBEREEzQjNBMDAyOEY4QTUg
LyogTmV0d29ya1N0YXRlTm90aWZpZXIuaCAqLywKIAkJCQk0NDc5NTgwMjE2NDNCNDdCMDAxRTBB
N0YgLyogUGFyc2VkQ29udGVudFR5cGUuY3BwICovLApAQCAtMjA0MDMsMTMgKzIwNDA2LDEzIEBA
CiAJCQkJN0VFNjg0NEUxMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmggKi8sCiAJCQkJN0VFNjg0NEYxMkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZUphckNGTmV0LmNw
cCAqLywKIAkJCQk3RUU2ODQ1MDEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0
LmNwcCAqLywKLQkJCQk3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNG
TmV0LmggKi8sCiAJCQkJN0VFNjg0NTIxMkQyNkUzODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9y
YWdlQ0ZOZXQuY3BwICovLAogCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5l
dC5jcHAgKi8sCiAJCQkJN0VFNjg0NTMxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU0MTJEMjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0
cmVhbUNGTmV0LmggKi8sCiAJCQkJN0VFNjg0NTUxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1
bkxvb3BDRi5jcHAgKi8sCiAJCQkJN0VFNjg0NTYxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1
bkxvb3BDRi5oICovLAorCQkJCUUxM0VGMzQ3MTY4NTBDNDcwMDM0QzgzRiAvKiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb25DRk5ldC5jcHAgKi8sCiAJCQkJMUFGOEUxQzExMjU2NzNFMDAwMjMwRkY3IC8q
IFByb3h5U2VydmVyQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAv
KiBSZXNvdXJjZUVycm9yLmggKi8sCiAJCQkJN0VFNjg0NTgxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlRXJyb3JDRi5jcHAgKi8sCkBAIC0yMjg5NCw3ICsyMjg5Nyw2IEBACiAJCQkJRDhCNjE1
MkYxMDMyNDk1MTAwQzg1NTRBIC8qIENvb2tpZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzM5QjVC
NjMxMzFEQUEzMjAwRjQ4RDAyIC8qIENvb2tpZXNTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzNEMDIxMkQxMzFEQjM3QjAwNDA5MUE4IC8qIENvb2tpZVN0b3JhZ2UuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTdFRTY4NDY0MTJEMjZFMzgwMEU3OTQxNSAvKiBDb29raWVTdG9yYWdlQ0ZOZXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZFNkZENDg4MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29yZGlu
YXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZEMDQwQTE5ODlDQTAwN0ZCOEM1IC8qIENv
dW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCOTc5MEU4MjA2OTIwMEIyNTk2NSAvKiBD
b3VudGVyQ29udGVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTk4Miw2ICsyNTk4NCw3IEBACiAJ
CQkJRjM3QTU2MjMxNjc5Q0Y3QjAwQzU3MDQ2IC8qIEhlYXBHcmFwaFNlcmlhbGl6ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjg4OTBBMTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCODg5MEYxNjdEMzAxNjAwMTBDREE1
IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTEzRUYz
NDQxNjg0RUNGNDAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0yOTEwMCw2ICsyOTEwMyw3IEBACiAJCQkJMEZCODg5MEIxNjdEMkZBMTAwMTBDREE1
IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCODg5
MEUxNjdEMzAxNjAwMTBDREE1IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyMDlCNDU2QjE2Nzk2QTdFMDBFNTRFNEUgLyogSlNDcnlwdG9DdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTEzRUYzNDkxNjg1MEM0NzAwMzRDODNGIC8qIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nvb2tpZUphci5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db29raWVKYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTmV0
d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvb2tpZUphci5oIgogCiAjaWYg
VVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCkBAIC00Myw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4dChjb25z
dCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CisgICAgLy8gRklYTUU6IFJldHVybmluZyAwIG1lYW5z
IGZhbGxpbmcgYmFjayB0byBkZWZhdWx0IGNvbnRleHQuIFRoYXQncyBub3QgYSBjaG9pY2UgdGhh
dCBpcyBhcHByb3ByaWF0ZSB0byBkbyBhdCBydW50aW1lCiAgICAgaWYgKCFkb2N1bWVudCkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CkBA
IC01NCw1NyArNTYsNjggQEAgc3RhdGljIE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29u
dAogICAgIHJldHVybiBsb2FkZXItPm5ldHdvcmtpbmdDb250ZXh0KCk7CiB9CiAKKyNpZiBQTEFU
Rk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCitpbmxpbmUgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzdG9yYWdlU2Vzc2lvbihjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQgPSBuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCk7CisgICAg
cmV0dXJuIGNvbnRleHQgPyBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpIDogTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKK30KKyNkZWZpbmUgU0VTU0lPTihk
b2N1bWVudCkgc3RvcmFnZVNlc3Npb24oZG9jdW1lbnQpCisjZWxzZQorI2RlZmluZSBTRVNTSU9O
KGRvY3VtZW50KSBOZXR3b3JrU3RvcmFnZVNlc3Npb24obmV0d29ya2luZ0NvbnRleHQoZG9jdW1l
bnQpKQorI2VuZGlmCisKIFN0cmluZyBjb29raWVzKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgS1VSTCYgdXJsKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAgIHJl
dHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmNvb2tpZXNGb3JE
T00obmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgdXJsKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNT
dHJhdGVneSgpLT5jb29raWVzRm9yRE9NKFNFU1NJT04oZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsKICNlbHNlCi0gICAgcmV0dXJuIGNvb2tpZXNGb3JE
T00obmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgdXJsKTsKKyAgICByZXR1cm4gY29va2llc0ZvckRPTShTRVNTSU9OKGRvY3VtZW50
KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVybCk7CiAjZW5kaWYKIH0KIAog
dm9pZCBzZXRDb29raWVzKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykK
LSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPnNldENvb2tpZXNG
cm9tRE9NKG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlG
b3JDb29raWVzKCksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+Y29va2llc1N0cmF0ZWd5KCktPnNldENvb2tpZXNGcm9tRE9NKFNFU1NJT04oZG9jdW1lbnQp
LCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBjb29raWVTdHJpbmcpOwog
I2Vsc2UKLSAgICBzZXRDb29raWVzRnJvbURPTShuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCks
IGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZVN0cmluZyk7Cisg
ICAgc2V0Q29va2llc0Zyb21ET00oU0VTU0lPTihkb2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZVN0cmluZyk7CiAjZW5kaWYKIH0KIAogYm9vbCBj
b29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAjaWYgVVNFKFBMQVRG
T1JNX1NUUkFURUdJRVMpCi0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVz
U3RyYXRlZ3koKS0+Y29va2llc0VuYWJsZWQobmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBk
b2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgZG9jdW1lbnQtPmNvb2tpZVVSTCgpKTsK
KyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5jb29r
aWVzRW5hYmxlZChTRVNTSU9OKGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29r
aWVzKCksIGRvY3VtZW50LT5jb29raWVVUkwoKSk7CiAjZWxzZQotICAgIHJldHVybiBjb29raWVz
RW5hYmxlZChuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCBkb2N1bWVudC0+Y29va2llVVJMKCkpOworICAgIHJldHVybiBjb29raWVz
RW5hYmxlZChTRVNTSU9OKGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVz
KCksIGRvY3VtZW50LT5jb29raWVVUkwoKSk7CiAjZW5kaWYKIH0KIAogU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VS
TCYgdXJsKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAgIHJldHVybiBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFy
dHlGb3JDb29raWVzKCksIHVybCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5j
b29raWVzU3RyYXRlZ3koKS0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU0VTU0lPTihk
b2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpOwogI2Vsc2UK
LSAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUobmV0d29ya2luZ0NvbnRl
eHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsKKyAg
ICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU0VTU0lPTihkb2N1bWVudCks
IGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpOwogI2VuZGlmCiB9CiAKIGJv
b2wgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVy
bCwgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMpCiB7CiAjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJ
RVMpCi0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+
Z2V0UmF3Q29va2llcyhuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCksIGRvY3VtZW50LT5maXJz
dFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOworICAgIHJldHVybiBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmdldFJhd0Nvb2tpZXMoU0VTU0lPTihkb2N1
bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOwog
I2Vsc2UKLSAgICByZXR1cm4gZ2V0UmF3Q29va2llcyhuZXR3b3JraW5nQ29udGV4dChkb2N1bWVu
dCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOworICAg
IHJldHVybiBnZXRSYXdDb29raWVzKFNFU1NJT04oZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBjb29raWVzKTsKICNlbmRpZgogfQogCiB2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb29raWVOYW1lKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+ZGVsZXRlQ29va2llKG5l
dHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmRlbGV0ZUNvb2tpZShTRVNTSU9OKGRv
Y3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKICNlbHNlCi0gICAgZGVsZXRlQ29va2llKG5ldHdv
cmtpbmdDb250ZXh0KGRvY3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBkZWxldGVDb29r
aWUoU0VTU0lPTihkb2N1bWVudCksIHVybCwgY29va2llTmFtZSk7CiAjZW5kaWYKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxMzg0
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlSG9z
dC5oIgogI2luY2x1ZGUgIkFzeW5jRmlsZVN0cmVhbS5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gMTM4NDA3KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJDYWNoZVBvbGljeS5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJQdXJnZVByaW9yaXR5LmgiCisjaW5jbHVkZSAi
UmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0
LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAkocmV2
aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDMwICszMywyMiBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKE1B
QykgfHwgVVNFKENGTkVUV09SSykKLXR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0
b3JhZ2UqICBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgS1VSTDsKLWNsYXNzIE5ldHdvcmtpbmdDb250ZXh0OworY2xhc3MgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOwogc3RydWN0IENvb2tpZTsKIAogY2xhc3MgQ29va2llc1N0cmF0
ZWd5IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQoKSA9
IDA7CiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBS
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gZGVmYXVsdENvb2tpZVN0b3JhZ2UoKSA9
IDA7Ci0jZW5kaWYKLQotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2lu
Z0NvbnRleHQqLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmlu
ZykgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4
dCosIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmKSA9IDA7Ci0gICAgdmlydHVh
bCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOwotICAgIHZpcnR1YWwg
Ym9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+JikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiBjb29raWVOYW1lKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY29v
a2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXRS
YXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgfkNvb2tpZXNTdHJhdGVneSgpIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAkocmV2aXNpb24gMTM4
NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5k
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1
ZXN0LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOZXR3b3JrU3RvcmFnZVNlc3Np
b25faAorI2RlZmluZSBOZXR3b3JrU3RvcmFnZVNlc3Npb25faAorCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgUExBVEZP
Uk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQordHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTFN0
b3JhZ2VTZXNzaW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwordHlwZWRlZiBzdHJ1Y3QgT3Bh
cXVlQ0ZIVFRQQ29va2llU3RvcmFnZSogIENGSFRUUENvb2tpZVN0b3JhZ2VSZWY7CisjZW5kaWYK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Npb24gewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbik7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIHN0YXRpYyBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIGRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbj4gY3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXJCYXNlKTsKKworICAgIHN0YXRpYyB2b2lkIHN3aXRjaFRvTmV3VGVzdGlu
Z1Nlc3Npb24oKTsKKworI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKKyAgICAv
LyBNYXkgYmUgbnVsbCwgaW4gd2hpY2ggY2FzZSBhIEZvdW5kYXRpb24gZGVmYXVsdCBzaG91bGQg
YmUgdXNlZC4KKyAgICBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHBsYXRmb3JtU2Vzc2lvbigpIHsg
cmV0dXJuIG1fcGxhdGZvcm1TZXNzaW9uLmdldCgpOyB9CisgICAgUmV0YWluUHRyPENGSFRUUENv
b2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UoKSBjb25zdDsKKyAgICBib29sIGlzUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNQcml2YXRlOyB9CisjZWxzZQor
ICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCkgOiBt
X2NvbnRleHQoY29udGV4dCkgeyB9CisgICAgTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRleHQuZ2V0KCk7IH0KKyNlbmRpZgorCitwcml2YXRlOgorI2lm
IFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Np
b24oQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBwbGF0Zm9ybVNlc3Npb24pOworICAgIFJldGFpblB0
cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBtX3BsYXRmb3JtU2Vzc2lvbjsKKyAgICBib29sIG1f
aXNQcml2YXRlOworI2Vsc2UKKyAgICBSZWZQdHI8TmV0d29ya2luZ0NvbnRleHQ+IG1fY29udGV4
dDsKKyNlbmRpZgorfTsKKworI2lmIFBMQVRGT1JNKFdJTikKKy8vIE5lZWRlZCBmb3IgV2ViS2l0
MSBBUEkgb25seS4KK3ZvaWQgb3ZlcnJpZGVDb29raWVTdG9yYWdlKENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWYpOworQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBvdmVycmlkZW5Db29raWVTdG9yYWdlKCk7
CisjZW5kaWYKKworfQorCisjZW5kaWYgLy8gTmV0d29ya1N0b3JhZ2VTZXNzaW9uX2gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1
Yi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisKKyNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NPd25QdHI8TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oY29uc3QgU3RyaW5nJikKK3sKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gMDsKK30KKworTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChO
ZXR3b3JrU3RvcmFnZVNlc3Npb24sIHNlc3Npb24sICgwKSk7CisgICAgcmV0dXJuIHNlc3Npb247
Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNz
aW9uKCkKK3sKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya2luZ0NvbnRleHQuaAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMCw3ICsyMCw4IEBACiAjaWZuZGVmIE5ldHdvcmtpbmdDb250ZXh0X2gKICNkZWZp
bmUgTmV0d29ya2luZ0NvbnRleHRfaAogCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9u
LmgiCiAKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSAiU2NoZWR1bGVQYWlyLmgiCkBAIC00
MCwxMCArNDEsNiBAQCBjbGFzcyBXZWJDb29raWVKYXI7CiBPQkpDX0NMQVNTIE5TT3BlcmF0aW9u
UXVldWU7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKLXR5
cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZVUkxTdG9yYWdlU2Vzc2lvbiogQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZjsKLSNlbmRpZgotCiAjaWYgUExBVEZPUk0oUVQpCiBRVF9CRUdJTl9OQU1FU1BBQ0UK
IGNsYXNzIFFPYmplY3Q7CkBAIC02OCw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJv
b2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogI2lmIFBMQVRGT1JNKENIUk9N
SVVNKQorICAgIC8vIEZJWE1FOiBXcmFwIFdlYkNvb2tpZUphciBpbnRvIGEgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uIHRvIG1ha2UgdGhlIGNvZGUgY3Jvc3MtcGxhdGZvcm0uCiAgICAgdmlydHVhbCBX
ZWJLaXQ6OldlYkNvb2tpZUphciogY29va2llSmFyKCkgY29uc3QgPSAwOwogI2VuZGlmCiAKQEAg
LTgwLDExICs3OCwxMiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykgfHwg
VVNFKENGTkVUV09SSykKLSAgICB2aXJ0dWFsIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkg
Y29uc3QgPSAwOwotICAgIHZpcnR1YWwgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vz
c2lvbigpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
dG9yYWdlU2Vzc2lvbigpIGNvbnN0ID0gMDsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oUVQpCisg
ICAgLy8gRklYTUU6IFdyYXAgUU5ldHdvcmtBY2Nlc3NNYW5hZ2VyIGludG8gYSBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24gdG8gbWFrZSB0aGUgY29kZSBjcm9zcy1wbGF0Zm9ybS4KICAgICB2aXJ0dWFs
IFFPYmplY3QqIG9yaWdpbmF0aW5nT2JqZWN0KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgUU5l
dHdvcmtBY2Nlc3NNYW5hZ2VyKiBuZXR3b3JrQWNjZXNzTWFuYWdlcigpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIGJvb2wgbWltZVNuaWZmaW5nRW5hYmxlZCgpIGNvbnN0ID0gMDsKQEAgLTk4LDYg
Kzk3LDcgQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBVU0UoU09VUCkKKyAgICAvLyBGSVhNRTog
V3JhcCBTb3VwU2Vzc2lvbiBpbnRvIGEgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIHRvIG1ha2UgdGhl
IGNvZGUgY3Jvc3MtcGxhdGZvcm0uCiAgICAgdmlydHVhbCBTb3VwU2Vzc2lvbiogc291cFNlc3Np
b24oKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB1aW50NjRfdCBpbml0aWF0aW5nUGFnZUlEKCkg
Y29uc3QgPSAwOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1BsYXRmb3JtQ29va2llSmFyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9QbGF0Zm9ybUNvb2tpZUphci5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3JtQ29va2llSmFyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDE5ICszNCwxOSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBL
VVJMOwotY2xhc3MgTmV0d29ya2luZ0NvbnRleHQ7CitjbGFzcyBOZXR3b3JrU3RvcmFnZVNlc3Np
b247CiBzdHJ1Y3QgQ29va2llOwogCiAvLyBJZiBuZXR3b3JraW5nIGNvbnRleHQgaXMgbnVsbCwg
ZGVmYXVsdCBjb29raWUgc3RvcmFnZSBpcyB1c2VkLgotU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0
d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJik7Ci12
b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOwotYm9vbCBjb29raWVzRW5hYmxl
ZChOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
KTsKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4
dCosIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmKTsKLWJvb2wgZ2V0UmF3Q29v
a2llcyhOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtV
UkwmLCBWZWN0b3I8Q29va2llPiYpOwotdm9pZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRl
eHQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJik7Ci12b2lkIGdldEhvc3RuYW1lc1dpdGhD
b29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpOwot
dm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBT
dHJpbmcmIGhvc3RuYW1lKTsKLXZvaWQgZGVsZXRlQWxsQ29va2llcyhOZXR3b3JraW5nQ29udGV4
dCopOworU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpOwordm9pZCBzZXRDb29raWVzRnJv
bURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJik7Citib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtV
UkwmKTsKK1N0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJik7Citi
b29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+Jik7Cit2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3Qg
U3RyaW5nJik7Cit2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKTsKK3ZvaWQgZGVsZXRlQ29v
a2llc0Zvckhvc3RuYW1lKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFN0cmlu
ZyYgaG9zdG5hbWUpOwordm9pZCBkZWxldGVBbGxDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYpOwogCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsMTEgKzI2LDEwIEBACiAjaWZuZGVmIFJlc291cmNlSGFuZGxlX2gKICNkZWZpbmUgUmVzb3Vy
Y2VIYW5kbGVfaAogCi0jaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbmNs
dWRlICJBdXRoZW50aWNhdGlvbkNsaWVudC5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJNYXAuaCIK
LSNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiAjaWYgVVNFKFNPVVApCiB0eXBlZGVmIHN0
cnVjdCBfU291cFNlc3Npb24gU291cFNlc3Npb247CkBAIC03OCw2ICs3Nyw3IEBAIGNsYXNzIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEZyYW1lOwog
Y2xhc3MgS1VSTDsKK2NsYXNzIE5ldHdvcmtpbmdDb250ZXh0OwogY2xhc3MgUHJvdGVjdGlvblNw
YWNlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlSGFuZGxlQ2xpZW50OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29r
aWVKYXJDRk5ldC5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5
ICsyOSw4IEBACiAjaWYgVVNFKENGTkVUV09SSykKIAogI2luY2x1ZGUgIkNvb2tpZS5oIgotI2lu
Y2x1ZGUgIkNvb2tpZVN0b3JhZ2VDRk5ldC5oIgogI2luY2x1ZGUgIktVUkwuaCIKLSNpbmNsdWRl
ICJOZXR3b3JraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5o
IgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiU29mdExpbmtpbmcuaCIK
ICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIVFRQQ29va2llc1ByaXYuaD4KQEAgLTk1LDE1ICs5NCwx
MiBAQCBzdGF0aWMgUmV0YWluUHRyPENGQXJyYXlSZWY+IGZpbHRlckNvb2tpCiAgICAgcmV0dXJu
IGZpbHRlcmVkQ29va2llczsKIH0KIAotdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5n
Q29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTYz
Mjg4Mz4gQ0ZIVFRQQ29va2llU3RvcmFnZSBzdG9yZXMgYW4gZW1wdHkgY29va2llLCB3aGljaCB3
b3VsZCBiZSBzZW50IGFzICJDb29raWU6ID0iLgogICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBj
b29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRl
eHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3Rv
cmFnZSk7Ci0KICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybENGKEFkb3B0Q0YsIHVybC5jcmVh
dGVDRlVSTCgpKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGZpcnN0UGFydHlGb3JDb29raWVz
Q0YoQWRvcHRDRiwgZmlyc3RQYXJ0eS5jcmVhdGVDRlVSTCgpKTsKIApAQCAtMTE5LDU0ICsxMTUs
NDMgQEAgdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dAogICAgIFJldGFp
blB0cjxDRkFycmF5UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llQ3JlYXRlV2l0
aFJlc3BvbnNlSGVhZGVyRmllbGRzKGtDRkFsbG9jYXRvckRlZmF1bHQsCiAgICAgICAgIGhlYWRl
ckZpZWxkc0NGLmdldCgpLCB1cmxDRi5nZXQoKSkpOwogCi0gICAgQ0ZIVFRQQ29va2llU3RvcmFn
ZVNldENvb2tpZXMoY29va2llU3RvcmFnZS5nZXQoKSwgZmlsdGVyQ29va2llcyhjb29raWVzQ0Yu
Z2V0KCkpLmdldCgpLCB1cmxDRi5nZXQoKSwgZmlyc3RQYXJ0eUZvckNvb2tpZXNDRi5nZXQoKSk7
CisgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZXMoc2Vzc2lvbi5jb29raWVTdG9yYWdl
KCkuZ2V0KCksIGZpbHRlckNvb2tpZXMoY29va2llc0NGLmdldCgpKS5nZXQoKSwgdXJsQ0YuZ2V0
KCksIGZpcnN0UGFydHlGb3JDb29raWVzQ0YuZ2V0KCkpOwogfQogCi1TdHJpbmcgY29va2llc0Zv
ckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwm
IHVybCkKK1N0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQ
Q29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBjdXJyZW50Q0ZIVFRQ
Q29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCk7Ci0g
ICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwotCiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmxD
RihBZG9wdENGLCB1cmwuY3JlYXRlQ0ZVUkwoKSk7CiAKICAgICBib29sIHNlY3VyZSA9IHVybC5w
cm90b2NvbElzKCJodHRwcyIpOwotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBjb29raWVzQ0Yo
QWRvcHRDRiwgQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzRm9yVVJMKGNvb2tpZVN0b3Jh
Z2UuZ2V0KCksIHVybENGLmdldCgpLCBzZWN1cmUpKTsKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJl
Zj4gY29va2llc0NGKEFkb3B0Q0YsIENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2llc0ZvclVS
TChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsQ0YuZ2V0KCksIHNlY3VyZSkpOwog
ICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGhlYWRlckNGKEFkb3B0Q0YsIENGSFRUUENv
b2tpZUNvcHlSZXF1ZXN0SGVhZGVyRmllbGRzKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZpbHRlckNv
b2tpZXMoY29va2llc0NGLmdldCgpKS5nZXQoKSkpOwogICAgIHJldHVybiAoQ0ZTdHJpbmdSZWYp
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUoaGVhZGVyQ0YuZ2V0KCksIHNfY29va2llQ0YpOwogfQogCi1T
dHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCitTdHJp
bmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQogewot
ICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29u
dGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRU
UENvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7Ci0KICAgICBSZXRh
aW5QdHI8Q0ZVUkxSZWY+IHVybENGKEFkb3B0Q0YsIHVybC5jcmVhdGVDRlVSTCgpKTsKIAogICAg
IGJvb2wgc2VjdXJlID0gdXJsLnByb3RvY29sSXMoImh0dHBzIik7Ci0gICAgUmV0YWluUHRyPENG
QXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tp
ZXNGb3JVUkwoY29va2llU3RvcmFnZS5nZXQoKSwgdXJsQ0YuZ2V0KCksIHNlY3VyZSkpOworICAg
IFJldGFpblB0cjxDRkFycmF5UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llU3Rv
cmFnZUNvcHlDb29raWVzRm9yVVJMKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCB1cmxD
Ri5nZXQoKSwgc2VjdXJlKSk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaGVhZGVy
Q0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llQ29weVJlcXVlc3RIZWFkZXJGaWVsZHMoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgY29va2llc0NGLmdldCgpKSk7CiAgICAgcmV0dXJuIChDRlN0cmluZ1JlZilD
RkRpY3Rpb25hcnlHZXRWYWx1ZShoZWFkZXJDRi5nZXQoKSwgc19jb29raWVDRik7CiB9CiAKLWJv
b2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwm
IC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQorYm9vbCBjb29raWVzRW5hYmxl
ZChOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0
eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQogewotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVT
dG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVT
dG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NF
UlQoY29va2llU3RvcmFnZSk7Ci0KLSAgICBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5
IHBvbGljeSA9IENGSFRUUENvb2tpZVN0b3JhZ2VHZXRDb29raWVBY2NlcHRQb2xpY3koY29va2ll
U3RvcmFnZS5nZXQoKSk7CisgICAgQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeSBwb2xp
Y3kgPSBDRkhUVFBDb29raWVTdG9yYWdlR2V0Q29va2llQWNjZXB0UG9saWN5KHNlc3Npb24uY29v
a2llU3RvcmFnZSgpLmdldCgpKTsKICAgICByZXR1cm4gcG9saWN5ID09IENGSFRUUENvb2tpZVN0
b3JhZ2VBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbiB8fCBwb2xpY3kgPT0g
Q0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeUFsd2F5czsKIH0KIAotYm9vbCBnZXRSYXdD
b29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFy
dHkqLywgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wg
Z2V0UmF3Q29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwm
IC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29r
aWVzKQogewogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29v
a2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBjdXJyZW50Q0ZIVFRQQ29v
a2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCk7Ci0gICAg
QVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwogCiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmxDRihB
ZG9wdENGLCB1cmwuY3JlYXRlQ0ZVUkwoKSk7CiAKICAgICBib29sIHNlbmRTZWN1cmVDb29raWVz
ID0gdXJsLnByb3RvY29sSXMoImh0dHBzIik7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNv
b2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkwoY29v
a2llU3RvcmFnZS5nZXQoKSwgdXJsQ0YuZ2V0KCksIHNlbmRTZWN1cmVDb29raWVzKSk7CisgICAg
UmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVTdG9y
YWdlQ29weUNvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHVybENG
LmdldCgpLCBzZW5kU2VjdXJlQ29va2llcykpOwogCiAgICAgQ0ZJbmRleCBjb3VudCA9IENGQXJy
YXlHZXRDb3VudChjb29raWVzQ0YuZ2V0KCkpOwogICAgIHJhd0Nvb2tpZXMucmVzZXJ2ZUNhcGFj
aXR5KGNvdW50KTsKQEAgLTE5MCwxMCArMTc1LDkgQEAgYm9vbCBnZXRSYXdDb29raWVzKE5ldHdv
cmtpbmdDb250ZXh0KiBjbwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIGRlbGV0ZUNvb2tp
ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIFJldGFpblB0
cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJl
bnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3Jh
Z2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7CisgICAgUmV0YWluUHRyPENGSFRUUENv
b2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKTsK
IAogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsQ0YoQWRvcHRDRiwgdXJsLmNyZWF0ZUNGVVJM
KCkpOwogCkBAIC0yMTAsMTIgKzE5NCw5IEBAIHZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtpbmdD
b250ZXh0KiBjb24KICAgICB9CiB9CiAKLXZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0
d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQordm9p
ZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQogewotICAgIFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29r
aWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBB
U1NFUlQoY29va2llU3RvcmFnZSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29va2ll
c0NGKEFkb3B0Q0YsIENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2llcyhjb29raWVTdG9yYWdl
LmdldCgpKSk7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBD
RkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXMoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0
KCkpKTsKICAgICBpZiAoIWNvb2tpZXNDRikKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMjcsMTAg
KzIwOCw5IEBAIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya2luZ0MKICAgICB9
CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQordm9pZCBkZWxldGVDb29raWVzRm9ySG9z
dG5hbWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBTdHJpbmcmIGhvc3Ru
YW1lKQogewotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9y
YWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVm
YXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7Cisg
ICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBzZXNz
aW9uLmNvb2tpZVN0b3JhZ2UoKTsKIAogICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBjb29raWVz
Q0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzKGNvb2tpZVN0b3JhZ2Uu
Z2V0KCkpKTsKICAgICBpZiAoIWNvb2tpZXNDRikKQEAgLTI0NSwxMiArMjI1LDkgQEAgdm9pZCBk
ZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZwogICAgIH0KIH0KIAotdm9pZCBkZWxl
dGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQordm9pZCBkZWxldGVBbGxD
b29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKIHsKLSAgICBSZXRhaW5QdHI8
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBjdXJyZW50
Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdl
KCk7Ci0gICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwotCi0gICAgQ0ZIVFRQQ29va2llU3RvcmFn
ZURlbGV0ZUFsbENvb2tpZXMoY29va2llU3RvcmFnZS5nZXQoKSk7CisgICAgQ0ZIVFRQQ29va2ll
U3RvcmFnZURlbGV0ZUFsbENvb2tpZXMoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwCShyZXZp
c2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tp
ZVN0b3JhZ2VDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb29raWVTdG9yYWdlLmgiCiAKLSNpbmNsdWRlICJD
b29raWVTdG9yYWdlQ0ZOZXQuaCIKLQotI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaW5j
bHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTQ4LDU2ICs0Niw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogI2lmIFBMQVRGT1JNKFdJTikKIAotc3RhdGljIFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiYgY29va2llU3RvcmFnZU92ZXJyaWRlKCkKLXsKLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiwgY29va2llU3RvcmFn
ZSwgKCkpOwotICAgIHJldHVybiBjb29raWVTdG9yYWdlOwotfQotCi0jZW5kaWYKLQotUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKE5l
dHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQotewotI2lmIFBMQVRGT1JNKFdJTikKLSAgICBpZiAo
UmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiBvdmVycmlkZSA9IGNvb2tpZVN0b3Jh
Z2VPdmVycmlkZSgpKQotICAgICAgICByZXR1cm4gb3ZlcnJpZGU7Ci0jZW5kaWYKLQotICAgIGlm
IChDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHNlc3Npb24gPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lv
bigpKQotICAgICAgICByZXR1cm4gUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+KEFk
b3B0Q0YsIHdrQ29weUhUVFBDb29raWVTdG9yYWdlKHNlc3Npb24pKTsKLQotI2lmIFVTRShDRk5F
VFdPUkspCi0gICAgcmV0dXJuIHdrR2V0RGVmYXVsdEhUVFBDb29raWVTdG9yYWdlKCk7Ci0jZWxz
ZQotICAgIC8vIFdoZW4gdXNpbmcgTlNVUkxDb25uZWN0aW9uLCB3ZSBhbHNvIHVzZSBpdHMgc2hh
cmVkIGNvb2tpZSBzdG9yYWdlLgotICAgIHJldHVybiAwOwotI2VuZGlmCi19Ci0KLVJldGFpblB0
cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpCi17
Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIGlmIChSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFn
ZVJlZj4mIG92ZXJyaWRlID0gY29va2llU3RvcmFnZU92ZXJyaWRlKCkpCi0gICAgICAgIHJldHVy
biBvdmVycmlkZTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5j
b29raWVzU3RyYXRlZ3koKS0+ZGVmYXVsdENvb2tpZVN0b3JhZ2UoKTsKLX0KLQotI2lmIFBMQVRG
T1JNKFdJTikKLQotdm9pZCBvdmVycmlkZUNvb2tpZVN0b3JhZ2UoQ0ZIVFRQQ29va2llU3RvcmFn
ZVJlZiBjb29raWVTdG9yYWdlKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
Ly8gRklYTUU6IFdoeSBkb24ndCB3ZSByZXRhaW4gaXQ/IFRoZSBvbmx5IGNhbGxlciBpcyBhbiBB
UEkgbWV0aG9kIHRoYXQgdGFrZXMgY29va2llIHN0b3JhZ2UgYXMgYSByYXcgYXJndW1lbnQuCi0g
ICAgY29va2llU3RvcmFnZU92ZXJyaWRlKCkuYWRvcHRDRihjb29raWVTdG9yYWdlKTsKLX0KLQot
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiBvdmVycmlkZW5Db29raWVTdG9yYWdlKCkKLXsKLSAgICBy
ZXR1cm4gY29va2llU3RvcmFnZU92ZXJyaWRlKCkuZ2V0KCk7Ci19Ci0KIHN0YXRpYyB2b2lkIG5v
dGlmeUNvb2tpZXNDaGFuZ2VkT25NYWluVGhyZWFkKHZvaWQqKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CkBAIC0xMzAsNyArNzgsNyBAQCB2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2ll
Q2hhbmdlcygpCiAgICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBjb29raWVTdG9yYWdlT2JzZXJ2
ZXJSdW5Mb29wKCk7CiAgICAgQVNTRVJUKHJ1bkxvb3ApOwogCi0gICAgUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBkZWZhdWx0Q0ZIVFRQQ29va2llU3Rv
cmFnZSgpOworICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9y
YWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29r
aWVTdG9yYWdlKCk7CiAgICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwogCiAgICAgQ0ZIVFRQQ29v
a2llU3RvcmFnZVNjaGVkdWxlV2l0aFJ1bkxvb3AoY29va2llU3RvcmFnZS5nZXQoKSwgcnVuTG9v
cCwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKQEAgLTE0NCw3ICs5Miw3IEBAIHZvaWQgc3RvcE9i
c2VydmluZ0Nvb2tpZUNoYW5nZXMoKQogICAgIENGUnVuTG9vcFJlZiBydW5Mb29wID0gY29va2ll
U3RvcmFnZU9ic2VydmVyUnVuTG9vcCgpOwogICAgIEFTU0VSVChydW5Mb29wKTsKIAotICAgIFJl
dGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gZGVmYXVsdENG
SFRUUENvb2tpZVN0b3JhZ2UoKTsKKyAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJl
Zj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VT
ZXNzaW9uKCkuY29va2llU3RvcmFnZSgpOwogICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsKIAog
ICAgIENGSFRUUENvb2tpZVN0b3JhZ2VSZW1vdmVPYnNlcnZlcihjb29raWVTdG9yYWdlLmdldCgp
LCBydW5Mb29wLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUsIG5vdGlmeUNvb2tpZXNDaGFuZ2VkLCAw
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFn
ZUNGTmV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Db29raWVTdG9yYWdlQ0ZOZXQuaAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBDb29raWVTdG9yYWdlQ0ZOZXRf
aAotI2RlZmluZSBDb29raWVTdG9yYWdlQ0ZOZXRfaAotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgotCi10eXBlZGVmIHN0cnVjdCBPcGFxdWVDRkhUVFBDb29raWVTdG9yYWdlKiAgQ0ZIVFRQ
Q29va2llU3RvcmFnZVJlZjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBOZXR3b3Jr
aW5nQ29udGV4dDsKLQotUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGN1cnJlbnRD
RkhUVFBDb29raWVTdG9yYWdlKE5ldHdvcmtpbmdDb250ZXh0Kik7IC8vIFdpbGwgYmUgbnVsbCB3
aGVuIHVzaW5nIHNoYXJlZCBOU0hUVFBDb29raWVTdG9yYWdlLgotUmV0YWluUHRyPENGSFRUUENv
b2tpZVN0b3JhZ2VSZWY+IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCk7IC8vIERvZXNuJ3Qg
dGFrZSBjdXJyZW50IHNlc3Npb24gaW50byBhY2NvdW50LgotCi0jaWYgUExBVEZPUk0oV0lOKQot
Ly8gTmVlZGVkIGZvciBXZWJLaXQxIEFQSSBvbmx5Lgotdm9pZCBvdmVycmlkZUNvb2tpZVN0b3Jh
Z2UoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZik7Ci1DRkhUVFBDb29raWVTdG9yYWdlUmVmIG92ZXJy
aWRlbkNvb2tpZVN0b3JhZ2UoKTsKLSNlbmRpZgotCi19Ci0KLSNlbmRpZiAvLyBDb29raWVTdG9y
YWdlQ0ZOZXRfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3
b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkNGTmV0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmgiCisKKyNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitOZXR3b3JrU3RvcmFn
ZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbihDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHBs
YXRmb3JtU2Vzc2lvbikKKyAgICA6IG1fcGxhdGZvcm1TZXNzaW9uKHBsYXRmb3JtU2Vzc2lvbikK
KyAgICAsIG1faXNQcml2YXRlKGZhbHNlKQoreworfQorCitzdGF0aWMgT3duUHRyPE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbj4mIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKQoreworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4sIHNlc3Npb24s
ICgpKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKQoreworICAgIC8vIFNldCBhIHByaXZhdGUg
c2Vzc2lvbiBmb3IgdGVzdGluZyB0byBhdm9pZCBpbnRlcmZlcmluZyB3aXRoIGdsb2JhbCBjb29r
aWVzLiBUaGlzIHNob3VsZCBiZSBkaWZmZXJlbnQgZnJvbSBwcml2YXRlIGJyb3dzaW5nIHNlc3Np
b24uCisgICAgLy8gRklYTUU6IEl0IGxvb2tzIGxpa2UgY3JlYXRpbmcgYSBuZXcgc2Vzc2lvbiB3
aXRoIHRoZSBzYW1lIGlkZW50aWZpZXIgbWF5IGJlIGp1c3QgY3JlYXRpbmcgYSByZWZlcmVuY2Ug
dG8gdGhlIHNhbWUgc3RvcmFnZS4gU2VlIDxyZGFyOi8vcHJvYmxlbS8xMTU3MTQ1MD4gYW5kIDxy
ZGFyOi8vcHJvYmxlbS8xMjM4NDM4MD4uCisgICAgZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bigpID0gYWRvcHRQdHIobmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbih3a0NyZWF0ZVByaXZhdGVT
dG9yYWdlU2Vzc2lvbihDRlNUUigiUHJpdmF0ZSBXZWJLaXQgU2Vzc2lvbiIpKSkpOworfQorCisj
aWYgUExBVEZPUk0oV0lOKQorc3RhdGljIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVm
PiYgY29va2llU3RvcmFnZU92ZXJyaWRlKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJl
dGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiwgY29va2llU3RvcmFnZSwgKCkpOworICAg
IHJldHVybiBjb29raWVTdG9yYWdlOworfQorCit2b2lkIG92ZXJyaWRlQ29va2llU3RvcmFnZShD
RkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UpCit7CisgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICAvLyBGSVhNRTogV2h5IGRvbid0IHdlIHJldGFpbiBpdD8gVGhlIG9u
bHkgY2FsbGVyIGlzIGFuIEFQSSBtZXRob2QgdGhhdCB0YWtlcyBjb29raWUgc3RvcmFnZSBhcyBh
IHJhdyBhcmd1bWVudC4KKyAgICBjb29raWVTdG9yYWdlT3ZlcnJpZGUoKS5hZG9wdENGKGNvb2tp
ZVN0b3JhZ2UpOworfQorCitDRkhUVFBDb29raWVTdG9yYWdlUmVmIG92ZXJyaWRlbkNvb2tpZVN0
b3JhZ2UoKQoreworICAgIHJldHVybiBjb29raWVTdG9yYWdlT3ZlcnJpZGUoKS5nZXQoKTsKK30K
KyNlbmRpZgorCitOZXR3b3JrU3RvcmFnZVNlc3Npb24mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkKK3sKKyAgICByZXR1cm4gKmRlZmF1bHROZXR3b3JrU3Rv
cmFnZVNlc3Npb24oKTsKK30KKworUGFzc093blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihjb25zdCBT
dHJpbmcmIGlkZW50aWZpZXJCYXNlKQoreworICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJ
ZGVudGlmaWVyID0gU3RyaW5nKGlkZW50aWZpZXJCYXNlICsgIi5Qcml2YXRlQnJvd3NpbmciKS5j
cmVhdGVDRlN0cmluZygpOworCisgICAgT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gc2Vz
c2lvbiA9IGFkb3B0UHRyKG5ldyBOZXR3b3JrU3RvcmFnZVNlc3Npb24od2tDcmVhdGVQcml2YXRl
U3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpKSkpOworICAgIHNlc3Npb24tPm1faXNQ
cml2YXRlID0gdHJ1ZTsKKworICAgIHJldHVybiBzZXNzaW9uLnJlbGVhc2UoKTsKK30KKworUmV0
YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29v
a2llU3RvcmFnZSgpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0oV0lOKQorICAgIGlmIChSZXRhaW5Q
dHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4mIG92ZXJyaWRlID0gY29va2llU3RvcmFnZU92ZXJy
aWRlKCkpCisgICAgICAgIHJldHVybiBvdmVycmlkZTsKKyNlbmRpZgorCisgICAgaWYgKG1fcGxh
dGZvcm1TZXNzaW9uKQorICAgICAgICByZXR1cm4gUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWY+KEFkb3B0Q0YsIHdrQ29weUhUVFBDb29raWVTdG9yYWdlKG1fcGxhdGZvcm1TZXNzaW9u
LmdldCgpKSk7CisKKyNpZiBVU0UoQ0ZORVRXT1JLKQorICAgIHJldHVybiB3a0dldERlZmF1bHRI
VFRQQ29va2llU3RvcmFnZSgpOworI2Vsc2UKKyAgICAvLyBXaGVuIHVzaW5nIE5TVVJMQ29ubmVj
dGlvbiwgd2UgYWxzbyB1c2UgaXRzIHNoYXJlZCBjb29raWUgc3RvcmFnZS4KKyAgICByZXR1cm4g
MDsKKyNlbmRpZgorfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAJKHJldmlzaW9uIDEz
ODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5k
bGVDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUg
IkF1dGhlbnRpY2F0aW9uQ0YuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5o
IgotI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2VDRk5ldC5oIgogI2luY2x1ZGUgIkNyZWRlbnRpYWxT
dG9yYWdlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJG
b3JtRGF0YVN0cmVhbUNGTmV0LmgiCkBAIC0zOCw2ICszNyw3IEBACiAjaW5jbHVkZSAiTG9hZGVy
UnVuTG9vcENGLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVn
aXN0cnkuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlc291
cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUg
IlJlc291cmNlUmVzcG9uc2UuaCIKQEAgLTE2NSw3ICsxNjUsNyBAQCBzdGF0aWMgQ0ZVUkxSZXF1
ZXN0UmVmIHdpbGxTZW5kUmVxdWVzdChDCiAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IG5ld01ldGhvZCA9IGFkb3B0Q0YoQ0ZVUkxSZXF1ZXN0Q29weUhUVFBSZXF1ZXN0TWV0aG9k
KGNmUmVxdWVzdCkpOwogICAgICAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZVdpdGhPcHRpb25z
KGxhc3RIVFRQTWV0aG9kLmdldCgpLCBuZXdNZXRob2QuZ2V0KCksIENGUmFuZ2VNYWtlKDAsIENG
U3RyaW5nR2V0TGVuZ3RoKGxhc3RIVFRQTWV0aG9kLmdldCgpKSksIGtDRkNvbXBhcmVDYXNlSW5z
ZW5zaXRpdmUpKSB7CiAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGTXV0YWJsZVVSTFJlcXVl
c3RSZWY+IG11dGFibGVSZXF1ZXN0KEFkb3B0Q0YsIENGVVJMUmVxdWVzdENyZWF0ZU11dGFibGVD
b3B5KDAsIGNmUmVxdWVzdCkpOwotICAgICAgICAgICAgICAgIHdrU2V0UmVxdWVzdFN0b3JhZ2VT
ZXNzaW9uKGhhbmRsZS0+c3RvcmFnZVNlc3Npb24oKSwgbXV0YWJsZVJlcXVlc3QuZ2V0KCkpOwor
ICAgICAgICAgICAgICAgIHdrU2V0UmVxdWVzdFN0b3JhZ2VTZXNzaW9uKGhhbmRsZS0+c3RvcmFn
ZVNlc3Npb24oKS5wbGF0Zm9ybVNlc3Npb24oKSwgbXV0YWJsZVJlcXVlc3QuZ2V0KCkpOwogICAg
ICAgICAgICAgICAgIENGVVJMUmVxdWVzdFNldEhUVFBSZXF1ZXN0TWV0aG9kKG11dGFibGVSZXF1
ZXN0LmdldCgpLCBsYXN0SFRUUE1ldGhvZC5nZXQoKSk7CiAKICAgICAgICAgICAgICAgICBGb3Jt
RGF0YSogYm9keSA9IGhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkuaHR0cEJvZHkoKTsKQEAgLTM5OSw3
ICszOTksNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVQCiB7CiAg
ICAgLy8gSWYgYSBVUkwgYWxyZWFkeSBoYXMgY29va2llcywgdGhlbiB3ZSdsbCByZWxheCB0aGUg
M3JkIHBhcnR5IGNvb2tpZSBwb2xpY3kgYW5kIGFjY2VwdCBuZXcgY29va2llcy4KIAotICAgIFJl
dGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjZkNvb2tpZVN0b3JhZ2UgPSBjdXJyZW50
Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KTsKKyAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2ll
U3RvcmFnZVJlZj4gY2ZDb29raWVTdG9yYWdlID0gY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5j
b29raWVTdG9yYWdlKCk7CiAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeSBjb29r
aWVBY2NlcHRQb2xpY3kgPSBDRkhUVFBDb29raWVTdG9yYWdlR2V0Q29va2llQWNjZXB0UG9saWN5
KGNmQ29va2llU3RvcmFnZS5nZXQoKSk7CiAKICAgICBpZiAoY29va2llQWNjZXB0UG9saWN5ICE9
IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFp
bikKQEAgLTUwNiw3ICs1MDYsNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydChOZXR3b3Jr
aW5nQ29uCiAgICAgaWYgKCFjb250ZXh0LT5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGQtPm1fc3RvcmFnZVNlc3Npb24gPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigp
OworICAgIGQtPm1fc3RvcmFnZVNlc3Npb24gPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLnBs
YXRmb3JtU2Vzc2lvbigpOwogCiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSA9
ICFjbGllbnQoKSB8fCBjbGllbnQoKS0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UodGhpcyk7
CiAKQEAgLTc0MSw3ICs3NDEsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VT
eW5jaHJvCiAKICAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGhhbmRsZSA9IGFkb3B0UmVmKG5l
dyBSZXNvdXJjZUhhbmRsZShyZXF1ZXN0LCBjbGllbnQuZ2V0KCksIGZhbHNlIC8qZGVmZXJzTG9h
ZGluZyovLCB0cnVlIC8qc2hvdWxkQ29udGVudFNuaWZmKi8pKTsKIAotICAgIGhhbmRsZS0+ZC0+
bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCk7CisgICAgaGFuZGxl
LT5kLT5tX3N0b3JhZ2VTZXNzaW9uID0gY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5wbGF0Zm9y
bVNlc3Npb24oKTsKIAogICAgIGlmIChoYW5kbGUtPmQtPm1fc2NoZWR1bGVkRmFpbHVyZVR5cGUg
IT0gTm9GYWlsdXJlKSB7CiAgICAgICAgIGVycm9yID0gY29udGV4dC0+YmxvY2tlZEVycm9yKHJl
cXVlc3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9D
b29raWVKYXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jaHJvbWl1bS9Db29raWVKYXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDEzODQw
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFy
Q2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw1NSArNDEsNTUgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi12b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikKK3ZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29v
a2llcywgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikKIHsKLSAgICBp
ZiAoIWNvbnRleHQpCisgICAgaWYgKCFzZXNzaW9uLmNvbnRleHQoKSkKICAgICAgICAgcmV0dXJu
OwotICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVKYXIgPSBjb250ZXh0LT5jb29raWVK
YXIoKTsKKyAgICBXZWJLaXQ6OldlYkNvb2tpZUphciogY29va2llSmFyID0gc2Vzc2lvbi5jb250
ZXh0KCktPmNvb2tpZUphcigpOwogICAgIGlmIChjb29raWVKYXIpCiAgICAgICAgIGNvb2tpZUph
ci0+c2V0Q29va2llKHVybCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvb2tpZVN0cik7CiB9CiAK
LVN0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tp
ZXNGb3JET00oTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJz
dFBhcnR5Rm9yQ29va2llcywgY29uc3QgS1VSTCYgdXJsKQogewotICAgIGlmICghY29udGV4dCkK
KyAgICBpZiAoIXNlc3Npb24uY29udGV4dCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAg
ICAgU3RyaW5nIHJlc3VsdDsKLSAgICBXZWJLaXQ6OldlYkNvb2tpZUphciogY29va2llSmFyID0g
Y29udGV4dC0+Y29va2llSmFyKCk7CisgICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUph
ciA9IHNlc3Npb24uY29udGV4dCgpLT5jb29raWVKYXIoKTsKICAgICBpZiAoY29va2llSmFyKQog
ICAgICAgICByZXN1bHQgPSBjb29raWVKYXItPmNvb2tpZXModXJsLCBmaXJzdFBhcnR5Rm9yQ29v
a2llcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJz
dFBhcnR5Rm9yQ29va2llcywgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VS
TCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBpZiAoIWNv
bnRleHQpCisgICAgaWYgKCFzZXNzaW9uLmNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogICAgIFN0cmluZyByZXN1bHQ7Ci0gICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tp
ZUphciA9IGNvbnRleHQtPmNvb2tpZUphcigpOworICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBj
b29raWVKYXIgPSBzZXNzaW9uLmNvbnRleHQoKS0+Y29va2llSmFyKCk7CiAgICAgaWYgKGNvb2tp
ZUphcikKICAgICAgICAgcmVzdWx0ID0gY29va2llSmFyLT5jb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZSh1cmwsIGZpcnN0UGFydHlGb3JDb29raWVzKTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1ib29sIGNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBLVVJMJiBjb29raWVVUkwsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzKQorYm9v
bCBjb29raWVzRW5hYmxlZChOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIGNvb2tpZVVSTCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMpCiB7CiAgICAg
Ym9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBpZiAoIWNvbnRleHQpCisgICAgaWYgKCFzZXNzaW9u
LmNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICBXZWJLaXQ6OldlYkNvb2tp
ZUphciogY29va2llSmFyID0gY29udGV4dC0+Y29va2llSmFyKCk7CisgICAgV2ViS2l0OjpXZWJD
b29raWVKYXIqIGNvb2tpZUphciA9IHNlc3Npb24uY29udGV4dCgpLT5jb29raWVKYXIoKTsKICAg
ICBpZiAoY29va2llSmFyKQogICAgICAgICByZXN1bHQgPSBjb29raWVKYXItPmNvb2tpZXNFbmFi
bGVkKGNvb2tpZVVSTCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLWJvb2wgZ2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29u
c3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENv
b2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgS1VS
TCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKICAgICByYXdDb29raWVzLmNs
ZWFyKCk7Ci0gICAgaWYgKCFjb250ZXh0KQorICAgIGlmICghc2Vzc2lvbi5jb250ZXh0KCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICBXZWJLaXQ6OldlYlZlY3RvcjxXZWJLaXQ6OldlYkNv
b2tpZT4gd2ViQ29va2llczsKLSAgICBXZWJLaXQ6OldlYkNvb2tpZUphciogY29va2llSmFyID0g
Y29udGV4dC0+Y29va2llSmFyKCk7CisgICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUph
ciA9IHNlc3Npb24uY29udGV4dCgpLT5jb29raWVKYXIoKTsKICAgICBpZiAoY29va2llSmFyKQog
ICAgICAgICBjb29raWVKYXItPnJhd0Nvb2tpZXModXJsLCBmaXJzdFBhcnR5Rm9yQ29va2llcywg
d2ViQ29va2llcyk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHdlYkNvb2tpZXMuc2l6
ZSgpOyArK2kpIHsKQEAgLTEwMCwyNiArMTAwLDI2IEBAIGJvb2wgZ2V0UmF3Q29va2llcyhOZXR3
b3JraW5nQ29udGV4dCogY28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBkZWxldGVDb29r
aWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBjb29raWVOYW1lKQordm9pZCBkZWxldGVDb29raWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsK
LSAgICBpZiAoIWNvbnRleHQpCisgICAgaWYgKCFzZXNzaW9uLmNvbnRleHQoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVKYXIgPSBjb250ZXh0LT5j
b29raWVKYXIoKTsKKyAgICBXZWJLaXQ6OldlYkNvb2tpZUphciogY29va2llSmFyID0gc2Vzc2lv
bi5jb250ZXh0KCktPmNvb2tpZUphcigpOwogICAgIGlmIChjb29raWVKYXIpCiAgICAgICAgIGNv
b2tpZUphci0+ZGVsZXRlQ29va2llKHVybCwgY29va2llTmFtZSk7CiB9CiAKLXZvaWQgZ2V0SG9z
dG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIC8qY29udGV4dCovLCBIYXNoU2V0
PFN0cmluZz4mIC8qaG9zdG5hbWVzKi8pCit2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIEhhc2hTZXQ8U3RyaW5nPiYgLypob3N0bmFtZXMqLykKIHsK
ICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQogCi12b2lkIGRlbGV0ZUNvb2tp
ZXNGb3JIb3N0bmFtZShOZXR3b3JraW5nQ29udGV4dCogLypjb250ZXh0Ki8sIGNvbnN0IFN0cmlu
ZyYgLypob3N0bmFtZSovKQordm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgU3RyaW5nJiAvKmhvc3RuYW1lKi8pCiB7CiAgICAgLy8gRklY
TUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdv
cmtpbmdDb250ZXh0KiAvKmNvbnRleHQqLykKK3ZvaWQgZGVsZXRlQWxsQ29va2llcyhOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1Jlc291cmNl
SGFuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2Nocm9taXVtL1Jlc291cmNlSGFuZGxlLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9SZXNvdXJjZUhhbmRsZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUhhbmRsZS5oIgogCisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFu
ZGxlSW50ZXJuYWwuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3Vy
bC5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9Db29raWVKYXJDdXJsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNTAgKzI3LDUw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+
IGNvb2tpZUphcjsKIAotdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCos
IGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit2b2lk
IHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgY29va2llSmFyLnNl
dCh1cmwuc3RyaW5nKCksIHZhbHVlKTsKIH0KIAotU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29y
a2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tp
ZXNGb3JET00oTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwm
IHVybCkKIHsKICAgICByZXR1cm4gY29va2llSmFyLmdldCh1cmwuc3RyaW5nKCkpOwogfQogCi1T
dHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCitTdHJp
bmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICAvLyBG
SVhNRTogaW5jbHVkZSBIdHRwT25seSBjb29raWUuCiAgICAgcmV0dXJuIGNvb2tpZUphci5nZXQo
dXJsLnN0cmluZygpKTsKIH0KIAotYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJs
Ki8pCitib29sIGNvb2tpZXNFbmFibGVkKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtV
UkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQogewogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovLCBWZWN0b3I8
Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2llcyhOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLywg
VmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1w
bGVtZW50ZWQKICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAgICAgcmV0dXJuIGZhbHNlOyAvLyBy
ZXR1cm4gdHJ1ZSB3aGVuIGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKE5ldHdv
cmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCit2b2lkIGRlbGV0ZUNv
b2tpZShOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikK
IHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQogCi12b2lkIGdldEhvc3Ru
YW1lc1dpdGhDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiwgSGFzaFNldDxTdHJpbmc+JiBob3N0
bmFtZXMpCit2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0
IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtp
bmdDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llc0Zv
ckhvc3RuYW1lKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUp
CiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxldGVB
bGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KikKK3ZvaWQgZGVsZXRlQWxsQ29va2llcyhOZXR3
b3JrU3RvcmFnZVNlc3Npb24mKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVk
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VI
YW5kbGVDdXJsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRs
ZS5oIgogCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJOZXR3
b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlTWFuYWdl
ci5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFy
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L0Nvb2tpZUphck1hYy5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5
ICszMSw4IEBACiAjaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkNvb2tpZS5o
IgogI2ltcG9ydCAiQ29va2llU3RvcmFnZS5oIgotI2ltcG9ydCAiQ29va2llU3RvcmFnZUNGTmV0
LmgiCiAjaW1wb3J0ICJLVVJMLmgiCi0jaW1wb3J0ICJOZXR3b3JraW5nQ29udGV4dC5oIgorI2lt
cG9ydCAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYyLDMxICs2MSwyOSBAQCBzdGF0
aWMgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlckNvb2tpZXMoCiAgICAgcmV0dXJuIGZpbHRlcmVk
Q29va2llczsKIH0KIAotU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llc0ZvckRP
TShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmLCBjb25z
dCBLVVJMJiB1cmwpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAg
UmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0
ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29v
a2llU3RvcmFnZSgpOwotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hUVFBDb29raWVzRm9yVVJM
KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHVybCk7CisgICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRU
UENvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHVybCk7CiAgICAg
cmV0dXJuIFtbTlNIVFRQQ29va2llIHJlcXVlc3RIZWFkZXJGaWVsZHNXaXRoQ29va2llczpmaWx0
ZXJDb29raWVzKGNvb2tpZXMpLmdldCgpXSBvYmplY3RGb3JLZXk6QCJDb29raWUiXTsKIAogICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1T
dHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCitTdHJp
bmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJs
KQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIFJldGFpblB0cjxD
RkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRD
RkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2Uo
KTsKLSAgICBOU0FycmF5ICpjb29raWVzID0gd2tIVFRQQ29va2llc0ZvclVSTChjb29raWVTdG9y
YWdlLmdldCgpLCB1cmwpOworICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hUVFBDb29raWVzRm9y
VVJMKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCB1cmwpOwogICAgIHJldHVybiBbW05T
SFRUUENvb2tpZSByZXF1ZXN0SGVhZGVyRmllbGRzV2l0aENvb2tpZXM6Y29va2llc10gb2JqZWN0
Rm9yS2V5OkAiQ29va2llIl07CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAg
IHJldHVybiBTdHJpbmcoKTsKIH0KIAotdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5n
Q29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikKK3ZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyKQogewogICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKIApAQCAtMTAzLDMxICsxMDAsMjggQEAgdm9pZCBzZXRDb29r
aWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dAogICAgIFJldGFpblB0cjxOU0FycmF5PiBmaWx0
ZXJlZENvb2tpZXMgPSBmaWx0ZXJDb29raWVzKFtOU0hUVFBDb29raWUgY29va2llc1dpdGhSZXNw
b25zZUhlYWRlckZpZWxkczpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0OmNvb2tp
ZVN0cmluZyBmb3JLZXk6QCJTZXQtQ29va2llIl0gZm9yVVJMOmNvb2tpZVVSTF0pOwogICAgIEFT
U0VSVChbZmlsdGVyZWRDb29raWVzLmdldCgpIGNvdW50XSA8PSAxKTsKIAotICAgIFJldGFpblB0
cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJl
bnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3Jh
Z2UoKTsKLSAgICB3a1NldEhUVFBDb29raWVzRm9yVVJMKGNvb2tpZVN0b3JhZ2UuZ2V0KCksIGZp
bHRlcmVkQ29va2llcy5nZXQoKSwgY29va2llVVJMLCBmaXJzdFBhcnR5KTsKKyAgICB3a1NldEhU
VFBDb29raWVzRm9yVVJMKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCBmaWx0ZXJlZENv
b2tpZXMuZ2V0KCksIGNvb2tpZVVSTCwgZmlyc3RQYXJ0eSk7CiAKICAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TOwogfQogCi1ib29sIGNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwq
LykKK2Jvb2wgY29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKIHsK
ICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQ
Q29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBjdXJyZW50Q0ZIVFRQ
Q29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCk7Ci0g
ICAgTlNIVFRQQ29va2llQWNjZXB0UG9saWN5IGNvb2tpZUFjY2VwdFBvbGljeSA9IHN0YXRpY19j
YXN0PE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeT4od2tHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KGNvb2tpZVN0b3JhZ2UuZ2V0KCkpKTsKKyAgICBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kgY29v
a2llQWNjZXB0UG9saWN5ID0gc3RhdGljX2Nhc3Q8TlNIVFRQQ29va2llQWNjZXB0UG9saWN5Pih3
a0dldEhUVFBDb29raWVBY2NlcHRQb2xpY3koc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCkp
KTsKICAgICByZXR1cm4gY29va2llQWNjZXB0UG9saWN5ID09IE5TSFRUUENvb2tpZUFjY2VwdFBv
bGljeUFsd2F5cyB8fCBjb29raWVBY2NlcHRQb2xpY3kgPT0gTlNIVFRQQ29va2llQWNjZXB0UG9s
aWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW47CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENF
UFRJT05TOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBnZXRSYXdDb29raWVzKE5ldHdv
cmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3Qg
S1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2ll
cyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmly
c3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQog
ewogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlM7CiAKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFn
ZSA9IGNvbnRleHQgPyBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1
bHRDRkhUVFBDb29raWVTdG9yYWdlKCk7Ci0gICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENv
b2tpZXNGb3JVUkwoY29va2llU3RvcmFnZS5nZXQoKSwgdXJsKTsKKyAgICBOU0FycmF5ICpjb29r
aWVzID0gd2tIVFRQQ29va2llc0ZvclVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwg
dXJsKTsKICAgICBOU1VJbnRlZ2VyIGNvdW50ID0gW2Nvb2tpZXMgY291bnRdOwogICAgIHJhd0Nv
b2tpZXMucmVzZXJ2ZUNhcGFjaXR5KGNvdW50KTsKICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7
IGkgPCBjb3VudDsgKytpKSB7CkBAIC0xNDEsMTIgKzEzNSwxMiBAQCBib29sIGdldFJhd0Nvb2tp
ZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgZGVs
ZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNv
b2tpZU5hbWUpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCiAgICAgTlNV
UkwgKmNvb2tpZVVSTCA9IHVybDsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJl
Zj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShj
b250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCk7CisgICAgUmV0YWluUHRyPENG
SFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBzZXNzaW9uLmNvb2tpZVN0b3Jh
Z2UoKTsKICAgICBOU0FycmF5ICpjb29raWVzID0gd2tIVFRQQ29va2llc0ZvclVSTChjb29raWVT
dG9yYWdlLmdldCgpLCBjb29raWVVUkwpOwogCiAgICAgTlNTdHJpbmcgKmNvb2tpZU5hbWVTdHJp
bmcgPSBjb29raWVOYW1lOwpAQCAtMTYxLDEyICsxNTUsMTEgQEAgdm9pZCBkZWxldGVDb29raWUo
TmV0d29ya2luZ0NvbnRleHQqIGNvbgogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9
CiAKLXZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRl
eHQsIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQordm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29v
a2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIEhhc2hTZXQ8U3RyaW5n
PiYgaG9zdG5hbWVzKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAg
IFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4
dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENv
b2tpZVN0b3JhZ2UoKTsKLSAgICBOU0FycmF5ICpjb29raWVzID0gd2tIVFRQQ29va2llcyhjb29r
aWVTdG9yYWdlLmdldCgpKTsKKyAgICBOU0FycmF5ICpjb29raWVzID0gd2tIVFRQQ29va2llcyhz
ZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSk7CiAgICAgCiAgICAgZm9yIChOU0hUVFBDb29r
aWUqIGNvb2tpZSBpbiBjb29raWVzKQogICAgICAgICBob3N0bmFtZXMuYWRkKFtjb29raWUgZG9t
YWluXSk7CkBAIC0xNzQsMTEgKzE2NywxMSBAQCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVz
KE5ldHdvcmtpbmdDCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAotdm9pZCBk
ZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFN0cmluZyYgaG9zdG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7
CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRU
UENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwor
ICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gc2Vz
c2lvbi5jb29raWVTdG9yYWdlKCk7CiAgICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tp
ZXMoY29va2llU3RvcmFnZS5nZXQoKSk7CiAgICAgaWYgKCFjb29raWVzKQogICAgICAgICByZXR1
cm47CkBAIC0xOTEsMTAgKzE4NCw5IEBAIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5l
dHdvcmtpbmcKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCi12b2lkIGRlbGV0
ZUFsbENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCit2b2lkIGRlbGV0ZUFsbENv
b2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQogewotICAgIFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1
cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0
b3JhZ2UoKTsKLSAgICB3a0RlbGV0ZUFsbEhUVFBDb29raWVzKGNvb2tpZVN0b3JhZ2UuZ2V0KCkp
OworICAgIHdrRGVsZXRlQWxsSFRUUENvb2tpZXMoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0
KCkpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9D
b29raWVTdG9yYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL0Nvb2tpZVN0b3JhZ2VNYWMubW0JKHJldmlzaW9uIDEzODQwNykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZVN0b3JhZ2VNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDYgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkNvb2tpZVN0b3JhZ2UuaCIKLSNpbmNsdWRlICJDb29raWVTdG9yYWdlQ0ZOZXQuaCIK
IAogI2ltcG9ydCAiUmVzb3VyY2VIYW5kbGUuaCIKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0JKHJl
dmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jl
c291cmNlSGFuZGxlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2IEBACiAjaW1w
b3J0ICJCbG9iUmVnaXN0cnkuaCIKICNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9y
dCAiQ29va2llU3RvcmFnZS5oIgotI2ltcG9ydCAiQ29va2llU3RvcmFnZUNGTmV0LmgiCiAjaW1w
b3J0ICJDcmVkZW50aWFsU3RvcmFnZS5oIgogI2ltcG9ydCAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
aCIKICNpbXBvcnQgIkVtcHR5UHJvdG9jb2xEZWZpbml0aW9ucy5oIgpAQCAtNDIsNiArNDEsNyBA
QAogI2ltcG9ydCAiRnJhbWVMb2FkZXIuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQg
Ik1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbXBvcnQgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW1w
b3J0ICJQYWdlLmgiCiAjaW1wb3J0ICJSZXNvdXJjZUVycm9yLmgiCiAjaW1wb3J0ICJSZXNvdXJj
ZVJlc3BvbnNlLmgiCkBAIC0xNDcsNyArMTQ3LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkUmVsYXhU
aGlyZFBhcnR5Q29va2llUAogewogICAgIC8vIElmIGEgVVJMIGFscmVhZHkgaGFzIGNvb2tpZXMs
IHRoZW4gd2UnbGwgcmVsYXggdGhlIDNyZCBwYXJ0eSBjb29raWUgcG9saWN5IGFuZCBhY2NlcHQg
bmV3IGNvb2tpZXMuCiAKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY2ZD
b29raWVTdG9yYWdlID0gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCk7CisgICAg
UmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNmQ29va2llU3RvcmFnZSA9IGNvbnRl
eHQtPnN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpOwogICAgIE5TSFRUUENvb2tpZUFj
Y2VwdFBvbGljeSBjb29raWVBY2NlcHRQb2xpY3kgPSBzdGF0aWNfY2FzdDxOU0hUVFBDb29raWVB
Y2NlcHRQb2xpY3k+KHdrR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShjZkNvb2tpZVN0b3JhZ2Uu
Z2V0KCkpKTsKIAogICAgIGlmIChjb29raWVBY2NlcHRQb2xpY3kgIT0gTlNIVFRQQ29va2llQWNj
ZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4pCkBAIC0yMzAsNyArMjMwLDcgQEAg
Ym9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoTmV0d29ya2luZ0NvbgogICAgIGlmICghY29udGV4
dC0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBkLT5tX3N0b3JhZ2VT
ZXNzaW9uID0gY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKTsKKyAgICBkLT5tX3N0b3JhZ2VTZXNz
aW9uID0gY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5wbGF0Zm9ybVNlc3Npb24oKTsKIAogICAg
IEFTU0VSVCghZC0+bV9wcm94eSk7CiAgICAgZC0+bV9wcm94eS5hZG9wdE5TKHdrQ3JlYXRlTlNV
UkxDb25uZWN0aW9uRGVsZWdhdGVQcm94eSgpKTsKQEAgLTM5Niw3ICszOTYsNyBAQCB2b2lkIFJl
c291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VTeW5jaHJvCiAKICAgICBSZWZQdHI8UmVzb3VyY2VI
YW5kbGU+IGhhbmRsZSA9IGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRsZShyZXF1ZXN0LCBjbGll
bnQuZ2V0KCksIGZhbHNlIC8qZGVmZXJzTG9hZGluZyovLCB0cnVlIC8qc2hvdWxkQ29udGVudFNu
aWZmKi8pKTsKIAotICAgIGhhbmRsZS0+ZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRleHQtPnN0
b3JhZ2VTZXNzaW9uKCk7CisgICAgaGFuZGxlLT5kLT5tX3N0b3JhZ2VTZXNzaW9uID0gY29udGV4
dC0+c3RvcmFnZVNlc3Npb24oKS5wbGF0Zm9ybVNlc3Npb24oKTsKIAogICAgIGlmIChjb250ZXh0
ICYmIGhhbmRsZS0+ZC0+bV9zY2hlZHVsZWRGYWlsdXJlVHlwZSAhPSBOb0ZhaWx1cmUpIHsKICAg
ICAgICAgZXJyb3IgPSBjb250ZXh0LT5ibG9ja2VkRXJyb3IocmVxdWVzdCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L0Nvb2tpZUphclF0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L0Nvb2tpZUphclF0LmNwcAko
cmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9D
b29raWVKYXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDE1ICs0NiwxNSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBTaGFyZWRDb29raWVKYXJRdCogc19zaGFyZWRDb29raWVK
YXJRdCA9IDA7CiAKLXZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKK3ZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IGNvbnRleHQg
PyBjb250ZXh0LT5uZXR3b3JrQWNjZXNzTWFuYWdlcigpLT5jb29raWVKYXIoKSA6IFNoYXJlZENv
b2tpZUphclF0OjpzaGFyZWQoKTsKKyAgICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gc2Vzc2lv
bi5jb250ZXh0KCkgPyBzZXNzaW9uLmNvbnRleHQoKS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+
Y29va2llSmFyKCkgOiBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgaWYgKCFqYXIp
CiAgICAgICAgIHJldHVybjsKIAogICAgIFFVcmwgdXJsRm9yQ29va2llcyh1cmwpOwogICAgIFFV
cmwgZmlyc3RQYXJ0eVVybChmaXJzdFBhcnR5KTsKLSAgICBpZiAoIXRoaXJkUGFydHlDb29raWVQ
b2xpY3lQZXJtaXRzKGNvbnRleHQsIHVybEZvckNvb2tpZXMsIGZpcnN0UGFydHlVcmwpKQorICAg
IGlmICghdGhpcmRQYXJ0eUNvb2tpZVBvbGljeVBlcm1pdHMoc2Vzc2lvbi5jb250ZXh0KCksIHVy
bEZvckNvb2tpZXMsIGZpcnN0UGFydHlVcmwpKQogICAgICAgICByZXR1cm47CiAKICAgICBRTGlz
dDxRTmV0d29ya0Nvb2tpZT4gY29va2llcyA9IFFOZXR3b3JrQ29va2llOjpwYXJzZUNvb2tpZXMo
UVN0cmluZyh2YWx1ZSkudG9MYXRpbjEoKSk7CkBAIC02OSwxNSArNjksMTUgQEAgdm9pZCBzZXRD
b29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dAogICAgIGphci0+c2V0Q29va2llc0Zyb21V
cmwoY29va2llcywgdXJsRm9yQ29va2llcyk7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKE5l
dHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJiB1cmwpCitTdHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBR
TmV0d29ya0Nvb2tpZUphciogamFyID0gY29udGV4dCA/IGNvbnRleHQtPm5ldHdvcmtBY2Nlc3NN
YW5hZ2VyKCktPmNvb2tpZUphcigpIDogU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOworICAg
IFFOZXR3b3JrQ29va2llSmFyKiBqYXIgPSBzZXNzaW9uLmNvbnRleHQoKSA/IHNlc3Npb24uY29u
dGV4dCgpLT5uZXR3b3JrQWNjZXNzTWFuYWdlcigpLT5jb29raWVKYXIoKSA6IFNoYXJlZENvb2tp
ZUphclF0OjpzaGFyZWQoKTsKICAgICBpZiAoIWphcikKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwogCiAgICAgUVVybCB1cmxGb3JDb29raWVzKHVybCk7CiAgICAgUVVybCBmaXJzdFBhcnR5VXJs
KGZpcnN0UGFydHkpOwotICAgIGlmICghdGhpcmRQYXJ0eUNvb2tpZVBvbGljeVBlcm1pdHMoY29u
dGV4dCwgdXJsRm9yQ29va2llcywgZmlyc3RQYXJ0eVVybCkpCisgICAgaWYgKCF0aGlyZFBhcnR5
Q29va2llUG9saWN5UGVybWl0cyhzZXNzaW9uLmNvbnRleHQoKSwgdXJsRm9yQ29va2llcywgZmly
c3RQYXJ0eVVybCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIFFMaXN0PFFOZXR3
b3JrQ29va2llPiBjb29raWVzID0gamFyLT5jb29raWVzRm9yVXJsKHVybEZvckNvb2tpZXMpOwpA
QCAtOTQsOSArOTQsOSBAQCBTdHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCog
CiAgICAgcmV0dXJuIHJlc3VsdENvb2tpZXMuam9pbihRTGF0aW4xU3RyaW5nKCI7ICIpKTsKIH0K
IAotU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQor
U3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkK
IHsKLSAgICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gY29udGV4dCA/IGNvbnRleHQtPm5ldHdv
cmtBY2Nlc3NNYW5hZ2VyKCktPmNvb2tpZUphcigpIDogU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJl
ZCgpOworICAgIFFOZXR3b3JrQ29va2llSmFyKiBqYXIgPSBzZXNzaW9uLmNvbnRleHQoKSA/IHNl
c3Npb24uY29udGV4dCgpLT5uZXR3b3JrQWNjZXNzTWFuYWdlcigpLT5jb29raWVKYXIoKSA6IFNo
YXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKICAgICBpZiAoIWphcikKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogCkBAIC0xMTEsNDMgKzExMSw0MyBAQCBTdHJpbmcgY29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoTmV0CiAgICAgcmV0dXJuIHJlc3VsdENvb2tpZXMuam9pbihRTGF0aW4x
U3RyaW5nKCI7ICIpKTsKIH0KIAotYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJs
Ki8pCitib29sIGNvb2tpZXNFbmFibGVkKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCiB7Ci0gICAg
UU5ldHdvcmtDb29raWVKYXIqIGphciA9IGNvbnRleHQgPyBjb250ZXh0LT5uZXR3b3JrQWNjZXNz
TWFuYWdlcigpLT5jb29raWVKYXIoKSA6IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKKyAg
ICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gc2Vzc2lvbi5jb250ZXh0KCkgPyBzZXNzaW9uLmNv
bnRleHQoKS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBTaGFyZWRDb29r
aWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgcmV0dXJuICEhamFyOwogfQogCi1ib29sIGdldFJhd0Nv
b2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0
eSovLCBjb25zdCBLVVJMJiAvKnVybCovLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jv
b2wgZ2V0UmF3Q29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovLCBWZWN0b3I8Q29va2llPiYg
cmF3Q29va2llcykKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogICAgIHJh
d0Nvb2tpZXMuY2xlYXIoKTsKICAgICByZXR1cm4gZmFsc2U7IC8vIHJldHVybiB0cnVlIHdoZW4g
aW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqLCBj
b25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKK3ZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQogewogICAgIC8vIEZJWE1F
OiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
TmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQor
dm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQogewotICAgIEFTU0VSVF9VTlVTRUQoY29u
dGV4dCwgIWNvbnRleHQpOyAvLyBOb3QgeWV0IGltcGxlbWVudGVkIGZvciBjb29raWUgamFycyBv
dGhlciB0aGFuIHRoZSBzaGFyZWQgb25lLgorICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbiwgIXNl
c3Npb24uY29udGV4dCgpKTsgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBmb3IgY29va2llIGphcnMg
b3RoZXIgdGhhbiB0aGUgc2hhcmVkIG9uZS4KICAgICBTaGFyZWRDb29raWVKYXJRdCogamFyID0g
U2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOwogICAgIGlmIChqYXIpCiAgICAgICAgIGphci0+
Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoaG9zdG5hbWVzKTsKIH0KIAotdm9pZCBkZWxldGVDb29r
aWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
aG9zdG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7Ci0gICAgQVNTRVJUX1VO
VVNFRChjb250ZXh0LCAhY29udGV4dCk7IC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9yIGNvb2tp
ZSBqYXJzIG90aGVyIHRoYW4gdGhlIHNoYXJlZCBvbmUuCisgICAgQVNTRVJUX1VOVVNFRChzZXNz
aW9uLCAhc2Vzc2lvbi5jb250ZXh0KCkpOyAvLyBOb3QgeWV0IGltcGxlbWVudGVkIGZvciBjb29r
aWUgamFycyBvdGhlciB0aGFuIHRoZSBzaGFyZWQgb25lLgogICAgIFNoYXJlZENvb2tpZUphclF0
KiBqYXIgPSBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgaWYgKGphcikKICAgICAg
ICAgamFyLT5kZWxldGVDb29raWVzRm9ySG9zdG5hbWUoaG9zdG5hbWUpOwogfQogCi12b2lkIGRl
bGV0ZUFsbENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCit2b2lkIGRlbGV0ZUFs
bENvb2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQogewotICAgIEFTU0VSVF9V
TlVTRUQoY29udGV4dCwgIWNvbnRleHQpOyAvLyBOb3QgeWV0IGltcGxlbWVudGVkIGZvciBjb29r
aWUgamFycyBvdGhlciB0aGFuIHRoZSBzaGFyZWQgb25lLgorICAgIEFTU0VSVF9VTlVTRUQoc2Vz
c2lvbiwgIXNlc3Npb24uY29udGV4dCgpKTsgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBmb3IgY29v
a2llIGphcnMgb3RoZXIgdGhhbiB0aGUgc2hhcmVkIG9uZS4KICAgICBTaGFyZWRDb29raWVKYXJR
dCogamFyID0gU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOwogICAgIGlmIChqYXIpCiAgICAg
ICAgIGphci0+ZGVsZXRlQWxsQ29va2llcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcAkocmV2aXNpb24g
MTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUph
clNvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw5ICszMiwxMSBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyBTb3VwQ29va2llSmFyKiBjb29raWVKYXJGb3JDb250ZXh0KE5l
dHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQorc3RhdGljIFNvdXBDb29raWVKYXIqIGNvb2tpZUph
ckZvclNlc3Npb24oTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQogewotICAgIHJldHVy
biBTT1VQX0NPT0tJRV9KQVIoc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKGNvbnRleHQtPnNvdXBT
ZXNzaW9uKCksIFNPVVBfVFlQRV9DT09LSUVfSkFSKSk7CisgICAgaWYgKCFzZXNzaW9uLmNvbnRl
eHQoKSkKKyAgICAgICAgcmV0dXJuIHNvdXBDb29raWVKYXIoKTsKKyAgICByZXR1cm4gU09VUF9D
T09LSUVfSkFSKHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShzZXNzaW9uLmNvbnRleHQoKS0+c291
cFNlc3Npb24oKSwgU09VUF9UWVBFX0NPT0tJRV9KQVIpKTsKIH0KIAogc3RhdGljIEdSZWZQdHI8
U291cENvb2tpZUphcj4mIGRlZmF1bHRDb29raWVKYXIoKQpAQCAtNzMsOSArNzUsOSBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgaHR0cE9ubHlDb29raWVFeGlzdHMoCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi12b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFs
dWUpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQogewotICAgIFNvdXBDb29raWVKYXIqIGphciA9IGNvbnRleHQgPyBjb29raWVKYXJG
b3JDb250ZXh0KGNvbnRleHQpIDogc291cENvb2tpZUphcigpOworICAgIFNvdXBDb29raWVKYXIq
IGphciA9IGNvb2tpZUphckZvclNlc3Npb24oc2Vzc2lvbik7CiAgICAgaWYgKCFqYXIpCiAgICAg
ICAgIHJldHVybjsKIApAQCAtMTA3LDkgKzEwOSw5IEBAIHZvaWQgc2V0Q29va2llc0Zyb21ET00o
TmV0d29ya2luZ0NvbnRleHQKICAgICBzb3VwX2Nvb2tpZXNfZnJlZShleGlzdGluZ0Nvb2tpZXMp
OwogfQogCi1zdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JDb250ZXh0KE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgZm9ySFRUUEhlYWRlcikKK3N0YXRpYyBT
dHJpbmcgY29va2llc0ZvclNlc3Npb24oTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBLVVJMJiB1cmwsIGJvb2wgZm9ySFRUUEhlYWRlcikKIHsKLSAgICBTb3VwQ29va2llSmFy
KiBqYXIgPSBjb250ZXh0ID8gY29va2llSmFyRm9yQ29udGV4dChjb250ZXh0KSA6IHNvdXBDb29r
aWVKYXIoKTsKKyAgICBTb3VwQ29va2llSmFyKiBqYXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNl
c3Npb24pOwogICAgIGlmICghamFyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKQEAgLTEx
OCwyNSArMTIwLDI1IEBAIHN0YXRpYyBTdHJpbmcgY29va2llc0ZvckNvbnRleHQoTmV0d29ya2kK
ICAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOChjb29raWVzLmdldCgpKTsKIH0KIAotU3RyaW5n
IGNvb2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmLCBj
b25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJu
IGNvb2tpZXNGb3JDb250ZXh0KGNvbnRleHQsIHVybCwgZmFsc2UpOworICAgIHJldHVybiBjb29r
aWVzRm9yU2Vzc2lvbihzZXNzaW9uLCB1cmwsIGZhbHNlKTsKIH0KIAotU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBL
VVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
S1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gY29v
a2llc0ZvckNvbnRleHQoY29udGV4dCwgdXJsLCB0cnVlKTsKKyAgICByZXR1cm4gY29va2llc0Zv
clNlc3Npb24oc2Vzc2lvbiwgdXJsLCB0cnVlKTsKIH0KIAotYm9vbCBjb29raWVzRW5hYmxlZChO
ZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNv
bnN0IEtVUkwmIC8qdXJsKi8pCitib29sIGNvb2tpZXNFbmFibGVkKE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8q
dXJsKi8pCiB7Ci0gICAgcmV0dXJuICEhY29va2llSmFyRm9yQ29udGV4dChjb250ZXh0KTsKKyAg
ICByZXR1cm4gISFjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Npb24pOwogfQogCi1ib29sIGdldFJh
d0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQ
YXJ0eSovLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9v
bCBnZXRSYXdDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VS
TCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nv
b2tpZXMpCiB7CiAgICAgcmF3Q29va2llcy5jbGVhcigpOwotICAgIFNvdXBDb29raWVKYXIqIGph
ciA9IGNvbnRleHQgPyBjb29raWVKYXJGb3JDb250ZXh0KGNvbnRleHQpIDogc291cENvb2tpZUph
cigpOworICAgIFNvdXBDb29raWVKYXIqIGphciA9IGNvb2tpZUphckZvclNlc3Npb24oc2Vzc2lv
bik7CiAgICAgaWYgKCFqYXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMTU3LDkgKzE1
OSw5IEBAIGJvb2wgZ2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY28KICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdm9pZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lKQordm9pZCBkZWxldGVDb29r
aWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgbmFtZSkKIHsKLSAgICBTb3VwQ29va2llSmFyKiBqYXIgPSBjb250ZXh0ID8gY29v
a2llSmFyRm9yQ29udGV4dChjb250ZXh0KSA6IHNvdXBDb29raWVKYXIoKTsKKyAgICBTb3VwQ29v
a2llSmFyKiBqYXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Npb24pOwogICAgIGlmICghamFy
KQogICAgICAgICByZXR1cm47CiAKQEAgLTE3OCw5ICsxODAsOSBAQCB2b2lkIGRlbGV0ZUNvb2tp
ZShOZXR3b3JraW5nQ29udGV4dCogY29uCiAgICAgfQogfQogCi12b2lkIGdldEhvc3RuYW1lc1dp
dGhDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBIYXNoU2V0PFN0cmluZz4mIGhv
c3RuYW1lcykKK3ZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKIHsKLSAgICBTb3VwQ29v
a2llSmFyKiBjb29raWVKYXIgPSBjb250ZXh0ID8gY29va2llSmFyRm9yQ29udGV4dChjb250ZXh0
KSA6IHNvdXBDb29raWVKYXIoKTsKKyAgICBTb3VwQ29va2llSmFyKiBjb29raWVKYXIgPSBjb29r
aWVKYXJGb3JTZXNzaW9uKHNlc3Npb24pOwogICAgIEdPd25QdHI8R1NMaXN0PiBjb29raWVzKHNv
dXBfY29va2llX2phcl9hbGxfY29va2llcyhjb29raWVKYXIpKTsKICAgICBmb3IgKEdTTGlzdCog
aXRlbSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkpIHsK
ICAgICAgICAgR093blB0cjxTb3VwQ29va2llPiBjb29raWUoc3RhdGljX2Nhc3Q8U291cENvb2tp
ZSo+KGl0ZW0tPmRhdGEpKTsKQEAgLTE5MCwxMCArMTkyLDEwIEBAIHZvaWQgZ2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMoTmV0d29ya2luZ0MKICAgICB9CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llc0Zv
ckhvc3RuYW1lKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGhvc3Ru
YW1lKQordm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAgIENTdHJpbmcgaG9zdE5h
bWVTdHJpbmcgPSBob3N0bmFtZS51dGY4KCk7Ci0gICAgU291cENvb2tpZUphciogY29va2llSmFy
ID0gY29udGV4dCA/IGNvb2tpZUphckZvckNvbnRleHQoY29udGV4dCkgOiBzb3VwQ29va2llSmFy
KCk7CisgICAgU291cENvb2tpZUphciogY29va2llSmFyID0gY29va2llSmFyRm9yU2Vzc2lvbihz
ZXNzaW9uKTsKICAgICBHT3duUHRyPEdTTGlzdD4gY29va2llcyhzb3VwX2Nvb2tpZV9qYXJfYWxs
X2Nvb2tpZXMoY29va2llSmFyKSk7CiAgICAgZm9yIChHU0xpc3QqIGl0ZW0gPSBjb29raWVzLmdl
dCgpOyBpdGVtOyBpdGVtID0gZ19zbGlzdF9uZXh0KGl0ZW0pKSB7CiAgICAgICAgIFNvdXBDb29r
aWUqIGNvb2tpZSA9IHN0YXRpY19jYXN0PFNvdXBDb29raWUqPihpdGVtLT5kYXRhKTsKQEAgLTIw
Myw5ICsyMDUsOSBAQCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShOZXR3b3JraW5nCiAg
ICAgfQogfQogCi12b2lkIGRlbGV0ZUFsbENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRl
eHQpCit2b2lkIGRlbGV0ZUFsbENvb2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
KQogewotICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphciA9IGNvbnRleHQgPyBjb29raWVKYXJG
b3JDb250ZXh0KGNvbnRleHQpIDogc291cENvb2tpZUphcigpOworICAgIFNvdXBDb29raWVKYXIq
IGNvb2tpZUphciA9IGNvb2tpZUphckZvclNlc3Npb24oc2Vzc2lvbik7CiAgICAgR093blB0cjxH
U0xpc3Q+IGNvb2tpZXMoc291cF9jb29raWVfamFyX2FsbF9jb29raWVzKGNvb2tpZUphcikpOwog
ICAgIGZvciAoR1NMaXN0KiBpdGVtID0gY29va2llcy5nZXQoKTsgaXRlbTsgaXRlbSA9IGdfc2xp
c3RfbmV4dChpdGVtKSkgewogICAgICAgICBTb3VwQ29va2llKiBjb29raWUgPSBzdGF0aWNfY2Fz
dDxTb3VwQ29va2llKj4oaXRlbS0+ZGF0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAko
cmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlSGFuZGxlU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAK
ICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5o
IgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlJlc291cmNlRXJyb3IuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvd2luL0Nvb2tpZUphcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5j
bHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVkZSA8V2luaW5l
dC5oPgpAQCAtMzUsNyArMzYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgc2V0
Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHZhbHVlKQogewogICAgIC8vIEZJWE1FOiBEZWFsIHdpdGggZmlyc3RQYXJ0eSBhcmd1
bWVudC4KICAgICBTdHJpbmcgc3RyID0gdXJsLnN0cmluZygpOwpAQCAtNDMsNyArNDQsNyBAQCB2
b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0CiAgICAgSW50ZXJuZXRTZXRD
b29raWUoc3RyLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIDAsIHZhbC5jaGFyYWN0
ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpKTsKIH0KIAotU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0
d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNv
b2tpZXNGb3JET00oTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IEtV
UkwmIHVybCkKIHsKICAgICAvLyBGSVhNRTogRGVhbCB3aXRoIGZpcnN0UGFydHkgYXJndW1lbnQu
CiAKQEAgLTY0LDQwICs2NSw0MCBAQCBTdHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29u
dGV4dCosCiAgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoYnVmZmVyKTsKIH0KIAotU3RyaW5nIGNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgLy8gRklYTUU6IGlu
Y2x1ZGUgSHR0cE9ubHkgY29va2llCi0gICAgcmV0dXJuIGNvb2tpZXNGb3JET00oY29udGV4dCwg
Zmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gY29va2llc0ZvckRPTShzZXNzaW9uLmNvbnRl
eHQoKSwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3Jr
aW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtV
UkwmIC8qdXJsKi8pCitib29sIGNvb2tpZXNFbmFibGVkKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8p
CiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgZ2V0UmF3Q29va2llcyhOZXR3b3JraW5n
Q29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwm
IC8qdXJsKi8sIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBnZXRSYXdDb29raWVz
KE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5
Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8sIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewog
ICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiAgICAgcmF3Q29va2llcy5jbGVhcigp
OwogICAgIHJldHVybiBmYWxzZTsgLy8gcmV0dXJuIHRydWUgd2hlbiBpbXBsZW1lbnRlZAogfQog
Ci12b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IEtVUkwmLCBjb25z
dCBTdHJpbmcmKQordm9pZCBkZWxldGVDb29raWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVt
ZW50ZWQKIH0KIAotdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQ29udGV4
dCosIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQordm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29v
a2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykK
IHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQogCi12b2lkIGRlbGV0ZUNv
b2tpZXNGb3JIb3N0bmFtZShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFN0cmluZyYgaG9zdG5h
bWUpCit2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxl
bWVudGVkCiB9CiAKLXZvaWQgZGVsZXRlQWxsQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCopCit2
b2lkIGRlbGV0ZUFsbENvb2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJikKIHsKICAgICAvLyBG
SVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay93aW4vUmVzb3VyY2VIYW5kbGVXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlSGFuZGxlV2luLmNwcAkocmV2
aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVz
b3VyY2VIYW5kbGVXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSAiRGF0YVVSTC5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTUlN
RVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cy5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0
LDE2ICsxNDQsOSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRTCiAg
ICAgbV9zZXJpYWxMb2FkaW5nRW5hYmxlZCA9IGVuYWJsZWQ7CiB9CiAKLXN0YXRpYyBSZW1vdGVO
ZXR3b3JraW5nQ29udGV4dCogbmV0d29ya2luZ0NvbnRleHQoYm9vbCBwcml2YXRlQnJvd3NpbmdF
bmFibGVkKQorc3RhdGljIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24oYm9v
bCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogewotICAgIC8vIFRoaXMgbmV0d29ya2luZyBjb250
ZXh0IGlzIG9ubHkgbmVlZGVkIHRvIGdldCBzdG9yYWdlIHNlc3Npb24gZnJvbS4KLSAgICBpZiAo
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkgewotICAgICAgICBzdGF0aWMgUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQgPSBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6Y3JlYXRlKGZhbHNl
LCBmYWxzZSwgdHJ1ZSkubGVha1JlZigpOwotICAgICAgICByZXR1cm4gY29udGV4dDsKLSAgICB9
IGVsc2UgewotICAgICAgICBzdGF0aWMgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQg
PSBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6Y3JlYXRlKGZhbHNlLCBmYWxzZSwgZmFsc2UpLmxl
YWtSZWYoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQ7Ci0gICAgfQorICAgIHJldHVybiBwcml2
YXRlQnJvd3NpbmdFbmFibGVkID8gUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnByaXZhdGVCcm93
c2luZ1Nlc3Npb24oKSA6IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93
bmxvYWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCB1aW50NjRfdCBkb3dubG9hZElELCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCkBAIC0xNjQsMzIgKzE1NywzMiBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFyCiAKIHZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFi
bGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFN0cmluZyYgcmVz
dWx0KQogewotICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZXNGb3JET00obmV0d29ya2luZ0Nv
bnRleHQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCk7CisgICAgcmVz
dWx0ID0gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzdG9yYWdlU2Vzc2lvbihwcml2YXRlQnJvd3Np
bmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFi
bGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgY29va2llU3RyaW5nKQogewotICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKG5ldHdv
cmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwsIGNv
b2tpZVN0cmluZyk7CisgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oc3RvcmFnZVNlc3Np
b24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5n
KTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0VuYWJs
ZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJiB1cmwsIGJvb2wmIHJlc3VsdCkKIHsKLSAgICByZXN1bHQgPSBXZWJDb3JlOjpj
b29raWVzRW5hYmxlZChuZXR3b3JraW5nQ29udGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwg
Zmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChz
dG9yYWdlU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsK
IH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQogewotICAgIHJlc3Vs
dCA9IFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKG5ldHdvcmtpbmdDb250
ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJlc3Vs
dCA9IFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHN0b3JhZ2VTZXNzaW9u
KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCiB2b2lkIE5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29raWVzKGJvb2wgcHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBW
ZWN0b3I8Q29va2llPiYgcmVzdWx0KQogewotICAgIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMobmV0
d29ya2luZ0NvbnRleHQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCwg
cmVzdWx0KTsKKyAgICBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHN0b3JhZ2VTZXNzaW9uKHByaXZh
dGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwsIHJlc3VsdCk7CiB9CiAKIHZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNvb2tpZShib29sIHByaXZhdGVC
cm93c2luZ0VuYWJsZWQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1l
KQogewotICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShuZXR3b3JraW5nQ29udGV4dChwcml2YXRl
QnJvd3NpbmdFbmFibGVkKSwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxldGVD
b29raWUoc3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIHVybCwgY29va2ll
TmFtZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250
ZXh0LmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0
Miw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKCk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsK
IAorICAgIHN0YXRpYyBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHByaXZhdGVCcm93
c2luZ1Nlc3Npb24oKTsgLy8gQ2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlIHNlc3Npb24gZXhp
c3RzLgorCiBwcml2YXRlOgogICAgIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0KGJvb2wgbmVlZHNT
aXRlU3BlY2lmaWNRdWlya3MsIGJvb2wgbG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZCwg
Ym9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKIApAQCAtNDksOCArNTEsNyBAQCBwcml2YXRl
OgogCiAgICAgdmlydHVhbCBib29sIG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBib29sIGxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQo
KSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2Rl
KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0
b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBOU09wZXJhdGlvblF1ZXVlICpzY2hlZHVsZWRPcGVyYXRpb25RdWV1ZSgpIGNvbnN0
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJy
b3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgT1ZFUlJJREU7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29u
dGV4dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMv
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0JKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzUsNyArMzUsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBwcml2
YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbjsKK3N0YXRpYyBPd25QdHI8TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uPiYgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChPd25QdHI8TmV0d29ya1N0
b3JhZ2VTZXNzaW9uPiwgc2Vzc2lvbiwgKCkpOworICAgIHJldHVybiBzZXNzaW9uOworfQogCiBS
ZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6UmVtb3RlTmV0d29ya2luZ0NvbnRleHQoYm9vbCBuZWVk
c1NpdGVTcGVjaWZpY1F1aXJrcywgYm9vbCBsb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVk
LCBib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiAgICAgOiBtX25lZWRzU2l0ZVNwZWNpZmlj
UXVpcmtzKG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKQpAQCAtNjMsMTkgKzY4LDIwIEBAIGJvb2wg
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmxvY2FsRmlsZUMKICAgICByZXR1cm4gbV9sb2NhbEZp
bGVDb250ZW50U25pZmZpbmdFbmFibGVkOwogfQogCi1ib29sIFJlbW90ZU5ldHdvcmtpbmdDb250
ZXh0OjppblByaXZhdGVCcm93c2luZ01vZGUoKSBjb25zdAorTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAg
IHJldHVybiBtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQ7CisgICAgaWYgKG1fcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCkgeworICAgICAgICBBU1NFUlQocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b24oKSk7CisgICAgICAgIHJldHVybiAqcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKTsK
KyAgICB9CisKKyAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFn
ZVNlc3Npb24oKTsKIH0KIAotQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBSZW1vdGVOZXR3b3JraW5n
Q29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAorTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBS
ZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6cHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7Ci0gICAg
aWYgKGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpKSB7Ci0gICAgICAgIEFTU0VSVChwcml2YXRlQnJv
d3NpbmdTdG9yYWdlU2Vzc2lvbik7Ci0gICAgICAgIHJldHVybiBwcml2YXRlQnJvd3NpbmdTdG9y
YWdlU2Vzc2lvbjsKLSAgICB9Ci0gICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogUmV0dXJu
IGEgZGVmYXVsdCBzZXNzaW9uIHRoYXQncyB1c2VkIGZvciB0ZXN0aW5nLgotICAgIHJldHVybiAw
OworICAgIEFTU0VSVChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpKTsKKyAgICByZXR1
cm4gKnByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKIE5TT3BlcmF0aW9uUXVl
dWUgKlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzY2hlZHVsZWRPcGVyYXRpb25RdWV1ZSgpIGNv
bnN0CkBAIC0xMDgsMjMgKzExNCwxOCBAQCB2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpz
ZXRQcml2YXRlCiAKIHZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYg
KHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKQorICAgIGlmIChwcml2YXRlQnJvd3NpbmdT
dG9yYWdlU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoIXByaXZhdGVC
cm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKS5pc051bGwoKSk7CiAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50aWZpZXIgPSBTdHJpbmcocHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpICsgIi5Qcml2YXRlQnJvd3NpbmciKS5jcmVh
dGVDRlN0cmluZygpOwogCi0gICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24gPSBXS0Ny
ZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCkpOworICAgIHByaXZh
dGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24ocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVu
dGlmaWVyQmFzZSgpKTsKIH0KIAogdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJv
eVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewotICAgIGlmICghcHJpdmF0ZUJyb3dzaW5nU3Rv
cmFnZVNlc3Npb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIENGUmVsZWFzZShwcml2YXRlQnJv
d3NpbmdTdG9yYWdlU2Vzc2lvbik7Ci0gICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24g
PSAwOworICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkgPSBudWxscHRyOwogfQog
CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
bWFjL0N1c3RvbVByb3RvY29sTWFuYWdlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFu
YWdlck1hYy5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL05l
dHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgogI2ltcG9ydCA8V2ViQ29yZS9LVVJMLmg+
CisjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQzLDcgKzEw
NDMsNiBAQAogCQlFMUI3ODQ3MzE2M0YyNTNFMDAwN0I2OTIgLyogUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MUI3ODQ3MjE2M0YyNTNFMDAwN0I2OTIgLyogUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0gKi87
IH07CiAJCUUxQ0MxQjkwMTJEN0VBREYwMDYyNTgzOCAvKiBQcmludEluZm8uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQ0MxQjhFMTJEN0VBREYwMDYy
NTgzOCAvKiBQcmludEluZm8uaCAqLzsgfTsKIAkJRTFDQzFCOTExMkQ3RUFERjAwNjI1ODM4IC8q
IFByaW50SW5mb01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxQ0MxQjhGMTJEN0VBREYwMDYyNTgzOCAvKiBQcmludEluZm9NYWMubW0gKi87IH07
Ci0JCUUxRDIyOTcxMTY1MkRDNTIwMEJBQTRCRCAvKiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXNNYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUQyMjk2
RTE2NTJEQjlDMDBCQUE0QkQgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFjLm1tICovOyB9Owog
CQlFMUVERkRBNjE2Mjg4NjhFMDAzOUVDREEgLyogTWFpbk1hY1Byb2Nlc3MuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2RkEzMTAxMUUzOTIxRTAw
REIxMzcxIC8qIE1haW5NYWNQcm9jZXNzLmNwcCAqLzsgfTsKIAkJRTFFREZEQTcxNjI4ODY5NjAw
MzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYWluTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFREZEOUIxNjI4N0QwQjAwMzlFQ0RBIC8q
IFNoYXJlZFdvcmtlclByb2Nlc3NNYWluTWFjLm1tICovOyB9OwogCQlFMUVERkRBODE2Mjg4Njk5
MDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRURGREEyMTYyODgzOEMwMDM5RUNEQSAvKiBT
aGFyZWRXb3JrZXJQcm9jZXNzTWFjLm1tICovOyB9OwpAQCAtMjM0NCw3ICsyMzQzLDYgQEAKIAkJ
RTFCNzg0NzIxNjNGMjUzRTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQ0MxQjhFMTJEN0VBREYw
MDYyNTgzOCAvKiBQcmludEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UHJpbnRJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQ0MxQjhGMTJEN0VB
REYwMDYyNTgzOCAvKiBQcmludEluZm9NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBQcmludEluZm9NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUUxRDIyOTZFMTY1MkRCOUMwMEJBQTRCRCAvKiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXNNYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXNNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRURGRDk4MTYy
ODdCRDEwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMUVERkQ5QjE2Mjg3RDBCMDAzOUVDREEgLyogU2hhcmVkV29y
a2VyUHJvY2Vzc01haW5NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRTFFREZEOUQxNjI4N0YxOTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzczMyw3ICszNzMxLDYgQEAKIAkJCQlC
QzExMUFERjExMkY1QkMyMDAzMzdCQUIgLyogV2ViRXJyb3JzTWFjLm1tICovLAogCQkJCTkzOTFG
MjgzMTIxQjM4RjUwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggKi8sCiAJ
CQkJOTM5MUYyODQxMjFCMzhGNTAwRUJGN0U4IC8qIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
bW0gKi8sCi0JCQkJRTFEMjI5NkUxNjUyREI5QzAwQkFBNEJEIC8qIFdlYlBsYXRmb3JtU3RyYXRl
Z2llc01hYy5tbSAqLywKIAkJCQlCQ0M0M0FDNjEyN0I5OURFMDAzMTdGMTYgLyogV2ViUG9wdXBN
ZW51TWFjLm1tICovLAogCQkJCUJDQzU3MTU5MTE1QURBRUYwMDFDQ0FGOSAvKiBXZWJTeXN0ZW1J
bnRlcmZhY2UuaCAqLywKIAkJCQlCQ0M1NzE1QTExNUFEQUVGMDAxQ0NBRjkgLyogV2ViU3lzdGVt
SW50ZXJmYWNlLm1tICovLApAQCAtNTk3OCw3ICs1OTc1LDYgQEAKIAkJCQk1MTIxNzQ2MDE2NEMy
MEUzMDAzN0E1QzEgLyogU2hhcmVhYmxlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTEyMTc0NjQxNjRDMjEzNzAwMzdBNUMxIC8qIFdlYlJlc291cmNlQnVmZmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTFBRjFBQzZCMTY1MTc1OUUwMEMxN0Q3RiAvKiBSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbi5tbSBpbiBTb3VyY2VzICovLAotCQkJCUUxRDIyOTcxMTY1MkRDNTIwMEJBQTRC
RCAvKiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXNNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUEz
RDc1QjE2NTFCNDRGMDA4NzEzRDAgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBQTNENzYxMTY1MUI3RDMwMDg3MTNEMCAvKiBSZW1vdGVMYXllclRyZWVIb3N0
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRkQxOEI1MTY1MUZCQUQw
MERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDEzODQw
NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9NZW1vcnlT
dGF0aXN0aWNzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BWE9iamVjdENhY2hlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2lu
UHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0ZvbnRDYWNoZS5oPgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTM4
NDA3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFn
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiV2ViQ29v
a2llTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9Db29raWVTdG9yYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ29va2llSmFyLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNTUsNyArNTYsNyBAQCB2b2lkIFdlYkNv
b2tpZU1hbmFnZXI6OmdldEhvc3RuYW1lc1dpdGhDCiB7CiAgICAgSGFzaFNldDxTdHJpbmc+IGhv
c3RuYW1lczsKIAotICAgIFdlYkNvcmU6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKDAsIGhvc3Ru
YW1lcyk7CisgICAgV2ViQ29yZTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgaG9zdG5hbWVzKTsKIAogICAgIFZl
Y3RvcjxTdHJpbmc+IGhvc3RuYW1lTGlzdDsKICAgICBjb3B5VG9WZWN0b3IoaG9zdG5hbWVzLCBo
b3N0bmFtZUxpc3QpOwpAQCAtNjUsMTIgKzY2LDEyIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6
Z2V0SG9zdG5hbWVzV2l0aEMKIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVDb29raWVz
Rm9ySG9zdG5hbWUoY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKLSAgICBXZWJDb3JlOjpkZWxl
dGVDb29raWVzRm9ySG9zdG5hbWUoMCwgaG9zdG5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0ZUNv
b2tpZXNGb3JIb3N0bmFtZShOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vz
c2lvbigpLCBob3N0bmFtZSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxs
Q29va2llcygpCiB7Ci0gICAgV2ViQ29yZTo6ZGVsZXRlQWxsQ29va2llcygwKTsKKyAgICBXZWJD
b3JlOjpkZWxldGVBbGxDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3Jh
Z2VTZXNzaW9uKCkpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnN0YXJ0T2JzZXJ2aW5n
Q29va2llQ2hhbmdlcygpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fk
cy9tYWMvRG93bmxvYWRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9y
dCAiRG93bmxvYWQuaCIKIAorI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbk1hYy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5o
PgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMDMsNyArMzAzLDcgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6c3dp
dGNoTmV0d29ya0xvYWRlcgogewogI2lmIChQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUksp
KSAmJiAhUExBVEZPUk0oV0lOKQogICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IERvIHRo
aXMgaW4gbmV0d29yayBwcm9jZXNzLCB0b28uCi0gICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOworICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcs
NyBAQAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVy
cm9ycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlci5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0tVUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xvYWRlclN0cmF0ZWd5Lmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ29va2llSmFyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVBhc3RlYm9hcmQuaD4KQEAgLTExMyw5MCArMTE0LDgz
IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpub3RpZnlDb29raWUKICAgICBXZWJDb29r
aWVNYW5hZ2VyOjpzaGFyZWQoKS5kaXNwYXRjaENvb2tpZXNEaWRDaGFuZ2UoKTsKIH0KIAotI2lm
IFBMQVRGT1JNKFdJTikgJiYgVVNFKENGTkVUV09SSykKLVJldGFpblB0cjxDRkhUVFBDb29raWVT
dG9yYWdlUmVmPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlZmF1bHRDb29raWVTdG9yYWdlKCkK
LXsKLSAgICByZXR1cm4gMDsKLX0KLSNlbmRpZgotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewogI2lmIEVOQUJMRShO
RVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3Jr
UHJvY2VzcygpKSB7CiAgICAgICAgIFN0cmluZyByZXN1bHQ7Ci0gICAgICAgIGlmICghV2ViUHJv
Y2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3lu
YyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00o
Y29udGV4dCAmJiBjb250ZXh0LT5pblByaXZhdGVCcm93c2luZ01vZGUoKSwgZmlyc3RQYXJ0eSwg
dXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9y
RE9NOjpSZXBseShyZXN1bHQpLCAwKSkKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQo
KS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShzZXNzaW9uLmlzUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJlcGx5KHJlc3VsdCksIDAp
KQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oY29udGV4
dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShz
ZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6c2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJp
bmcpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0Zyb21ET00oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewogI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3
b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25u
ZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9NKGNvbnRleHQgJiYgY29udGV4dC0+aW5Qcml2
YXRlQnJvd3NpbmdNb2RlKCksIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKSwgMCk7Cisg
ICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENv
b2tpZXNGcm9tRE9NKHNlc3Npb24uaXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIGZpcnN0UGFy
dHksIHVybCwgY29va2llU3RyaW5nKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5k
aWYKIAotICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKGNvbnRleHQsIGZpcnN0UGFydHks
IHVybCwgY29va2llU3RyaW5nKTsKKyAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShzZXNz
aW9uLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CiB9CiAKLWJvb2wgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewogI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVz
ZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIGJvb2wgcmVzdWx0OwotICAgICAgICBpZiAo
IVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+
c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVz
RW5hYmxlZChjb250ZXh0ICYmIGNvbnRleHQtPmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpLCBmaXJz
dFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNv
b2tpZXNFbmFibGVkOjpSZXBseShyZXN1bHQpLCAwKSkKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNz
OjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJsZWQoc2Vz
c2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2Fn
ZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZDo6UmVwbHko
cmVzdWx0KSwgMCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJs
ZWQoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2ll
c0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkK
K1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1Mp
CiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAg
ICAgICAgIFN0cmluZyByZXN1bHQ7Ci0gICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCku
bmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnRleHQgJiYgY29udGV4dC0+aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCksIGZpcnN0UGFydHks
IHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWU6OlJlcGx5KHJlc3VsdCksIDApKQorICAgICAgICBpZiAoIVdl
YlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2Vu
ZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLmlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCBm
aXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBseShyZXN1bHQpLCAwKSkKICAgICAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAj
ZW5kaWYKIAotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1i
b29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0
b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRS
YXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2ll
cykKIHsKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpz
aGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6
OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzKGNvbnRl
eHQgJiYgY29udGV4dC0+aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCksIGZpcnN0UGFydHksIHVybCks
IE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llczo6
UmVwbHkocmF3Q29va2llcyksIDApKQorICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgp
Lm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzKHNlc3Npb24uaXNQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKCksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2llcyks
IDApKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKGNvbnRleHQs
IGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmdldFJh
d0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKIH0KIAotdm9p
ZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCog
Y29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lk
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5h
bWUpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6
c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2hh
cmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RGVsZXRlQ29va2llKGNvbnRleHQgJiYgY29u
dGV4dC0+aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCksIHVybCwgY29va2llTmFtZSksIDApOworICAg
ICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVD
b29raWUoc2Vzc2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgdXJsLCBjb29raWVOYW1l
KSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKIAotICAgIFdlYkNvcmU6OmRl
bGV0ZUNvb2tpZShjb250ZXh0LCB1cmwsIGNvb2tpZU5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0
ZUNvb2tpZShzZXNzaW9uLCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCiAvLyBEYXRhYmFzZVN0cmF0
ZWd5CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBs
YXRmb3JtU3RyYXRlZ2llcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHJldmlzaW9uIDEzODQw
NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDE1ICs1NywxMiBAQCBwcml2YXRl
OgogCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIG5v
dGlmeUNvb2tpZXNDaGFuZ2VkKCkgT1ZFUlJJREU7Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0Uo
Q0ZORVRXT1JLKQotICAgIHZpcnR1YWwgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+
IGRlZmF1bHRDb29raWVTdG9yYWdlKCkgT1ZFUlJJREU7Ci0jZW5kaWYKLSAgICB2aXJ0dWFsIFN0
cmluZyBjb29raWVzRm9yRE9NKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29u
dGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktV
UkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgY29va2llc0Vu
YWJsZWQoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBT
dHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoV2ViQ29yZTo6TmV0d29ya2luZ0Nv
bnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpL
VVJMJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoV2ViQ29yZTo6
TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0Kiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VS
TCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OktVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAK
ICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFT
RSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJ
KHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzQsMTAgKzM0LDggQEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHNldFByaXZh
dGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5nJik7Ci0g
ICAgc3RhdGljIHZvaWQgc3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOwogICAgIHN0YXRpYyB2
b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0
cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwotICAgIHN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNz
aW9uUmVmIGRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogICAgIHN0YXRpYyB2b2lkIHNldENvb2tp
ZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwogCiBw
cml2YXRlOgpAQCAtNDgsOCArNDYsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIG5l
ZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29s
IGxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoKSBjb25zdCBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3Jh
Z2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpTY2hlZHVs
ZVBhaXJIYXNoU2V0KiBzY2hlZHVsZWRSdW5Mb29wUGFpcnMoKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0IE9WRVJSSURFOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQkocmV2aXNpb24gMTM4NDA3
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNiBAQAog
I2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmgi
CiAKLSNpbXBvcnQgPFdlYkNvcmUvQ29va2llU3RvcmFnZUNGTmV0Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0ZyYW1lTG9hZGVyQ2xpZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgpAQCAtMzIsOCArMzEsMTEgQEAgdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgQ0ZVUkxTdG9y
YWdlU2Vzc2lvblJlZiBkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbjsKLXN0YXRpYyBDRlVSTFN0b3Jh
Z2VTZXNzaW9uUmVmIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uOworc3RhdGljIE93blB0
cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigp
Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9u
Piwgc2Vzc2lvbiwgKCkpOworICAgIHJldHVybiBzZXNzaW9uOworfQogCiBib29sIFdlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6Om5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkgY29uc3QKIHsKQEAg
LTY3LDI2ICs2OSwxNyBAQCB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldFByaXZh
CiAgICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpID0gaWRl
bnRpZmllcjsKIH0KIAotdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpzd2l0Y2hUb05l
d1Rlc3RpbmdTZXNzaW9uKCkKLXsKLSAgICAvLyBTZXQgYSBwcml2YXRlIHNlc3Npb24gZm9yIHRl
c3RpbmcgdG8gYXZvaWQgaW50ZXJmZXJpbmcgd2l0aCBnbG9iYWwgY29va2llcy4gVGhpcyBzaG91
bGQgYmUgZGlmZmVyZW50IGZyb20gcHJpdmF0ZSBicm93c2luZyBzZXNzaW9uLgotICAgIGlmIChk
ZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbikKLSAgICAgICAgQ0ZSZWxlYXNlKGRlZmF1bHRDRlN0b3Jh
Z2VTZXNzaW9uKTsKLSAgICBkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbiA9IFdLQ3JlYXRlUHJpdmF0
ZVN0b3JhZ2VTZXNzaW9uKENGU1RSKCJQcml2YXRlIFdlYktpdCBTZXNzaW9uIikpOwotfQotCiB2
b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oKQogewogICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IERvbid0IGNyZWF0ZSBhbiB1
bm5lY2Vzc2FyeSBzZXNzaW9uIHdoZW4gdXNpbmcgbmV0d29yayBwcm9jZXNzLgogCiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b24pCisgICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFN0cmluZyBiYXNlID0gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25J
ZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpID8gU3RyaW5nKFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0g
YnVuZGxlSWRlbnRpZmllcl0pIDogcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlm
aWVyQmFzZSgpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVudGlmaWVyID0gU3Ry
aW5nKGJhc2UgKyAiLlByaXZhdGVCcm93c2luZyIpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgU3Ry
aW5nIGlkZW50aWZpZXJCYXNlID0gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlm
aWVyQmFzZSgpLmlzTnVsbCgpID8gU3RyaW5nKFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxl
SWRlbnRpZmllcl0pIDogcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFz
ZSgpOwogCi0gICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24gPSBXS0NyZWF0ZVByaXZh
dGVTdG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCkpOworICAgIHByaXZhdGVCcm93c2lu
Z1N0b3JhZ2VTZXNzaW9uKCkgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oaWRlbnRpZmllckJhc2UpOwogfQogCiB2b2lkIFdlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKQEAgLTk0LDM5ICs4
NywyOCBAQCB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQCiAgICAgaWYg
KCFwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Q0ZSZWxlYXNlKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKTsKLSAgICBwcml2YXRlQnJv
d3NpbmdTdG9yYWdlU2Vzc2lvbiA9IDA7Ci19Ci0KLUNGVVJMU3RvcmFnZVNlc3Npb25SZWYgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkKLXsKLSAgICBy
ZXR1cm4gZGVmYXVsdENGU3RvcmFnZVNlc3Npb247Ci19Ci0KLWJvb2wgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
ZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpICYmIGZyYW1lKCktPnNldHRpbmdzKCktPnBy
aXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lv
bigpID0gbnVsbHB0cjsKIH0KIAotQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CitOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsK
LSAgICBpZiAoaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkpIHsKLSAgICAgICAgQVNTRVJUKHByaXZh
dGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKTsKLSAgICAgICAgcmV0dXJuIHByaXZhdGVCcm93c2lu
Z1N0b3JhZ2VTZXNzaW9uOworICAgIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlID0gZnJhbWUo
KSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpICYmIGZyYW1lKCktPnNldHRpbmdzKCktPnByaXZhdGVC
cm93c2luZ0VuYWJsZWQoKTsKKyAgICBpZiAoaW5Qcml2YXRlQnJvd3NpbmdNb2RlKSB7CisgICAg
ICAgIEFTU0VSVChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpKTsKKyAgICAgICAgcmV0
dXJuICpwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpOwogICAgIH0KLSAgICByZXR1cm4g
ZGVmYXVsdENGU3RvcmFnZVNlc3Npb247CisgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yQWxsQ29udGV4dHMoSFRUUENvb2tpZUFj
Y2VwdFBvbGljeSBwb2xpY3kpCiB7CiAgICAgW1tOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhU
VFBDb29raWVTdG9yYWdlXSBzZXRDb29raWVBY2NlcHRQb2xpY3k6c3RhdGljX2Nhc3Q8TlNIVFRQ
Q29va2llQWNjZXB0UG9saWN5Pihwb2xpY3kpXTsKIAotICAgIGlmIChSZXRhaW5QdHI8Q0ZIVFRQ
Q29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGRlZmF1bHRDRkhUVFBDb29raWVTdG9y
YWdlKCkpCisgICAgaWYgKFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVT
dG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5j
b29raWVTdG9yYWdlKCkpCiAgICAgICAgIFdLU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShjb29r
aWVTdG9yYWdlLmdldCgpLCBwb2xpY3kpOwogCi0gICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBw
cml2YXRlQnJvd3NpbmdDb29raWVTdG9yYWdlID0gYWRvcHRDRihXS0NvcHlIVFRQQ29va2llU3Rv
cmFnZShwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbikpOwotICAgICAgICBXS1NldEhUVFBD
b29raWVBY2NlcHRQb2xpY3kocHJpdmF0ZUJyb3dzaW5nQ29va2llU3RvcmFnZS5nZXQoKSwgcG9s
aWN5KTsKKyAgICBpZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSkgeworICAgICAg
ICBXS1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b24oKS0+Y29va2llU3RvcmFnZSgpLmdldCgpLCBwb2xpY3kpOwogICAgIH0KIH0KIApJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYlBsYXRmb3JtU3RyYXRlZ2llc01hYy5tbQkocmV2aXNpb24g
MTM4NDA3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ5ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmgiCi0KLSNpbmNsdWRlICJXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmgi
Ci0jaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotUmV0YWluUHRyPENGSFRUUENvb2tpZVN0
b3JhZ2VSZWY+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVmYXVsdENvb2tpZVN0b3JhZ2UoKQot
ewotICAgIGlmIChDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHNlc3Npb24gPSBXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKSkKLSAgICAgICAgcmV0dXJuIGFk
b3B0Q0YoV0tDb3B5SFRUUENvb2tpZVN0b3JhZ2Uoc2Vzc2lvbikpOwotCi0jaWYgVVNFKENGTkVU
V09SSykKLSAgICByZXR1cm4gV0tHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UoKTsKLSNlbHNl
Ci0gICAgLy8gV2hlbiB1c2luZyBOU1VSTENvbm5lY3Rpb24sIHdlIGFsc28gdXNlIGl0cyBzaGFy
ZWQgY29va2llIHN0b3JhZ2UuCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0pTRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNS
YW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWFpblJlc291cmNlTG9hZGVyLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9OZXR3b3JraW5nQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm9kZVRy
YXZlcnNhbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UGx1Z2luRG9jdW1lbnQuaD4KQEAgLTI0OCw3ICsyNDksNyBAQCB2b2lkIFdlYkZyYW1lOjpzdGFy
dERvd25sb2FkKGNvbnN0IFdlYkNvCiAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAg
IGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAg
ICBib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBtX2NvcmVGcmFtZS0+bG9hZGVyKCktPm5l
dHdvcmtpbmdDb250ZXh0KCktPmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpOworICAgICAgICBib29s
IHByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBtX2NvcmVGcmFtZS0+bG9hZGVyKCktPm5ldHdvcmtp
bmdDb250ZXh0KCktPnN0b3JhZ2VTZXNzaW9uKCkuaXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7
CiAgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlN0
YXJ0RG93bmxvYWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgcG9saWN5RG93bmxvYWRJRCwgcmVx
dWVzdCksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkocmV2aXNpb24g
MTM4NDA3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBACiAjaW1wb3J0IDxXZWJDb3Jl
L0hpdFRlc3RSZXN1bHQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTENvbnZlcnRlci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtp
bmdDb250ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlSGFuZGxl
Lmg+CkBAIC02NzgsNyArNjc5LDcgQEAgYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybUhhc0xvY2FsRGF0
YUZvclVSTAogICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QqIHJlcXVlc3QgPSBbW05TTXV0YWJsZVVS
TFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJMOnVybF07CiAgICAgW3JlcXVlc3Qgc2V0VmFsdWU6
KE5TU3RyaW5nKil1c2VyQWdlbnQoKSBmb3JIVFRQSGVhZGVyRmllbGQ6QCJVc2VyLUFnZW50Il07
CiAgICAgTlNDYWNoZWRVUkxSZXNwb25zZSAqY2FjaGVkUmVzcG9uc2U7Ci0gICAgaWYgKENGVVJM
U3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24gPSBjb3JlUGFnZSgpLT5tYWluRnJhbWUo
KS0+bG9hZGVyKCktPm5ldHdvcmtpbmdDb250ZXh0KCktPnN0b3JhZ2VTZXNzaW9uKCkpCisgICAg
aWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24gPSBjb3JlUGFnZSgpLT5t
YWluRnJhbWUoKS0+bG9hZGVyKCktPm5ldHdvcmtpbmdDb250ZXh0KCktPnN0b3JhZ2VTZXNzaW9u
KCkucGxhdGZvcm1TZXNzaW9uKCkpCiAgICAgICAgIGNhY2hlZFJlc3BvbnNlID0gV0tDYWNoZWRS
ZXNwb25zZUZvclJlcXVlc3Qoc3RvcmFnZVNlc3Npb24sIHJlcXVlc3QpOwogICAgIGVsc2UKICAg
ICAgICAgY2FjaGVkUmVzcG9uc2UgPSBbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIGNhY2hl
ZFJlc3BvbnNlRm9yUmVxdWVzdDpyZXF1ZXN0XTsKQEAgLTY5Miw3ICs2OTMsNyBAQCBzdGF0aWMg
TlNDYWNoZWRVUkxSZXNwb25zZSAqY2FjaGVkUmVzcG9uCiAgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZVVSTFJlcXVlc3Q+IHJlcXVlc3QoQWRvcHROUywgW1tOU011dGFibGVVUkxSZXF1ZXN0IGFsbG9j
XSBpbml0V2l0aFVSTDp1cmxdKTsKICAgICBbcmVxdWVzdC5nZXQoKSBzZXRWYWx1ZTooTlNTdHJp
bmcgKil3ZWJQYWdlLT51c2VyQWdlbnQoKSBmb3JIVFRQSGVhZGVyRmllbGQ6QCJVc2VyLUFnZW50
Il07CiAKLSAgICBpZiAoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbiA9IHdl
YlBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+bmV0d29ya2luZ0NvbnRl
eHQoKS0+c3RvcmFnZVNlc3Npb24oKSkKKyAgICBpZiAoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBz
dG9yYWdlU2Vzc2lvbiA9IHdlYlBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLT5sb2FkZXIo
KS0+bmV0d29ya2luZ0NvbnRleHQoKS0+c3RvcmFnZVNlc3Npb24oKS5wbGF0Zm9ybVNlc3Npb24o
KSkKICAgICAgICAgcmV0dXJuIFdLQ2FjaGVkUmVzcG9uc2VGb3JSZXF1ZXN0KHN0b3JhZ2VTZXNz
aW9uLCByZXF1ZXN0LmdldCgpKTsKIAogICAgIHJldHVybiBbW05TVVJMQ2FjaGUgc2hhcmVkVVJM
Q2FjaGVdIGNhY2hlZFJlc3BvbnNlRm9yUmVxdWVzdDpyZXF1ZXN0LmdldCgpXTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1T
dHJhdGVnaWVzRWZsLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODYsMzQgKzg2LDM0IEBAIHZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpub3RpZnlDb29r
aWUKIHsKIH0KIAotU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y29va2llc0ZvckRPTShO
ZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y29va2llc0ZvckRPTShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRP
TShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVz
Rm9yRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TdHJh
dGVnaWVzRWZsOjpzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNv
b2tpZVN0cmluZykKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpzZXRDb29raWVzRnJvbURP
TShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7Ci0g
ICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCBj
b29raWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZp
cnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdp
ZXNFZmw6OmNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29sIFBsYXRmb3JtU3RyYXRlZ2ll
c0VmbDo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJu
IFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAg
cmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7
CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29udGV4dCwgZmly
c3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0
cmF0ZWdpZXNFZmw6OmdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJh
d0Nvb2tpZXMpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Z2V0UmF3Q29va2llcyhjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHks
IGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7Ci0gICAgcmV0
dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCByYXdD
b29raWVzKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBmaXJz
dFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0Vm
bDo6ZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzRWZs
OjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKLSAgICBXZWJDb3JlOjpk
ZWxldGVDb29raWUoY29udGV4dCwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxl
dGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0KIAogdm9pZCBQbGF0Zm9ybVN0
cmF0ZWdpZXNFZmw6OnJlZnJlc2hQbHVnaW5zKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oCShyZXZp
c2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9y
bVN0cmF0ZWdpZXNFZmwuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTIgKzQ3LDEyIEBAIHByaXZh
dGU6CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKICAgICB2aXJ0dWFsIHZvaWQg
bm90aWZ5Q29va2llc0NoYW5nZWQoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9N
KFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVz
RnJvbURPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2
aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0g
ICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoV2ViQ29yZTo6
TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoV2ViQ29y
ZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tp
ZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1
YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpL
VVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpLVVJMJik7CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdmly
dHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBXZWJD
b3JlOjpEYXRhYmFzZVN0cmF0ZWd5CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0
aW9uLgpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJh
dGVnaWVzR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04MCwzNCArODAsMzQgQEAgdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNH
dGs6Om5vdGlmeUNvb2tpZQogewogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpj
b29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpj
b29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVybiBXZWJDb3Jl
Ojpjb29raWVzRm9yRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdl
YkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9p
ZCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OnNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OnNl
dENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZVN0cmluZykKIHsKLSAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShjb250ZXh0LCBmaXJz
dFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CisgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21E
T00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQogCi1ib29sIFBs
YXRmb3JtU3RyYXRlZ2llc0d0azo6Y29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgUGxh
dGZvcm1TdHJhdGVnaWVzR3RrOjpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkK
IHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoY29udGV4dCwgZmlyc3RQYXJ0
eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmly
c3RQYXJ0eSwgdXJsKTsKIH0KIAotU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBQbGF0Zm9ybVN0cmF0
ZWdpZXNHdGs6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYg
dXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1i
b29sIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Z2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0
b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpnZXRS
YXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2ll
cykKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhjb250ZXh0LCBmaXJzdFBh
cnR5LCB1cmwsIHJhd0Nvb2tpZXMpOworICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVz
KHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7CiB9CiAKLXZvaWQgUGxhdGZv
cm1TdHJhdGVnaWVzR3RrOjpkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBQbGF0Zm9y
bVN0cmF0ZWdpZXNHdGs6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewot
ICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShjb250ZXh0LCB1cmwsIGNvb2tpZU5hbWUpOworICAg
IFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCiAv
LyBQbHVnaW5TdHJhdGVneQpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
UGxhdGZvcm1TdHJhdGVnaWVzR3RrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmgJKHJldmlzaW9uIDEzODQwNykK
KysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMiArNDYsMTIgQEAgcHJpdmF0ZToKIAogICAgIC8v
IFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneQogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDb29raWVz
Q2hhbmdlZCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oV2ViQ29yZTo6TmV0
d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBX
ZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKFdlYkNv
cmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgYm9vbCBj
b29raWVzRW5hYmxlZChXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIFN0
cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShXZWJDb3JlOjpOZXR3b3JraW5nQ29u
dGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktV
UkwmKTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhXZWJDb3JlOjpOZXR3b3JraW5n
Q29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwotICAgIHZpcnR1YWwgdm9pZCBkZWxl
dGVDb29raWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBT
dHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdl
YkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNl
U3RyYXRlZ3kKICAgICAvLyAtIFVzaW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTEw
OCw2ICsxMDgsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Nb3VzZUV2ZW50Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGx1Z2luVmlld0Jhc2UuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvUHJvdGVjdGlvblNwYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNl
RXJyb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHJl
dmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTMgKzI3LDggQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQoZnJhbWUpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBzZXRQcml2YXRlQnJvd3Np
bmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRp
YyB2b2lkIHN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKICAgICBzdGF0aWMgdm9pZCBlbnN1
cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oKTsKLSAgICBzdGF0aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBk
ZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKLQotICAgIHN0YXRpYyB2b2lkIHNldENvb2tpZUFjY2Vw
dFBvbGljeUZvclRlc3RpbmdDb250ZXh0KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAKIHBy
aXZhdGU6CiAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChXZWJDb3JlOjpGcmFtZSogZnJh
bWUpCkBAIC00Myw4ICszOCw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNT
aXRlU3BlY2lmaWNRdWlya3MoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgbG9j
YWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZCgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1
YWwgYm9vbCBpblByaXZhdGVCcm93c2luZ01vZGUoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNl
c3Npb24oKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjaGVkdWxlUGFp
ckhhc2hTZXQqIHNjaGVkdWxlZFJ1bkxvb3BQYWlycygpIGNvbnN0IE9WRVJSSURFOwogICAgIHZp
cnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgT1ZFUlJJREU7CiB9OwpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0Lm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yMSw2ICsyMSw3IEBACiAjaW1wb3J0ICJXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgiCiAK
ICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXJDbGllbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5o
PgpAQCAtMjgsOCArMjksMTEgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0YXRp
YyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uOwotc3RhdGlj
IENGVVJMU3RvcmFnZVNlc3Npb25SZWYgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb247Citz
dGF0aWMgT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4mIHByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE93blB0cjxOZXR3b3JrU3Rv
cmFnZVNlc3Npb24+LCBzZXNzaW9uLCAoKSk7CisgICAgcmV0dXJuIHNlc3Npb247Cit9CiAKIGJv
b2wgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6bmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSBj
b25zdAogewpAQCAtNTEsNjkgKzU1LDI3IEBAIFJlc291cmNlRXJyb3IgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDoKICAgICByZXR1cm4gZnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgpLT5ibG9j
a2VkRXJyb3IocmVxdWVzdCk7CiB9CiAKLXN0YXRpYyBTdHJpbmcmIHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGJhc2UsICgpKTsKLSAgICByZXR1
cm4gYmFzZTsKLX0KLQotdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRQcml2YXRl
QnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllcikKLXsKLSAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNl
KCkgPSBpZGVudGlmaWVyOwotfQotCi12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN3
aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKQotewotICAgIC8vIFNldCBhIHByaXZhdGUgc2Vzc2lv
biBmb3IgdGVzdGluZyB0byBhdm9pZCBpbnRlcmZlcmluZyB3aXRoIGdsb2JhbCBjb29raWVzLiBU
aGlzIHNob3VsZCBiZSBkaWZmZXJlbnQgZnJvbSBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb24uCi0g
ICAgaWYgKGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uKQotICAgICAgICBDRlJlbGVhc2UoZGVmYXVs
dENGU3RvcmFnZVNlc3Npb24pOwotICAgIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uID0gV0tDcmVh
dGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTVFIoIlByaXZhdGUgV2ViS2l0IFNlc3Npb24iKSk7
Ci19Ci0KIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAocHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pCisgICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBiYXNlID0gcHJpdmF0
ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpID8gU3RyaW5n
KFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0pIDogcHJpdmF0ZUJyb3dz
aW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpOwotICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gY2ZJZGVudGlmaWVyID0gU3RyaW5nKGJhc2UgKyAiLlByaXZhdGVCcm93c2luZyIpLmNy
ZWF0ZUNGU3RyaW5nKCk7Ci0KLSAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbiA9IFdL
Q3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKGNmSWRlbnRpZmllci5nZXQoKSk7CisgICAgcHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3Jl
YXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlk
ZW50aWZpZXJdKTsKIH0KIAogdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7Ci0gICAgaWYgKCFwcml2YXRlQnJvd3NpbmdTdG9y
YWdlU2Vzc2lvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0ZSZWxlYXNlKHByaXZhdGVCcm93
c2luZ1N0b3JhZ2VTZXNzaW9uKTsKLSAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbiA9
IDA7Ci19Ci0KLUNGVVJMU3RvcmFnZVNlc3Npb25SZWYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkKLXsKLSAgICByZXR1cm4gZGVmYXVsdENGU3RvcmFn
ZVNlc3Npb247CisgICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSA9IG51bGxwdHI7
CiB9CiAKLWJvb2wgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6aW5Qcml2YXRlQnJvd3NpbmdN
b2RlKCkgY29uc3QKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIHJldHVybiBmcmFtZSgpICYmIGZy
YW1lKCktPnNldHRpbmdzKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCgpOwotfQotCi1DRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKLXsKLSAgICBpZiAoaW5Qcml2YXRlQnJv
d3NpbmdNb2RlKCkpIHsKLSAgICAgICAgQVNTRVJUKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNz
aW9uKTsKLSAgICAgICAgcmV0dXJuIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uOworICAg
IGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlID0gZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5n
cygpICYmIGZyYW1lKCktPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAg
ICBpZiAoaW5Qcml2YXRlQnJvd3NpbmdNb2RlKSB7CisgICAgICAgIEFTU0VSVChwcml2YXRlQnJv
d3NpbmdTdG9yYWdlU2Vzc2lvbigpKTsKKyAgICAgICAgcmV0dXJuICpwcml2YXRlQnJvd3NpbmdT
dG9yYWdlU2Vzc2lvbigpOwogICAgIH0KLSAgICByZXR1cm4gZGVmYXVsdENGU3RvcmFnZVNlc3Np
b247CisgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCk7CiB9CiAKLXZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNj
ZXB0UG9saWN5Rm9yVGVzdGluZ0NvbnRleHQoTlNIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGlj
eSkKLXsKLSAgICBBU1NFUlQoZGVmYXVsdENGU3RvcmFnZVNlc3Npb24pOwotICAgIFJldGFpblB0
cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBkZWZhdWx0Q29va2llU3RvcmFnZSA9IGFkb3B0Q0Yo
V0tDb3B5SFRUUENvb2tpZVN0b3JhZ2UoZGVmYXVsdENGU3RvcmFnZVNlc3Npb24pKTsKLSAgICBX
S1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3koZGVmYXVsdENvb2tpZVN0b3JhZ2UuZ2V0KCksIHBv
bGljeSk7Ci19CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAkocmV2aXNpb24gMTM4NDA3KQorKysgU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUzLDEzICs1MywxMiBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29y
ZTo6Q29va2llc1N0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2Vk
KCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJl
Zj4gZGVmYXVsdENvb2tpZVN0b3JhZ2UoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFN0cmluZyBj
b29raWVzRm9yRE9NKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCos
IGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBj
b25zdCBTdHJpbmcmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQo
V2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcg
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoV2ViQ29yZTo6TmV0d29y
a2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgU3Ry
aW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktV
UkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgT1ZFUlJJREU7CisgICAgdmlydHVh
bCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAKICAgICAv
LyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxl
bWVudGF0aW9uLgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQkocmV2aXNpb24gMTM4NDA3KQorKysg
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC04Nyw0NyArODcsMzQgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6Om5vdGlmeUNvb2tpZQogewogfQogCi1SZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFn
ZVJlZj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWZhdWx0Q29va2llU3RvcmFnZSgpCitTdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYg
dXJsKQogewotICAgIGlmIChDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHNlc3Npb24gPSBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0OjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKSkKLSAgICAgICAgcmV0
dXJuIGFkb3B0Q0YoV0tDb3B5SFRUUENvb2tpZVN0b3JhZ2Uoc2Vzc2lvbikpOwotCi0jaWYgVVNF
KENGTkVUV09SSykKLSAgICByZXR1cm4gV0tHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UoKTsK
LSNlbHNlCi0gICAgLy8gV2hlbiB1c2luZyBOU1VSTENvbm5lY3Rpb24sIHdlIGFsc28gdXNlIGl0
cyBzaGFyZWQgY29va2llIHN0b3JhZ2UuCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQotewot
ICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVy
bCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQYXJ0
eSwgdXJsKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9t
RE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKLSAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJv
bURPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CisgICAgV2ViQ29y
ZTo6c2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJp
bmcpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQoTmV0
d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtV
UkwmIHVybCkKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRW5hYmxlZChjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHks
IGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQo
Y29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0Vu
YWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0
cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVy
biBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBh
cnR5LCB1cmwpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2ll
cyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8
Q29va2llPiYgcmF3Q29va2llcykKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2ll
cyhjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOworICAgIHJldHVybiBXZWJD
b3JlOjpnZXRSYXdDb29raWVzKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7
CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxldGVDb29raWUoTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVO
YW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBjb29raWVOYW1lKQogewotICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShjb250ZXh0LCB1cmws
IGNvb2tpZU5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1cmwsIGNv
b2tpZU5hbWUpOwogfQogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVmcmVzaFBsdWdp
bnMoKQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1t
CShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZl
cmVuY2VzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBACiAjaW1wb3J0ICJXZWJO
U0RpY3Rpb25hcnlFeHRyYXMuaCIKICNpbXBvcnQgIldlYk5TVVJMRXh0cmFzLmgiCiAjaW1wb3J0
IDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0Nv
b2tpZVN0b3JhZ2VDRk5ldC5oPgorI2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Np
b24uaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KIApAQCAtMTI4NiwxMiArMTI4NiwxMiBAQCArICh2b2lkKV9zZXRJQkNyZWF0
b3JJRDooTlNTdHJpbmcgKilzdHJpCiAKICsgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05l
d1Rlc3RpbmdTZXNzaW9uCiB7Ci0gICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3dpdGNo
VG9OZXdUZXN0aW5nU2Vzc2lvbigpOworICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNo
VG9OZXdUZXN0aW5nU2Vzc2lvbigpOwogfQogCiArICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xv
YWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSlw
b2xpY3kKIHsKLSAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29raWVBY2NlcHRQ
b2xpY3lGb3JUZXN0aW5nQ29udGV4dChwb2xpY3kpOworICAgIFdLU2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNv
b2tpZVN0b3JhZ2UoKS5nZXQoKSwgcG9saWN5KTsKIH0KIAogLSAoQk9PTClpc0RPTVBhc3RlQWxs
b3dlZApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMTM4
NDA3KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDE2LDcgKzIwMTYsNyBAQCAtIChOU0NhY2hlZFVSTFJlc3BvbnNlICopX2NhY2hl
ZFJlc3BvbnNlCiAgICAgaWYgKCFfcHJpdmF0ZS0+cGFnZSkKICAgICAgICAgcmV0dXJuIG5pbDsK
IAotICAgIGlmIChDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uID0gX3ByaXZh
dGUtPnBhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+bmV0d29ya2luZ0NvbnRleHQoKS0+c3Rv
cmFnZVNlc3Npb24oKSkKKyAgICBpZiAoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vz
c2lvbiA9IF9wcml2YXRlLT5wYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPm5ldHdvcmtpbmdD
b250ZXh0KCktPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCkpCiAgICAgICAgIGNh
Y2hlZFJlc3BvbnNlID0gV0tDYWNoZWRSZXNwb25zZUZvclJlcXVlc3Qoc3RvcmFnZVNlc3Npb24s
IHJlcXVlc3QuZ2V0KCkpOwogICAgIGVsc2UKICAgICAgICAgY2FjaGVkUmVzcG9uc2UgPSBbW05T
VVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIGNhY2hlZFJlc3BvbnNlRm9yUmVxdWVzdDpyZXF1ZXN0
LmdldCgpXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1T
dHJhdGVnaWVzUXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtOTksMzQgKzk5LDM0IEBAIHZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6
Om5vdGlmeUNvb2tpZXMKIHsKIH0KIAotU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb29r
aWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNvb2tp
ZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNv
b2tpZXNGb3JET00oY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29y
ZTo6Y29va2llc0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIFBs
YXRmb3JtU3RyYXRlZ2llc1F0OjpzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCog
Y29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OnNldENvb2tp
ZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmlu
ZykKIHsKLSAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShjb250ZXh0LCBmaXJzdFBhcnR5
LCB1cmwsIGNvb2tpZVN0cmluZyk7CisgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oc2Vz
c2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQogCi1ib29sIFBsYXRmb3Jt
U3RyYXRlZ2llc1F0Ojpjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBQbGF0Zm9ybVN0
cmF0ZWdpZXNRdDo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAg
cmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7
CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHNlc3Npb24sIGZpcnN0UGFydHks
IHVybCk7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0g
ICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnRleHQs
IGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLWJvb2wgUGxhdGZv
cm1TdHJhdGVnaWVzUXQ6OmdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4m
IHJhd0Nvb2tpZXMpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpnZXRSYXdDb29raWVzKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIHJh
d0Nvb2tpZXMpOworICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHNlc3Npb24sIGZp
cnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TdHJhdGVnaWVz
UXQ6OmRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1F0
OjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKLSAgICBXZWJDb3JlOjpk
ZWxldGVDb29raWUoY29udGV4dCwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxl
dGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0KIAogdm9pZCBQbGF0Zm9ybVN0
cmF0ZWdpZXNRdDo6cmVmcmVzaFBsdWdpbnMoKQpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuaAkocmV2aXNpb24g
MTM4NDA3KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0
ZWdpZXNRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCwxMiArNTgsMTIgQEAgcHJpdmF0ZToKICAg
ICAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKICAgICB2aXJ0dWFsIHZvaWQgbm90
aWZ5Q29va2llc0NoYW5nZWQoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKFdl
YkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJv
bURPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0
dWFsIGJvb2wgY29va2llc0VuYWJsZWQoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAg
dmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoV2ViQ29yZTo6TmV0
d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBX
ZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoV2ViQ29yZTo6
TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNG
b3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwg
dm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJM
JiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpL
VVJMJik7CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdmlydHVh
bCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBXZWJDb3Jl
OjpEYXRhYmFzZVN0cmF0ZWd5CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9u
LgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29va2llTWFuYWdlckNGTmV0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb29raWVNYW5hZ2VyQ0ZOZXQuY3BwCShy
ZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb29raWVNYW5hZ2VyQ0ZO
ZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiV2ViQ29v
a2llTWFuYWdlci5oIgogCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSFRUUENvb2tpZXNQcml2Lmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9Db29raWVTdG9yYWdlQ0ZOZXQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IApJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsNyArMTU0LDYgQEAK
ICNpZiBVU0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENhY2hlUHJpdi5o
PgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFByb3RvY29sUHJpdi5oPgotI2luY2x1ZGUgPFdl
YkNvcmUvQ29va2llU3RvcmFnZUNGTmV0Lmg+CiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJm
YWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPiAKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDcgKzIzLDYgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2lm
IFVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGSFRUUENvb2tpZXNQcml2Lmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9Db29raWVTdG9yYWdlQ0ZOZXQuaD4KICNlbmRpZgogI2luY2x1
ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpZiBVU0UoQ0ZORVRXT1JLKQpAQCAtMzMsOCArMzIs
MTEgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAjaWYgVVNFKENGTkVUV09SSykKLXN0
YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uOwotc3Rh
dGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb247
CitzdGF0aWMgT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4mIHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE93blB0cjxOZXR3b3Jr
U3RvcmFnZVNlc3Npb24+LCBzZXNzaW9uLCAoKSk7CisgICAgcmV0dXJuIHNlc3Npb247Cit9CiAj
ZW5kaWYKIAogUGFzc1JlZlB0cjxXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0OjpjcmVhdGUoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJB
Z2VudCkKQEAgLTY5LDc1ICs3MSw0MyBAQCB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6
OnNldFByaXZhCiAgICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFz
ZSgpID0gaWRlbnRpZmllcjsKIH0KIAotdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpz
d2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkKLXsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIC8v
IFNldCBhIHByaXZhdGUgc2Vzc2lvbiBmb3IgdGVzdGluZyB0byBhdm9pZCBpbnRlcmZlcmluZyB3
aXRoIGdsb2JhbCBjb29raWVzLiBUaGlzIHNob3VsZCBiZSBkaWZmZXJlbnQgZnJvbSBwcml2YXRl
IGJyb3dzaW5nIHNlc3Npb24uCi0gICAgZGVmYXVsdENGU3RvcmFnZVNlc3Npb24gPSB3a0NyZWF0
ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlNUUigiUHJpdmF0ZSBXZWJLaXQgU2Vzc2lvbiIpLCBk
ZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbik7Ci0jZW5kaWYKLX0KLQogdm9pZCBXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogI2lmIFVTRShDRk5FVFdPUkspCi0gICAgaWYgKHByaXZhdGVC
cm93c2luZ1N0b3JhZ2VTZXNzaW9uKQorICAgIGlmIChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vz
c2lvbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgYmFzZSA9IHByaXZhdGVCcm93
c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKS5pc051bGwoKSA/IFN0cmluZyhyZWlu
dGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihDRkJ1bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rpb25h
cnlLZXkoQ0ZCdW5kbGVHZXRNYWluQnVuZGxlKCksIGtDRkJ1bmRsZUlkZW50aWZpZXJLZXkpKSkg
OiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCk7Ci0gICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50aWZpZXIgPSBTdHJpbmcoYmFzZSArICIuUHJpdmF0
ZUJyb3dzaW5nIikuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICBTdHJpbmcgaWRlbnRpZmllckJhc2Ug
PSBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkuaXNOdWxsKCkg
PyBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZCdW5kbGVHZXRWYWx1ZUZv
ckluZm9EaWN0aW9uYXJ5S2V5KENGQnVuZGxlR2V0TWFpbkJ1bmRsZSgpLCBrQ0ZCdW5kbGVJZGVu
dGlmaWVyS2V5KSkpIDogcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFz
ZSgpOwogCi0gICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24gPSB3a0NyZWF0ZVByaXZh
dGVTdG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCksIGRlZmF1bHRDRlN0b3JhZ2VTZXNz
aW9uKTsKKyAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpID0gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKGlkZW50aWZpZXJCYXNlKTsK
ICNlbmRpZgogfQogCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKICNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIGlmICghcHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIENGUmVs
ZWFzZShwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbik7Ci0gICAgcHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb24gPSAwOworICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkg
PSBudWxscHRyOwogI2VuZGlmCiB9CiAKICNpZiBVU0UoQ0ZORVRXT1JLKQotQ0ZVUkxTdG9yYWdl
U2Vzc2lvblJlZiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZWZhdWx0U3RvcmFnZVNlc3Np
b24oKQorTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpz
dG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGRlZmF1bHRDRlN0b3JhZ2VTZXNz
aW9uOwotfQotCi1ib29sIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmluUHJpdmF0ZUJyb3dz
aW5nTW9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGlu
Z3MoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7Ci19
Ci0KLUNGVVJMU3RvcmFnZVNlc3Npb25SZWYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3Rv
cmFnZVNlc3Npb24oKSBjb25zdAotewotICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9
IGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpOwotICAgIGlmIChwcml2YXRlQnJvd3NpbmdFbmFibGVk
KSB7Ci0gICAgICAgIEFTU0VSVChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbik7Ci0gICAg
ICAgIHJldHVybiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbjsKKyAgICBib29sIGluUHJp
dmF0ZUJyb3dzaW5nTW9kZSA9IGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKSAmJiBmcmFt
ZSgpLT5zZXR0aW5ncygpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgaWYgKGluUHJp
dmF0ZUJyb3dzaW5nTW9kZSkgeworICAgICAgICBBU1NFUlQocHJpdmF0ZUJyb3dzaW5nU3RvcmFn
ZVNlc3Npb24oKSk7CisgICAgICAgIHJldHVybiAqcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b24oKTsKICAgICB9Ci0gICAgcmV0dXJuIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uOwotfQotCi12
b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZvclRl
c3RpbmdDb250ZXh0KENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kgcG9saWN5KQotewot
ICAgIEFTU0VSVChkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbik7Ci0gICAgUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+IGRlZmF1bHRDb29raWVTdG9yYWdlID0gYWRvcHRDRih3a0NvcHlI
VFRQQ29va2llU3RvcmFnZShkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbikpOwotICAgIENGSFRUUENv
b2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3koZGVmYXVsdENvb2tpZVN0b3JhZ2UuZ2V0
KCksIHBvbGljeSk7CisgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0
b3JhZ2VTZXNzaW9uKCk7CiB9CiAKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0
Q29va2llQWNjZXB0UG9saWN5Rm9yQWxsQ29udGV4dHMoQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2Vw
dFBvbGljeSBwb2xpY3kpCiB7Ci0gICAgaWYgKFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdl
UmVmPiBjb29raWVTdG9yYWdlID0gZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKSkKKyAgICBp
ZiAoUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2Uo
KSkKICAgICAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29r
aWVTdG9yYWdlLmdldCgpLCBwb2xpY3kpOwogCi0gICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBw
cml2YXRlQnJvd3NpbmdDb29raWVTdG9yYWdlID0gYWRvcHRDRih3a0NvcHlIVFRQQ29va2llU3Rv
cmFnZShwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbikpOwotICAgICAgICBDRkhUVFBDb29r
aWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KHByaXZhdGVCcm93c2luZ0Nvb2tpZVN0b3Jh
Z2UuZ2V0KCksIHBvbGljeSk7Ci0gICAgfQorICAgIGlmIChwcml2YXRlQnJvd3NpbmdTdG9yYWdl
U2Vzc2lvbigpKQorICAgICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9s
aWN5KHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCktPmNvb2tpZVN0b3JhZ2UoKS5nZXQo
KSwgcG9saWN5KTsKIH0KICNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkocmV2
aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxNCArMjksMTAgQEAg
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+
IGNyZWF0ZShXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdURjo6U3RyaW5nJiB1c2VyQWdlbnQpOwog
CiAgICAgc3RhdGljIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlm
aWVyQmFzZShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgdm9pZCBzd2l0Y2hUb05ld1Rlc3Rp
bmdTZXNzaW9uKCk7CiAgICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bigpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CiAK
ICNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIHN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGRl
ZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwotCi0gICAgc3RhdGljIHZvaWQgc2V0Q29va2llQWNjZXB0
UG9saWN5Rm9yVGVzdGluZ0NvbnRleHQoQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeSk7
CiAgICAgc3RhdGljIHZvaWQgc2V0Q29va2llQWNjZXB0UG9saWN5Rm9yQWxsQ29udGV4dHMoQ0ZI
VFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeSk7CiAjZW5kaWYKIApAQCAtNTAsOCArNDYsNyBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgdXNlckFnZW50KCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBXVEY6OlN0cmluZyByZWZlcnJlcigpIGNvbnN0OwogI2lmIFVTRShDRk5FVFdP
UkspCi0gICAgdmlydHVhbCBib29sIGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpIGNvbnN0OwotICAg
IHZpcnR1YWwgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0Owor
ICAgIHZpcnR1YWwgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lv
bigpIGNvbnN0OwogI2VuZGlmCiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJs
b2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKIApJbmRl
eDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04Niw0NCArODYsMzQgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Om5vdGlm
eUNvb2tpZQogewogfQogCi0jaWYgVVNFKENGTkVUV09SSykKLVJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlZmF1bHRDb29raWVTdG9yYWdl
KCkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJiB1cmwpCiB7Ci0gICAgaWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc2Vzc2lvbiA9
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpKQotICAg
ICAgICByZXR1cm4gYWRvcHRDRih3a0NvcHlIVFRQQ29va2llU3RvcmFnZShzZXNzaW9uKSk7Ci0K
LSAgICByZXR1cm4gd2tHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UoKTsKLX0KLSNlbmRpZgot
Ci1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdD
b250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwp
Ci17Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oY29udGV4dCwgZmlyc3RQYXJ0
eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzZXNzaW9uLCBmaXJz
dFBhcnR5LCB1cmwpOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2ll
c0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewotICAgIFdlYkNvcmU6OnNldENvb2tp
ZXNGcm9tRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBX
ZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tp
ZVN0cmluZyk7CiB9CiAKLWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRW5hYmxl
ZChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYgdXJsKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVk
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5h
YmxlZChjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29r
aWVzRW5hYmxlZChzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5n
Q29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJs
KQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAg
cmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZp
cnN0UGFydHksIHVybCk7CiB9CiAKLWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdD
b29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZl
Y3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewotICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdD
b29raWVzKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7CisgICAgcmV0dXJu
IFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29r
aWVzKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShOZXR3
b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNv
b2tpZU5hbWUpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0gICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKGNvbnRleHQs
IHVybCwgY29va2llTmFtZSk7CisgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHNlc3Npb24sIHVy
bCwgY29va2llTmFtZSk7CiB9CiAKIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWZyZXNo
UGx1Z2lucygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAkocmV2aXNpb24gMTM4NDA3KQorKysgU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUyLDE1ICs1MiwxMiBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29y
ZTo6Q29va2llc1N0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2Vk
KCk7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICB2aXJ0dWFsIFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiBkZWZhdWx0Q29va2llU3RvcmFnZSgpOwotI2VuZGlmCi0gICAgdmlydHVh
bCBTdHJpbmcgY29va2llc0ZvckRPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0
IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwg
Y29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKFdlYkNvcmU6
Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgYm9v
bCBnZXRSYXdDb29raWVzKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3JlOjpOZXR3
b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAg
ICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwg
Ym9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7
CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdD
b29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNv
cmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29y
ZTo6Q29va2llPiYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0
cmluZyYpOwogCiAgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQogICAgIC8vIC0gVXNp
bmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2Vi
Q29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0Uu
Y3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBw
b3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsMzQg
KzgzLDM0IEBAIHZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6Om5vdGlmeUNvb2sKIHsKIH0K
IAotU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjb29raWVzRm9yRE9NKE5ldHdvcmtp
bmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1
cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmNvb2tpZXNGb3JET00oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oY29u
dGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRP
TShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIFBsYXRmb3JtU3RyYXRlZ2ll
c1dpbkNFOjpzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29u
c3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZVN0cmluZykKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OnNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKLSAg
ICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIGNv
b2tpZVN0cmluZyk7CisgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbiwgZmly
c3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQogCi1ib29sIFBsYXRmb3JtU3RyYXRlZ2ll
c1dpbkNFOjpjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3Qg
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdp
ZXNXaW5DRTo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0
dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHNlc3Npb24sIGZpcnN0UGFydHksIHVy
bCk7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5D
RTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7
Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnRl
eHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLWJvb2wgUGxh
dGZvcm1TdHJhdGVnaWVzV2luQ0U6OmdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENv
b2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpnZXRSYXdD
b29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykK
IHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhjb250ZXh0LCBmaXJzdFBhcnR5
LCB1cmwsIHJhd0Nvb2tpZXMpOworICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHNl
c3Npb24sIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7CiB9CiAKLXZvaWQgUGxhdGZvcm1T
dHJhdGVnaWVzV2luQ0U6OmRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIFBsYXRmb3Jt
U3RyYXRlZ2llc1dpbkNFOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsK
LSAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoY29udGV4dCwgdXJsLCBjb29raWVOYW1lKTsKKyAg
ICBXZWJDb3JlOjpkZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0KIAog
dm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6cmVmcmVzaFBsdWdpbnMoKQpJbmRleDogU291
cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZv
cm1TdHJhdGVnaWVzV2luQ0UuaAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC93
aW5jZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01MSwxMiArNTEsMTIgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OkNvb2tp
ZXNTdHJhdGVneQogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDb29raWVzQ2hhbmdlZCgpOwotICAg
IHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7
Ci0gICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKFdlYkNvcmU6Ok5ldHdvcmtpbmdD
b250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
S1VSTCYsIGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChX
ZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdl
YkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0
dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0
IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiYpOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoV2ViQ29y
ZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5n
Jik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2
aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
S1VSTCYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIGJvb2wg
Z2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBj
b25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kKICAgICAv
LyAtIFVzaW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCg==
</data>
<flag name="commit-queue"
          id="197899"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180592</attachid>
            <date>2012-12-21 22:22:43 -0800</date>
            <delta_ts>2012-12-21 22:39:04 -0800</delta_ts>
            <desc>patch for EWS</desc>
            <filename>StorageSession.txt</filename>
            <type>text/plain</type>
            <size>173312</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjAyOCw2ICsyMDI4LDcgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRUUFZhbGlkYXRpb24u
Y3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcAogICAgIHBsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCisgICAgcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29u
dGVudFR5cGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuY3BwCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNTc2MCw2ICs1NzYwLDcgQEAgd2ViY29y
ZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Byb3h5U2VydmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0YXRlTm90aWZpZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdGF0ZU5vdGlmaWVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9u
IDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAg
LTEwNjEsNiArMTA2MSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRU
UFZhbGlkYXRpb24uY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwIFwK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCBcCisgICAgcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcCBcCiAgICAgcGxhdGZv
cm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsv
UHJvdGVjdGlvblNwYWNlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5j
cHAgXApAQCAtMjI3Myw2ICsyMjc0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0
d29yay9IVFRQVmFsaWRhdGlvbi5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBTdGF0dXND
b2Rlcy5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmluZy5oIFwKKyAgICBwbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIFwKICAgICBwbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtpbmdDb250ZXh0LmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
YXRlTm90aWZpZXIuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5o
IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjA3LDcgKzIwNyw3IEBA
IF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yRDFFdgogX19aTjdXZWJDb3JlMTJjYWNoZVN0b3Jh
Z2VFdgogX19aTjdXZWJDb3JlMTJjcmVhdGVNYXJrdXBFUEtOU180Tm9kZUVOU18xM0VDaGlsZHJl
bk9ubHlFUE4zV1RGNlZlY3RvcklQUzBfTG0wRUVFTlNfMTNFQWJzb2x1dGVVUkxzRVBOUzVfSU5T
XzEzUXVhbGlmaWVkTmFtZUVMbTBFRUUKIF9fWk43V2ViQ29yZTEyY3JlYXRlTWFya3VwRVBLTlNf
NVJhbmdlRVBOM1dURjZWZWN0b3JJUE5TXzROb2RlRUxtMEVFRU5TXzIzRUFubm90YXRlRm9ySW50
ZXJjaGFuZ2VFYk5TXzEzRUFic29sdXRlVVJMc0UKLV9fWk43V2ViQ29yZTEyZGVsZXRlQ29va2ll
RVBOU18xN05ldHdvcmtpbmdDb250ZXh0RVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdFCitfX1pO
N1dlYkNvcmUxMmRlbGV0ZUNvb2tpZUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNf
NEtVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMmdjQ29udHJvbGxlckV2CiBfX1pO
N1dlYkNvcmUxMmljb25EYXRhYmFzZUV2CiBfX1pON1dlYkNvcmUxMnRvVWludDhBcnJheUVOM0pT
QzdKU1ZhbHVlRQpAQCAtMjM2LDEwICsyMzYsMTAgQEAgX19aTjdXZWJDb3JlMTNSZXNvdXJjZUVy
cm9yQzFFUDdOU0Vycm9yCiBfX1pON1dlYkNvcmUxM1Jlc291cmNlRXJyb3JDMUVQOV9fQ0ZFcnJv
cgogX19aTjdXZWJDb3JlMTNTdHlsZWRFbGVtZW50MjJzZXRJbmxpbmVTdHlsZVByb3BlcnR5RU5T
XzEzQ1NTUHJvcGVydHlJREVSS04zV1RGNlN0cmluZ0ViCiBfX1pON1dlYkNvcmUxM1N0eWxlZEVs
ZW1lbnQyMnNldElubGluZVN0eWxlUHJvcGVydHlFTlNfMTNDU1NQcm9wZXJ0eUlERWROU18xN0NT
U1ByaW1pdGl2ZVZhbHVlOVVuaXRUeXBlc0ViCi1fX1pON1dlYkNvcmUxM2Nvb2tpZXNGb3JET01F
UE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VSTEVTNF8KK19fWk43V2ViQ29yZTEzY29v
a2llc0ZvckRPTUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfNEtVUkxFUzVfCiBf
X1pON1dlYkNvcmUxM2NyZWF0ZVdyYXBwZXJFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUds
b2JhbE9iamVjdEVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUxM2RpcmVjdG9yeU5hbWVFUktOM1dU
RjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxM2dldFJhd0Nvb2tpZXNFUE5TXzE3TmV0d29ya2luZ0Nv
bnRleHRFUktOU180S1VSTEVTNF9STjNXVEY2VmVjdG9ySU5TXzZDb29raWVFTG0wRUVFCitfX1pO
N1dlYkNvcmUxM2dldFJhd0Nvb2tpZXNFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05T
XzRLVVJMRVM1X1JOM1dURjZWZWN0b3JJTlNfNkNvb2tpZUVMbTBFRUUKIF9fWk43V2ViQ29yZTEz
dG9BcnJheUJ1ZmZlckVOM0pTQzdKU1ZhbHVlRQogX19aTjdXZWJDb3JlMTN0b0hUTUxFbGVtZW50
RVBOU18yMUZvcm1Bc3NvY2lhdGVkRWxlbWVudEUKIF9fWk43V2ViQ29yZTEzdG9KU0RPTVdpbmRv
d0VOM0pTQzdKU1ZhbHVlRQpAQCAtMjU0LDYgKzI1NCwxMCBAQCBfX1pON1dlYkNvcmUxNERvY3Vt
ZW50TG9hZGVyMTNhdHRhY2hUb0ZyCiBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTVkZXRh
Y2hGcm9tRnJhbWVFdgogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjE4YWRkQXJjaGl2ZVJl
c291cmNlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzE1QXJjaGl2ZVJlc291cmNlRUVFCiBfX1pON1dl
YkNvcmUxNFJlc291cmNlTG9hZGVyMzJkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUVS
S05TXzIzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VFCitfX1pON1dlYkNvcmUxNGNvb2tpZXNFbmFi
bGVkRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU180S1VSTEVTNV8KK19fWk43V2Vi
Q29yZTE3c2V0Q29va2llc0Zyb21ET01FUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05T
XzRLVVJMRVM1X1JLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMjFOZXR3b3JrU3RvcmFnZVNl
c3Npb24yMWRlZmF1bHRTdG9yYWdlU2Vzc2lvbkV2CitfX1pON1dlYkNvcmUyMU5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjI1c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbkV2CiBfX1pON1dlYkNvcmUyMVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTExZGVzZXJpYWxpemVFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMxXzE0
SlNHbG9iYWxPYmplY3RFUE4zV1RGNlZlY3RvcklOUzZfNlJlZlB0cklOU18xMU1lc3NhZ2VQb3J0
RUVFTG0xRUVFTlNfMjJTZXJpYWxpemF0aW9uRXJyb3JNb2RlRQogX19aTjdXZWJDb3JlMjFTZXJp
YWxpemVkU2NyaXB0VmFsdWU2Y3JlYXRlRVBOM0pTQzlFeGVjU3RhdGVFTlMxXzdKU1ZhbHVlRVBO
M1dURjZWZWN0b3JJTlM1XzZSZWZQdHJJTlNfMTFNZXNzYWdlUG9ydEVFRUxtMUVFRVBOUzZfSU5T
N19JTlM1XzExQXJyYXlCdWZmZXJFRUVMbTFFRUVOU18yMlNlcmlhbGl6YXRpb25FcnJvck1vZGVF
CiBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTZjcmVhdGVFUktOM1dURjZTdHJp
bmdFCkBAIC0yODQsNyArMjg4LDYgQEAgX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjlzZWxl
Y3RBbGxFdgogX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbkMxRVBOU181RnJhbWVFCiBfX1pO
N1dlYkNvcmUxNExvYWRlclN0cmF0ZWd5MjFyZXNvdXJjZUxvYWRTY2hlZHVsZXJFdgogX19aTjdX
ZWJDb3JlMTRQbHVnaW5Eb2N1bWVudDEwcGx1Z2luTm9kZUV2Ci1fX1pON1dlYkNvcmUxNGNvb2tp
ZXNFbmFibGVkRVBOU18xN05ldHdvcmtpbmdDb250ZXh0RVJLTlNfNEtVUkxFUzRfCiBfX1pOSzdX
ZWJDb3JlNUZyYW1lMjV0cmFja2VkUmVwYWludFJlY3RzQXNUZXh0RXYKIF9fWk43V2ViQ29yZTlG
cmFtZVZpZXcxN3NldFRyYWNrc1JlcGFpbnRzRWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMHJl
c2V0VHJhY2tlZFJlcGFpbnRzRXYKQEAgLTQ4OCw3ICs0OTEsNyBAQCBfX1pON1dlYkNvcmUxNlZp
c2libGVTZWxlY3Rpb25DMUVSS05TXzE1CiBfX1pON1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb25D
MUVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRWIKIF9fWk43V2ViQ29yZTE2Y3JlYXRlRnVsbE1hcmt1
cEVQS05TXzROb2RlRQogX19aTjdXZWJDb3JlMTZjcmVhdGVGdWxsTWFya3VwRVBLTlNfNVJhbmdl
RQotX19aTjdXZWJDb3JlMTZkZWxldGVBbGxDb29raWVzRVBOU18xN05ldHdvcmtpbmdDb250ZXh0
RQorX19aTjdXZWJDb3JlMTZkZWxldGVBbGxDb29raWVzRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNl
c3Npb25FCiBfX1pON1dlYkNvcmUxNmVuY2xvc2luZ0ludFJlY3RFUktOU185RmxvYXRSZWN0RQog
X19aTjdXZWJDb3JlMTZpc0VuZE9mUGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNf
MjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCiBfX1pON1dlYkNvcmUxNmlzVXNlclZpc2li
bGVVUkxFUDhOU1N0cmluZwpAQCAtNTExLDcgKzUxNCw2IEBAIF9fWk43V2ViQ29yZTE3U3VicmVz
b3VyY2VMb2FkZXI2Y3JlYXRlRVAKIF9fWk43V2ViQ29yZTE3Vmlld3BvcnRBcmd1bWVudHMxOWRl
cHJlY2F0ZWRUYXJnZXREUElFCiBfX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0dXJlRVBOU18x
N0pTRE9NR2xvYmFsT2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNsYXNzSW5mb0UKIF9f
Wk43V2ViQ29yZTE3b3BlblRlbXBvcmFyeUZpbGVFUktOM1dURjZTdHJpbmdFUmkKLV9fWk43V2Vi
Q29yZTE3c2V0Q29va2llc0Zyb21ET01FUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VS
TEVTNF9SS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE3dXNlclZpc2libGVTdHJpbmdFUDVO
U1VSTAogX19aTjdXZWJDb3JlMThET01XaW5kb3dFeHRlbnNpb25DMUVQTlNfNUZyYW1lRVBOU18x
NURPTVdyYXBwZXJXb3JsZEUKIF9fWk43V2ViQ29yZTE4SFRNTENvbnRlbnRFbGVtZW50NmNyZWF0
ZUVQTlNfOERvY3VtZW50RQpAQCAtNTk1LDYgKzU5Nyw3IEBAIF9fWk43V2ViQ29yZTIwcHJvdG9j
b2xJc0phdmFTY3JpcHRFUktOM1cKIF9fWk43V2ViQ29yZTIwU3BhY2VTcGxpdFN0cmluZ0RhdGFE
MUV2CiBfX1pON1dlYkNvcmUyMUJhY2tGb3J3YXJkQ29udHJvbGxlcjExaXRlbUF0SW5kZXhFaQog
X19aTjdXZWJDb3JlMjFNZW1vcnlQcmVzc3VyZUhhbmRsZXI3aW5zdGFsbEV2CitfX1pON1dlYkNv
cmUyMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjI4Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkVS
S04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIxUGxhdGZvcm1LZXlib2FyZEV2ZW50MjRkaXNh
bWJpZ3VhdGVLZXlEb3duRXZlbnRFTlNfMTNQbGF0Zm9ybUV2ZW50NFR5cGVFYgogX19aTjdXZWJD
b3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIxOXN0YXJ0UmVzb3VyY2VMb2FkZXJFUE5TXzE0UmVz
b3VyY2VMb2FkZXJFCiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjIwc2VydmVQ
ZW5kaW5nUmVxdWVzdHNFTlNfMjBSZXNvdXJjZUxvYWRQcmlvcml0eUUKQEAgLTY1MCw3ICs2NTMs
NyBAQCBfX1pON1dlYkNvcmUyM2NyZWF0ZUZyYWdtZW50RnJvbU5vZGVzRVBOCiBfX1pON1dlYkNv
cmUyM2RhdGFGb3JVUkxDb21wb25lbnRUeXBlRVA1TlNVUkxsCiBfX1pON1dlYkNvcmUyM2RlY29k
ZUhvc3ROYW1lV2l0aFJhbmdlRVA4TlNTdHJpbmc4X05TUmFuZ2UKIF9fWk43V2ViQ29yZTIzZW5j
b2RlSG9zdE5hbWVXaXRoUmFuZ2VFUDhOU1N0cmluZzhfTlNSYW5nZQotX19aTjdXZWJDb3JlMjNn
ZXRIb3N0bmFtZXNXaXRoQ29va2llc0VQTlNfMTdOZXR3b3JraW5nQ29udGV4dEVSTjNXVEY3SGFz
aFNldElOUzJfNlN0cmluZ0VOUzJfMTBTdHJpbmdIYXNoRU5TMl8xMEhhc2hUcmFpdHNJUzRfRUVF
RQorX19aTjdXZWJDb3JlMjNnZXRIb3N0bmFtZXNXaXRoQ29va2llc0VSS05TXzIxTmV0d29ya1N0
b3JhZ2VTZXNzaW9uRVJOM1dURjdIYXNoU2V0SU5TM182U3RyaW5nRU5TM18xMFN0cmluZ0hhc2hF
TlMzXzEwSGFzaFRyYWl0c0lTNV9FRUVFCiBfX1pON1dlYkNvcmUyNEJpbmFyeVByb3BlcnR5TGlz
dFdyaXRlcjE3d3JpdGVQcm9wZXJ0eUxpc3RFdgogX19aTjdXZWJDb3JlMjRDYWNoZWRSZXNvdXJj
ZUhhbmRsZUJhc2UxMXNldFJlc291cmNlRVBOU18xNENhY2hlZFJlc291cmNlRQogX19aTjdXZWJD
b3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIxMGZpcnN0Q2hpbGRFdgpAQCAtNjY5LDcgKzY3
Miw3IEBAIF9fWk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyQzIKIF9fWk43V2Vi
Q29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyRDJFdgogX19aTjdXZWJDb3JlMjRjcmVhdGVG
cmFnbWVudEZyb21NYXJrdXBFUE5TXzhEb2N1bWVudEVSS04zV1RGNlN0cmluZ0VTNV9OU18yN0Zy
YWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbkUKIF9fWk43V2ViQ29yZTI0ZGVjb2RlVVJMRXNjYXBl
U2VxdWVuY2VzRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMjRkZWxldGVDb29raWVzRm9y
SG9zdG5hbWVFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOM1dURjZTdHJpbmdFCitfX1pON1dl
YkNvcmUyNGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNz
aW9uRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjRmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b25FUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyNG5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdl
ZEUKIF9fWk43V2ViQ29yZTI1SGlzdG9yeVByb3BlcnR5TGlzdFdyaXRlcjExcmVsZWFzZURhdGFF
dgpAQCAtNjk2LDEwICs2OTksOSBAQCBfX1pON1dlYkNvcmUyN0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvCiBfX1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazE0c2V0T3Jp
ZW50YXRpb25FTjNXVEYxMFBhc3NSZWZQdHJJTlNfMjFEZXZpY2VPcmllbnRhdGlvbkRhdGFFRUUK
IF9fWk43V2ViQ29yZTI3RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrQzFFdgogX19aTjdXZWJD
b3JlMjdzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXNFdgotX19aTjdXZWJDb3JlMjZkZWZhdWx0
Q0ZIVFRQQ29va2llU3RvcmFnZUV2CiBfX1pON1dlYkNvcmUyOGVuY29kZVdpdGhVUkxFc2NhcGVT
ZXF1ZW5jZXNFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyOHJlbW92ZUxhbmd1YWdlQ2hh
bmdlT2JzZXJ2ZXJFUHYKLV9fWk43V2ViQ29yZTI5Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWVFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VSTEVTNF8KK19fWk43V2ViQ29yZTI5
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWVFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lv
bkVSS05TXzRLVVJMRVM1XwogX19aTjdXZWJDb3JlMjlpc0NoYXJhY3RlclNtYXJ0UmVwbGFjZUV4
ZW1wdEVpYgogX19aTjdXZWJDb3JlMzBob3N0TmFtZU5lZWRzRGVjb2RpbmdXaXRoUmFuZ2VFUDhO
U1N0cmluZzhfTlNSYW5nZQogX19aTjdXZWJDb3JlMzBob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRo
UmFuZ2VFUDhOU1N0cmluZzhfTlNSYW5nZQpAQCAtMTMzMCw2ICsxMzMyLDcgQEAgX19aTks3V2Vi
Q29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U2aXNIVAogX19aTks3V2ViQ29yZTIwUmVzb3VyY2VS
ZXNwb25zZUJhc2U4bWltZVR5cGVFdgogX19aTks3V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9s
bGVyMTJmb3J3YXJkQ291bnRFdgogX19aTks3V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9sbGVy
OWJhY2tDb3VudEV2CitfX1pOSzdXZWJDb3JlMjFOZXR3b3JrU3RvcmFnZVNlc3Npb24xM2Nvb2tp
ZVN0b3JhZ2VFdgogX19aTks3V2ViQ29yZTIxUmVuZGVyTGF5ZXJDb21wb3NpdG9yMTFzY3JvbGxM
YXllckV2CiBfX1pOSzdXZWJDb3JlMjFSZW5kZXJMYXllckNvbXBvc2l0b3IxNXJvb3RSZW5kZXJM
YXllckV2CiBfX1pOSzdXZWJDb3JlMjFVc2VyQ29udGVudFVSTFBhdHRlcm43bWF0Y2hlc0VSS05T
XzRLVVJMRQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC00MzY3LDYgKzQzNjcsNyBA
QAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmNwcCcsCkBAIC00Mzg2LDcg
KzQzODcsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRp
b25DRi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZO
ZXQuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VD
Rk5ldC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9y
YWdlQ0ZOZXQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9jZi9Eb3dubG9hZEJ1bmRsZS5o
JywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzI2MjEsNiArMzI2MjEsMTAgQEAKIAkJCQkJ
PgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3Jt
XG5ldHdvcmtcTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJ
CQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXE5ldHdvcmtp
bmdDb250ZXh0LmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBAIC0zMjg0NCwxMCArMzI4NDgsNiBA
QAogCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJCQkJPC9GaWxlPgogCQkJCQk8RmlsZQot
CQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXENvb2tpZVN0b3JhZ2VD
Rk5ldC5oIgotCQkJCQkJPgotCQkJCQk8L0ZpbGU+Ci0JCQkJCTxGaWxlCiAJCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAi
CiAJCQkJCQk+CiAJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTMyOTQwLDYgKzMyOTQwLDEw
IEBACiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAi
CisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKIAkJCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGxhdGZvcm1cbmV0d29ya1xjZlxQcm94eVNlcnZlckNGTmV0LmNwcCIKIAkJCQkJCT4KIAkJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDM3LDcgKzIwMzcsNiBAQAogCQk3RUU2ODQ2MTEyRDI2RTM4MDBFNzk0MTUgLyogQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdFRTY4NDRFMTJEMjZFMzgwMEU3OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdFRTY4NDYyMTJEMjZFMzgwMEU3OTQxNSAvKiBDb29raWVKYXJDRk5ldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ0RjEyRDI2RTM4
MDBFNzk0MTUgLyogQ29va2llSmFyQ0ZOZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2MzEyRDI2RTM4
MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDUwMTJEMjZFMzgwMEU3OTQxNSAvKiBDb29r
aWVTdG9yYWdlQ0ZOZXQuY3BwICovOyB9OwotCQk3RUU2ODQ2NDEyRDI2RTM4MDBFNzk0MTUgLyog
Q29va2llU3RvcmFnZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VF
Njg0NjUxMkQyNkUzODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NTIxMkQyNkUz
ODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2
NjEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1MzEyRDI2RTM4MDBFNzk0
MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgKi87IH07CiAJCTdFRTY4NDY3MTJEMjZFMzgw
MEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1NDEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURh
dGFTdHJlYW1DRk5ldC5oICovOyB9OwpAQCAtNjA5NSw2ICs2MDk0LDggQEAKIAkJRTEzNEY1QUIx
MkVFMzQzRjAwNEVDNThEIC8qIEludFJlY3RIYXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTM0RjVBQTEyRUUzNDNGMDA0RUM1OEQgLyogSW50UmVj
dEhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMTM5ODY2MzE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTM5ODY2MTE1NDc4NDc0MDAx
RTNGNjUgLyogU3R5bGVSZXNvbHZlci5jcHAgKi87IH07CiAJCUUxMzk4NjY0MTU0Nzg0NzQwMDFF
M0Y2NSAvKiBTdHlsZVJlc29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTM5ODY2MjE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5o
ICovOyB9OworCQlFMTNFRjM0NDE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTNF
RjM0MjE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTEzRUYzNDkxNjg1MEM0
NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxM0VGMzQ3MTY4NTBDNDcwMDM0Qzgz
RiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgKi87IH07CiAJCUUxM0YwMUYxMTI3
MEUxOTAwMERGQkE3MSAvKiBDb29raWVTdG9yYWdlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEzRjAxRjAxMjcwRTE5MDAwREZCQTcxIC8qIENv
b2tpZVN0b3JhZ2VNYWMubW0gKi87IH07CiAJCUUxNDI0QzhBMTY0QjNCNEUwMEYzMkQ0MCAvKiBQ
bGF0Zm9ybUNvb2tpZUphci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTE0MjRDODkxNjRCM0I0RTAwRjMyRDQwIC8qIFBsYXRmb3JtQ29va2llSmFyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTE0MjRD
OTAxNjRCNDYwQjAwRjMyRDQwIC8qIENvb2tpZUphck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNDI0QzhGMTY0QjQ2MEIwMEYzMkQ0MCAvKiBD
b29raWVKYXJNYWMubW0gKi87IH07CkBAIC05MzcwLDcgKzkzNzEsNiBAQAogCQk3RUU2ODQ0RTEy
RDI2RTM4MDBFNzk0MTUgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NEYxMkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZUph
ckNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvb2tpZUph
ckNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTAxMkQyNkUz
ODAwRTc5NDE1IC8qIENvb2tpZVN0b3JhZ2VDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDb29raWVTdG9yYWdlQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNG
TmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tpZVN0b3JhZ2VDRk5l
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1MjEyRDI2RTM4MDBFNzk0
MTUgLyogQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTMxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybURhdGFT
dHJlYW1DRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDU0MTJE
MjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZvcm1EYXRhU3RyZWFtQ0ZOZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEzNTc2LDYgKzEzNTc2LDggQEAKIAkJRTEzNEY1QUExMkVFMzQzRjAwNEVD
NThEIC8qIEludFJlY3RIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
dFJlY3RIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMzk4NjYxMTU0Nzg0
NzQwMDFFM0Y2NSAvKiBTdHlsZVJlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0eWxlUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMTM5ODY2MjE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZVJlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUxM0VGMzQyMTY4NEVDRjQwMDM0QzgzRiAvKiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxM0VGMzQ3MTY4NTBD
NDcwMDM0QzgzRiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxM0YwMUVBMTI3MEUxMEQwMERGQkE3MSAv
KiBDb29raWVTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tp
ZVN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEzRjAxRjAxMjcwRTE5
MDAwREZCQTcxIC8qIENvb2tpZVN0b3JhZ2VNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBDb29raWVTdG9yYWdlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMTQyNEM4OTE2NEIzQjRFMDBGMzJENDAgLyogUGxhdGZvcm1Db29raWVKYXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxhdGZvcm1Db29raWVKYXIuaDsg
cGF0aCA9IG5ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE1ODMzLDYgKzE1ODM1LDcgQEAKIAkJCQkzN0REQ0Q5MjEzODQ0RkQ1MDAwOEI3
OTMgLyogTUlNRUhlYWRlci5jcHAgKi8sCiAJCQkJMzdERENEOTMxMzg0NEZENTAwMDhCNzkzIC8q
IE1JTUVIZWFkZXIuaCAqLywKIAkJCQk2MjhEMjE0QjEyMTMxRUQxMDA1NURDRkMgLyogTmV0d29y
a2luZ0NvbnRleHQuaCAqLywKKwkJCQlFMTNFRjM0MjE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmggKi8sCiAJCQkJMUE3RkE2MUEwRERBM0JCRTAwMjhGOEE1IC8qIE5l
dHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCAqLywKIAkJCQkxQTdGQTYxODBEREEzQjNBMDAyOEY4QTUg
LyogTmV0d29ya1N0YXRlTm90aWZpZXIuaCAqLywKIAkJCQk0NDc5NTgwMjE2NDNCNDdCMDAxRTBB
N0YgLyogUGFyc2VkQ29udGVudFR5cGUuY3BwICovLApAQCAtMjA0MDMsMTMgKzIwNDA2LDEzIEBA
CiAJCQkJN0VFNjg0NEUxMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmggKi8sCiAJCQkJN0VFNjg0NEYxMkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZUphckNGTmV0LmNw
cCAqLywKIAkJCQk3RUU2ODQ1MDEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0
LmNwcCAqLywKLQkJCQk3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNG
TmV0LmggKi8sCiAJCQkJN0VFNjg0NTIxMkQyNkUzODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9y
YWdlQ0ZOZXQuY3BwICovLAogCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5l
dC5jcHAgKi8sCiAJCQkJN0VFNjg0NTMxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU0MTJEMjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0
cmVhbUNGTmV0LmggKi8sCiAJCQkJN0VFNjg0NTUxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1
bkxvb3BDRi5jcHAgKi8sCiAJCQkJN0VFNjg0NTYxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1
bkxvb3BDRi5oICovLAorCQkJCUUxM0VGMzQ3MTY4NTBDNDcwMDM0QzgzRiAvKiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb25DRk5ldC5jcHAgKi8sCiAJCQkJMUFGOEUxQzExMjU2NzNFMDAwMjMwRkY3IC8q
IFByb3h5U2VydmVyQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAv
KiBSZXNvdXJjZUVycm9yLmggKi8sCiAJCQkJN0VFNjg0NTgxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlRXJyb3JDRi5jcHAgKi8sCkBAIC0yMjg5NCw3ICsyMjg5Nyw2IEBACiAJCQkJRDhCNjE1
MkYxMDMyNDk1MTAwQzg1NTRBIC8qIENvb2tpZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzM5QjVC
NjMxMzFEQUEzMjAwRjQ4RDAyIC8qIENvb2tpZXNTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzNEMDIxMkQxMzFEQjM3QjAwNDA5MUE4IC8qIENvb2tpZVN0b3JhZ2UuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTdFRTY4NDY0MTJEMjZFMzgwMEU3OTQxNSAvKiBDb29raWVTdG9yYWdlQ0ZOZXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZFNkZENDg4MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29yZGlu
YXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZEMDQwQTE5ODlDQTAwN0ZCOEM1IC8qIENv
dW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCOTc5MEU4MjA2OTIwMEIyNTk2NSAvKiBD
b3VudGVyQ29udGVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTk4Miw2ICsyNTk4NCw3IEBACiAJ
CQkJRjM3QTU2MjMxNjc5Q0Y3QjAwQzU3MDQ2IC8qIEhlYXBHcmFwaFNlcmlhbGl6ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjg4OTBBMTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCODg5MEYxNjdEMzAxNjAwMTBDREE1
IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTEzRUYz
NDQxNjg0RUNGNDAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0yOTEwMCw2ICsyOTEwMyw3IEBACiAJCQkJMEZCODg5MEIxNjdEMkZBMTAwMTBDREE1
IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCODg5
MEUxNjdEMzAxNjAwMTBDREE1IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyMDlCNDU2QjE2Nzk2QTdFMDBFNTRFNEUgLyogSlNDcnlwdG9DdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTEzRUYzNDkxNjg1MEM0NzAwMzRDODNGIC8qIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nvb2tpZUphci5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db29raWVKYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTmV0
d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvb2tpZUphci5oIgogCiAjaWYg
VVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCkBAIC00Myw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4dChjb25z
dCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CisgICAgLy8gRklYTUU6IFJldHVybmluZyAwIG1lYW5z
IGZhbGxpbmcgYmFjayB0byBkZWZhdWx0IGNvbnRleHQuIFRoYXQncyBub3QgYSBjaG9pY2UgdGhh
dCBpcyBhcHByb3ByaWF0ZSB0byBkbyBhdCBydW50aW1lCiAgICAgaWYgKCFkb2N1bWVudCkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CkBA
IC01NCw1NyArNTYsNjggQEAgc3RhdGljIE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29u
dAogICAgIHJldHVybiBsb2FkZXItPm5ldHdvcmtpbmdDb250ZXh0KCk7CiB9CiAKKyNpZiBQTEFU
Rk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCitpbmxpbmUgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzdG9yYWdlU2Vzc2lvbihjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQgPSBuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCk7CisgICAg
cmV0dXJuIGNvbnRleHQgPyBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpIDogTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKK30KKyNkZWZpbmUgU0VTU0lPTihk
b2N1bWVudCkgc3RvcmFnZVNlc3Npb24oZG9jdW1lbnQpCisjZWxzZQorI2RlZmluZSBTRVNTSU9O
KGRvY3VtZW50KSBOZXR3b3JrU3RvcmFnZVNlc3Npb24obmV0d29ya2luZ0NvbnRleHQoZG9jdW1l
bnQpKQorI2VuZGlmCisKIFN0cmluZyBjb29raWVzKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgS1VSTCYgdXJsKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAgIHJl
dHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmNvb2tpZXNGb3JE
T00obmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgdXJsKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNT
dHJhdGVneSgpLT5jb29raWVzRm9yRE9NKFNFU1NJT04oZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsKICNlbHNlCi0gICAgcmV0dXJuIGNvb2tpZXNGb3JE
T00obmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgdXJsKTsKKyAgICByZXR1cm4gY29va2llc0ZvckRPTShTRVNTSU9OKGRvY3VtZW50
KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVybCk7CiAjZW5kaWYKIH0KIAog
dm9pZCBzZXRDb29raWVzKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykK
LSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPnNldENvb2tpZXNG
cm9tRE9NKG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlG
b3JDb29raWVzKCksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+Y29va2llc1N0cmF0ZWd5KCktPnNldENvb2tpZXNGcm9tRE9NKFNFU1NJT04oZG9jdW1lbnQp
LCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBjb29raWVTdHJpbmcpOwog
I2Vsc2UKLSAgICBzZXRDb29raWVzRnJvbURPTShuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCks
IGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZVN0cmluZyk7Cisg
ICAgc2V0Q29va2llc0Zyb21ET00oU0VTU0lPTihkb2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZVN0cmluZyk7CiAjZW5kaWYKIH0KIAogYm9vbCBj
b29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAjaWYgVVNFKFBMQVRG
T1JNX1NUUkFURUdJRVMpCi0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVz
U3RyYXRlZ3koKS0+Y29va2llc0VuYWJsZWQobmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBk
b2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgZG9jdW1lbnQtPmNvb2tpZVVSTCgpKTsK
KyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5jb29r
aWVzRW5hYmxlZChTRVNTSU9OKGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29r
aWVzKCksIGRvY3VtZW50LT5jb29raWVVUkwoKSk7CiAjZWxzZQotICAgIHJldHVybiBjb29raWVz
RW5hYmxlZChuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCBkb2N1bWVudC0+Y29va2llVVJMKCkpOworICAgIHJldHVybiBjb29raWVz
RW5hYmxlZChTRVNTSU9OKGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVz
KCksIGRvY3VtZW50LT5jb29raWVVUkwoKSk7CiAjZW5kaWYKIH0KIAogU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VS
TCYgdXJsKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAgIHJldHVybiBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFy
dHlGb3JDb29raWVzKCksIHVybCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5j
b29raWVzU3RyYXRlZ3koKS0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU0VTU0lPTihk
b2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpOwogI2Vsc2UK
LSAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUobmV0d29ya2luZ0NvbnRl
eHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsKKyAg
ICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU0VTU0lPTihkb2N1bWVudCks
IGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpOwogI2VuZGlmCiB9CiAKIGJv
b2wgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVy
bCwgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMpCiB7CiAjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJ
RVMpCi0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+
Z2V0UmF3Q29va2llcyhuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCksIGRvY3VtZW50LT5maXJz
dFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOworICAgIHJldHVybiBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmdldFJhd0Nvb2tpZXMoU0VTU0lPTihkb2N1
bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOwog
I2Vsc2UKLSAgICByZXR1cm4gZ2V0UmF3Q29va2llcyhuZXR3b3JraW5nQ29udGV4dChkb2N1bWVu
dCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOworICAg
IHJldHVybiBnZXRSYXdDb29raWVzKFNFU1NJT04oZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBjb29raWVzKTsKICNlbmRpZgogfQogCiB2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb29raWVOYW1lKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+ZGVsZXRlQ29va2llKG5l
dHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmRlbGV0ZUNvb2tpZShTRVNTSU9OKGRv
Y3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKICNlbHNlCi0gICAgZGVsZXRlQ29va2llKG5ldHdv
cmtpbmdDb250ZXh0KGRvY3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBkZWxldGVDb29r
aWUoU0VTU0lPTihkb2N1bWVudCksIHVybCwgY29va2llTmFtZSk7CiAjZW5kaWYKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxMzg0
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlSG9z
dC5oIgogI2luY2x1ZGUgIkFzeW5jRmlsZVN0cmVhbS5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gMTM4NDA3KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJDYWNoZVBvbGljeS5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJQdXJnZVByaW9yaXR5LmgiCisjaW5jbHVkZSAi
UmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0
LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAkocmV2
aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDMwICszMywyMiBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKE1B
QykgfHwgVVNFKENGTkVUV09SSykKLXR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0
b3JhZ2UqICBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgS1VSTDsKLWNsYXNzIE5ldHdvcmtpbmdDb250ZXh0OworY2xhc3MgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOwogc3RydWN0IENvb2tpZTsKIAogY2xhc3MgQ29va2llc1N0cmF0
ZWd5IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQoKSA9
IDA7CiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBS
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gZGVmYXVsdENvb2tpZVN0b3JhZ2UoKSA9
IDA7Ci0jZW5kaWYKLQotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2lu
Z0NvbnRleHQqLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmlu
ZykgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4
dCosIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmKSA9IDA7Ci0gICAgdmlydHVh
bCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOwotICAgIHZpcnR1YWwg
Ym9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+JikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiBjb29raWVOYW1lKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY29v
a2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXRS
YXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgfkNvb2tpZXNTdHJhdGVneSgpIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAkocmV2aXNpb24gMTM4
NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5k
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1
ZXN0LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOZXR3b3JrU3RvcmFnZVNlc3Np
b25faAorI2RlZmluZSBOZXR3b3JrU3RvcmFnZVNlc3Npb25faAorCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgUExBVEZP
Uk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQordHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTFN0
b3JhZ2VTZXNzaW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwordHlwZWRlZiBzdHJ1Y3QgT3Bh
cXVlQ0ZIVFRQQ29va2llU3RvcmFnZSogIENGSFRUUENvb2tpZVN0b3JhZ2VSZWY7CisjZW5kaWYK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOZXR3b3JraW5nQ29udGV4dDsKKworY2xh
c3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3
b3JrU3RvcmFnZVNlc3Npb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsK
KyAgICBzdGF0aWMgUGFzc093blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IGNyZWF0ZVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSk7CisKKyAgICBz
dGF0aWMgdm9pZCBzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7CisKKyNpZiBQTEFURk9STShN
QUMpIHx8IFVTRShDRk5FVFdPUkspCisgICAgLy8gTWF5IGJlIG51bGwsIGluIHdoaWNoIGNhc2Ug
YSBGb3VuZGF0aW9uIGRlZmF1bHQgc2hvdWxkIGJlIHVzZWQuCisgICAgQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZiBwbGF0Zm9ybVNlc3Npb24oKSB7IHJldHVybiBtX3BsYXRmb3JtU2Vzc2lvbi5nZXQo
KTsgfQorICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdl
KCkgY29uc3Q7CisgICAgYm9vbCBpc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSBjb25zdCB7IHJl
dHVybiBtX2lzUHJpdmF0ZTsgfQorI2Vsc2UKKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24oTmV0
d29ya2luZ0NvbnRleHQqIGNvbnRleHQpOworICAgIH5OZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsK
KyAgICBOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCgpIGNvbnN0OworI2VuZGlmCisKK3ByaXZh
dGU6CisjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQorICAgIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbihDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHBsYXRmb3JtU2Vzc2lvbik7CisgICAg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCk7CisgICAgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Np
b25SZWY+IG1fcGxhdGZvcm1TZXNzaW9uOworICAgIGJvb2wgbV9pc1ByaXZhdGU7CisjZWxzZQor
ICAgIFJlZlB0cjxOZXR3b3JraW5nQ29udGV4dD4gbV9jb250ZXh0OworI2VuZGlmCit9OworCisj
aWYgUExBVEZPUk0oV0lOKQorLy8gTmVlZGVkIGZvciBXZWJLaXQxIEFQSSBvbmx5Lgordm9pZCBv
dmVycmlkZUNvb2tpZVN0b3JhZ2UoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZik7CitDRkhUVFBDb29r
aWVTdG9yYWdlUmVmIG92ZXJyaWRlbkNvb2tpZVN0b3JhZ2UoKTsKKyNlbmRpZgorCit9CisKKyNl
bmRpZiAvLyBOZXR3b3JrU3RvcmFnZVNlc3Npb25faApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvblN0
dWIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaCIKKworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkK
K3sKK30KKworTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjp+TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkK
K3sKK30KKworTmV0d29ya2luZ0NvbnRleHQqIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29udGV4
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsKK30KKworUGFzc093blB0
cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbihjb25zdCBTdHJpbmcmKQoreworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiAwOworfQorCitOZXR3b3JrU3RvcmFnZVNlc3Npb24mIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgc2Vzc2lvbiwgKDApKTsKKyAgICBy
ZXR1cm4gc2Vzc2lvbjsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRv
TmV3VGVzdGluZ1Nlc3Npb24oKQoreworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lvbiAxMzg0
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDcgKzIwLDggQEAKICNpZm5kZWYgTmV0d29ya2luZ0Nv
bnRleHRfaAogI2RlZmluZSBOZXR3b3JraW5nQ29udGV4dF9oCiAKLSNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlICJOZXR3b3Jr
U3RvcmFnZVNlc3Npb24uaCIKIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJTY2hlZHVs
ZVBhaXIuaCIKQEAgLTQwLDEwICs0MSw2IEBAIGNsYXNzIFdlYkNvb2tpZUphcjsKIE9CSkNfQ0xB
U1MgTlNPcGVyYXRpb25RdWV1ZTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0Uo
Q0ZORVRXT1JLKQotdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTFN0b3JhZ2VTZXNzaW9uKiBD
RlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwotI2VuZGlmCi0KICNpZiBQTEFURk9STShRVCkKIFFUX0JF
R0lOX05BTUVTUEFDRQogY2xhc3MgUU9iamVjdDsKQEAgLTY4LDYgKzY1LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAjaWYg
UExBVEZPUk0oQ0hST01JVU0pCisgICAgLy8gRklYTUU6IFdyYXAgV2ViQ29va2llSmFyIGludG8g
YSBOZXR3b3JrU3RvcmFnZVNlc3Npb24gdG8gbWFrZSB0aGUgY29kZSBjcm9zcy1wbGF0Zm9ybS4K
ICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVKYXIoKSBjb25zdCA9IDA7
CiAjZW5kaWYKIApAQCAtODAsMTEgKzc4LDEyIEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgUExB
VEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQotICAgIHZpcnR1YWwgYm9vbCBpblByaXZhdGVC
cm93c2luZ01vZGUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgPSAwOwogI2VuZGlmCiAKICNpZiBQ
TEFURk9STShRVCkKKyAgICAvLyBGSVhNRTogV3JhcCBRTmV0d29ya0FjY2Vzc01hbmFnZXIgaW50
byBhIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB0byBtYWtlIHRoZSBjb2RlIGNyb3NzLXBsYXRmb3Jt
LgogICAgIHZpcnR1YWwgUU9iamVjdCogb3JpZ2luYXRpbmdPYmplY3QoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBRTmV0d29ya0FjY2Vzc01hbmFnZXIqIG5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCkg
Y29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBtaW1lU25pZmZpbmdFbmFibGVkKCkgY29uc3Qg
PSAwOwpAQCAtOTgsNiArOTcsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFVTRShTT1VQKQor
ICAgIC8vIEZJWE1FOiBXcmFwIFNvdXBTZXNzaW9uIGludG8gYSBOZXR3b3JrU3RvcmFnZVNlc3Np
b24gdG8gbWFrZSB0aGUgY29kZSBjcm9zcy1wbGF0Zm9ybS4KICAgICB2aXJ0dWFsIFNvdXBTZXNz
aW9uKiBzb3VwU2Vzc2lvbigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHVpbnQ2NF90IGluaXRp
YXRpbmdQYWdlSUQoKSBjb25zdCA9IDA7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3JtQ29va2llSmFyLmgJKHJldmlzaW9uIDEz
ODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVK
YXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTkgKzM0LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIEtVUkw7Ci1jbGFzcyBOZXR3b3JraW5nQ29udGV4dDsKK2NsYXNzIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjsKIHN0cnVjdCBDb29raWU7CiAKIC8vIElmIG5ldHdvcmtpbmcgY29u
dGV4dCBpcyBudWxsLCBkZWZhdWx0IGNvb2tpZSBzdG9yYWdlIGlzIHVzZWQuCi1TdHJpbmcgY29v
a2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNv
bnN0IEtVUkwmKTsKLXZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQqLCBj
b25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJik7Ci1ib29s
IGNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYpOwotU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5l
dHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpOwot
Ym9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+Jik7Ci12b2lkIGRlbGV0ZUNvb2tpZShO
ZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKTsKLXZvaWQgZ2V0
SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqLCBIYXNoU2V0PFN0cmluZz4m
IGhvc3RuYW1lcyk7Ci12b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShOZXR3b3JraW5nQ29u
dGV4dCosIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOwotdm9pZCBkZWxldGVBbGxDb29raWVzKE5l
dHdvcmtpbmdDb250ZXh0Kik7CitTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJik7Cit2b2lk
IHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgY29va2ll
c0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYpOworU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNv
bnN0IEtVUkwmKTsKK2Jvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiwgVmVjdG9yPENvb2tpZT4m
KTsKK3ZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IEtVUkwmLCBjb25zdCBTdHJpbmcmKTsKK3ZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpOwor
dm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7Cit2b2lkIGRlbGV0ZUFsbENvb2tpZXMoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJik7CiAKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAkocmV2aXNpb24gMTM4NDA3KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiwxMyArMjYsMTMgQEAKICNpZm5kZWYgUmVzb3VyY2VIYW5kbGVfaAog
I2RlZmluZSBSZXNvdXJjZUhhbmRsZV9oCiAKLSNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiSFRU
UEhlYWRlck1hcC5oIgotI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8
d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKICNpZiBVU0UoU09V
UCkKK3R5cGVkZWYgc3RydWN0IF9HVGxzQ2VydGlmaWNhdGUgR1Rsc0NlcnRpZmljYXRlOwogdHlw
ZWRlZiBzdHJ1Y3QgX1NvdXBTZXNzaW9uIFNvdXBTZXNzaW9uOwogdHlwZWRlZiBzdHJ1Y3QgX1Nv
dXBSZXF1ZXN0IFNvdXBSZXF1ZXN0OwogI2VuZGlmCkBAIC03OCw2ICs3OCw3IEBAIGNsYXNzIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEZyYW1lOwog
Y2xhc3MgS1VSTDsKK2NsYXNzIE5ldHdvcmtpbmdDb250ZXh0OwogY2xhc3MgUHJvdGVjdGlvblNw
YWNlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlSGFuZGxlQ2xpZW50OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29r
aWVKYXJDRk5ldC5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5
ICsyOSw4IEBACiAjaWYgVVNFKENGTkVUV09SSykKIAogI2luY2x1ZGUgIkNvb2tpZS5oIgotI2lu
Y2x1ZGUgIkNvb2tpZVN0b3JhZ2VDRk5ldC5oIgogI2luY2x1ZGUgIktVUkwuaCIKLSNpbmNsdWRl
ICJOZXR3b3JraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5o
IgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiU29mdExpbmtpbmcuaCIK
ICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIVFRQQ29va2llc1ByaXYuaD4KQEAgLTk1LDE1ICs5NCwx
MiBAQCBzdGF0aWMgUmV0YWluUHRyPENGQXJyYXlSZWY+IGZpbHRlckNvb2tpCiAgICAgcmV0dXJu
IGZpbHRlcmVkQ29va2llczsKIH0KIAotdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5n
Q29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTYz
Mjg4Mz4gQ0ZIVFRQQ29va2llU3RvcmFnZSBzdG9yZXMgYW4gZW1wdHkgY29va2llLCB3aGljaCB3
b3VsZCBiZSBzZW50IGFzICJDb29raWU6ID0iLgogICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBj
b29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRl
eHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3Rv
cmFnZSk7Ci0KICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybENGKEFkb3B0Q0YsIHVybC5jcmVh
dGVDRlVSTCgpKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGZpcnN0UGFydHlGb3JDb29raWVz
Q0YoQWRvcHRDRiwgZmlyc3RQYXJ0eS5jcmVhdGVDRlVSTCgpKTsKIApAQCAtMTE5LDU0ICsxMTUs
NDMgQEAgdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dAogICAgIFJldGFp
blB0cjxDRkFycmF5UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llQ3JlYXRlV2l0
aFJlc3BvbnNlSGVhZGVyRmllbGRzKGtDRkFsbG9jYXRvckRlZmF1bHQsCiAgICAgICAgIGhlYWRl
ckZpZWxkc0NGLmdldCgpLCB1cmxDRi5nZXQoKSkpOwogCi0gICAgQ0ZIVFRQQ29va2llU3RvcmFn
ZVNldENvb2tpZXMoY29va2llU3RvcmFnZS5nZXQoKSwgZmlsdGVyQ29va2llcyhjb29raWVzQ0Yu
Z2V0KCkpLmdldCgpLCB1cmxDRi5nZXQoKSwgZmlyc3RQYXJ0eUZvckNvb2tpZXNDRi5nZXQoKSk7
CisgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZXMoc2Vzc2lvbi5jb29raWVTdG9yYWdl
KCkuZ2V0KCksIGZpbHRlckNvb2tpZXMoY29va2llc0NGLmdldCgpKS5nZXQoKSwgdXJsQ0YuZ2V0
KCksIGZpcnN0UGFydHlGb3JDb29raWVzQ0YuZ2V0KCkpOwogfQogCi1TdHJpbmcgY29va2llc0Zv
ckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwm
IHVybCkKK1N0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQ
Q29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBjdXJyZW50Q0ZIVFRQ
Q29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCk7Ci0g
ICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwotCiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmxD
RihBZG9wdENGLCB1cmwuY3JlYXRlQ0ZVUkwoKSk7CiAKICAgICBib29sIHNlY3VyZSA9IHVybC5w
cm90b2NvbElzKCJodHRwcyIpOwotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBjb29raWVzQ0Yo
QWRvcHRDRiwgQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzRm9yVVJMKGNvb2tpZVN0b3Jh
Z2UuZ2V0KCksIHVybENGLmdldCgpLCBzZWN1cmUpKTsKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJl
Zj4gY29va2llc0NGKEFkb3B0Q0YsIENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2llc0ZvclVS
TChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsQ0YuZ2V0KCksIHNlY3VyZSkpOwog
ICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGhlYWRlckNGKEFkb3B0Q0YsIENGSFRUUENv
b2tpZUNvcHlSZXF1ZXN0SGVhZGVyRmllbGRzKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZpbHRlckNv
b2tpZXMoY29va2llc0NGLmdldCgpKS5nZXQoKSkpOwogICAgIHJldHVybiAoQ0ZTdHJpbmdSZWYp
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUoaGVhZGVyQ0YuZ2V0KCksIHNfY29va2llQ0YpOwogfQogCi1T
dHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCitTdHJp
bmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQogewot
ICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29u
dGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRU
UENvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7Ci0KICAgICBSZXRh
aW5QdHI8Q0ZVUkxSZWY+IHVybENGKEFkb3B0Q0YsIHVybC5jcmVhdGVDRlVSTCgpKTsKIAogICAg
IGJvb2wgc2VjdXJlID0gdXJsLnByb3RvY29sSXMoImh0dHBzIik7Ci0gICAgUmV0YWluUHRyPENG
QXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tp
ZXNGb3JVUkwoY29va2llU3RvcmFnZS5nZXQoKSwgdXJsQ0YuZ2V0KCksIHNlY3VyZSkpOworICAg
IFJldGFpblB0cjxDRkFycmF5UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llU3Rv
cmFnZUNvcHlDb29raWVzRm9yVVJMKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCB1cmxD
Ri5nZXQoKSwgc2VjdXJlKSk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaGVhZGVy
Q0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llQ29weVJlcXVlc3RIZWFkZXJGaWVsZHMoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgY29va2llc0NGLmdldCgpKSk7CiAgICAgcmV0dXJuIChDRlN0cmluZ1JlZilD
RkRpY3Rpb25hcnlHZXRWYWx1ZShoZWFkZXJDRi5nZXQoKSwgc19jb29raWVDRik7CiB9CiAKLWJv
b2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwm
IC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQorYm9vbCBjb29raWVzRW5hYmxl
ZChOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0
eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQogewotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVT
dG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVT
dG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NF
UlQoY29va2llU3RvcmFnZSk7Ci0KLSAgICBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5
IHBvbGljeSA9IENGSFRUUENvb2tpZVN0b3JhZ2VHZXRDb29raWVBY2NlcHRQb2xpY3koY29va2ll
U3RvcmFnZS5nZXQoKSk7CisgICAgQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeSBwb2xp
Y3kgPSBDRkhUVFBDb29raWVTdG9yYWdlR2V0Q29va2llQWNjZXB0UG9saWN5KHNlc3Npb24uY29v
a2llU3RvcmFnZSgpLmdldCgpKTsKICAgICByZXR1cm4gcG9saWN5ID09IENGSFRUUENvb2tpZVN0
b3JhZ2VBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbiB8fCBwb2xpY3kgPT0g
Q0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeUFsd2F5czsKIH0KIAotYm9vbCBnZXRSYXdD
b29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFy
dHkqLywgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wg
Z2V0UmF3Q29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwm
IC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29r
aWVzKQogewogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29v
a2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBjdXJyZW50Q0ZIVFRQQ29v
a2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCk7Ci0gICAg
QVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwogCiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmxDRihB
ZG9wdENGLCB1cmwuY3JlYXRlQ0ZVUkwoKSk7CiAKICAgICBib29sIHNlbmRTZWN1cmVDb29raWVz
ID0gdXJsLnByb3RvY29sSXMoImh0dHBzIik7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNv
b2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkwoY29v
a2llU3RvcmFnZS5nZXQoKSwgdXJsQ0YuZ2V0KCksIHNlbmRTZWN1cmVDb29raWVzKSk7CisgICAg
UmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVTdG9y
YWdlQ29weUNvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHVybENG
LmdldCgpLCBzZW5kU2VjdXJlQ29va2llcykpOwogCiAgICAgQ0ZJbmRleCBjb3VudCA9IENGQXJy
YXlHZXRDb3VudChjb29raWVzQ0YuZ2V0KCkpOwogICAgIHJhd0Nvb2tpZXMucmVzZXJ2ZUNhcGFj
aXR5KGNvdW50KTsKQEAgLTE5MCwxMCArMTc1LDkgQEAgYm9vbCBnZXRSYXdDb29raWVzKE5ldHdv
cmtpbmdDb250ZXh0KiBjbwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIGRlbGV0ZUNvb2tp
ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIFJldGFpblB0
cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJl
bnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3Jh
Z2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7CisgICAgUmV0YWluUHRyPENGSFRUUENv
b2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKTsK
IAogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsQ0YoQWRvcHRDRiwgdXJsLmNyZWF0ZUNGVVJM
KCkpOwogCkBAIC0yMTAsMTIgKzE5NCw5IEBAIHZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtpbmdD
b250ZXh0KiBjb24KICAgICB9CiB9CiAKLXZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0
d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQordm9p
ZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQogewotICAgIFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29r
aWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBB
U1NFUlQoY29va2llU3RvcmFnZSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29va2ll
c0NGKEFkb3B0Q0YsIENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2llcyhjb29raWVTdG9yYWdl
LmdldCgpKSk7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBD
RkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXMoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0
KCkpKTsKICAgICBpZiAoIWNvb2tpZXNDRikKICAgICAgICAgcmV0dXJuOwogCkBAIC0yMjcsMTAg
KzIwOCw5IEBAIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya2luZ0MKICAgICB9
CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQordm9pZCBkZWxldGVDb29raWVzRm9ySG9z
dG5hbWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBTdHJpbmcmIGhvc3Ru
YW1lKQogewotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9y
YWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVm
YXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7Cisg
ICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBzZXNz
aW9uLmNvb2tpZVN0b3JhZ2UoKTsKIAogICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBjb29raWVz
Q0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzKGNvb2tpZVN0b3JhZ2Uu
Z2V0KCkpKTsKICAgICBpZiAoIWNvb2tpZXNDRikKQEAgLTI0NSwxMiArMjI1LDkgQEAgdm9pZCBk
ZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZwogICAgIH0KIH0KIAotdm9pZCBkZWxl
dGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQordm9pZCBkZWxldGVBbGxD
b29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKIHsKLSAgICBSZXRhaW5QdHI8
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBjdXJyZW50
Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdl
KCk7Ci0gICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwotCi0gICAgQ0ZIVFRQQ29va2llU3RvcmFn
ZURlbGV0ZUFsbENvb2tpZXMoY29va2llU3RvcmFnZS5nZXQoKSk7CisgICAgQ0ZIVFRQQ29va2ll
U3RvcmFnZURlbGV0ZUFsbENvb2tpZXMoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCkpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuY3BwCShyZXZp
c2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tp
ZVN0b3JhZ2VDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkgKzI2LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb29raWVTdG9yYWdlLmgiCiAKLSNpbmNsdWRlICJD
b29raWVTdG9yYWdlQ0ZOZXQuaCIKLQotI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaW5j
bHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTQ4LDU2ICs0Niw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogI2lmIFBMQVRGT1JNKFdJTikKIAotc3RhdGljIFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiYgY29va2llU3RvcmFnZU92ZXJyaWRlKCkKLXsKLSAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiwgY29va2llU3RvcmFn
ZSwgKCkpOwotICAgIHJldHVybiBjb29raWVTdG9yYWdlOwotfQotCi0jZW5kaWYKLQotUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKE5l
dHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQotewotI2lmIFBMQVRGT1JNKFdJTikKLSAgICBpZiAo
UmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiBvdmVycmlkZSA9IGNvb2tpZVN0b3Jh
Z2VPdmVycmlkZSgpKQotICAgICAgICByZXR1cm4gb3ZlcnJpZGU7Ci0jZW5kaWYKLQotICAgIGlm
IChDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHNlc3Npb24gPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lv
bigpKQotICAgICAgICByZXR1cm4gUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+KEFk
b3B0Q0YsIHdrQ29weUhUVFBDb29raWVTdG9yYWdlKHNlc3Npb24pKTsKLQotI2lmIFVTRShDRk5F
VFdPUkspCi0gICAgcmV0dXJuIHdrR2V0RGVmYXVsdEhUVFBDb29raWVTdG9yYWdlKCk7Ci0jZWxz
ZQotICAgIC8vIFdoZW4gdXNpbmcgTlNVUkxDb25uZWN0aW9uLCB3ZSBhbHNvIHVzZSBpdHMgc2hh
cmVkIGNvb2tpZSBzdG9yYWdlLgotICAgIHJldHVybiAwOwotI2VuZGlmCi19Ci0KLVJldGFpblB0
cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpCi17
Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIGlmIChSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFn
ZVJlZj4mIG92ZXJyaWRlID0gY29va2llU3RvcmFnZU92ZXJyaWRlKCkpCi0gICAgICAgIHJldHVy
biBvdmVycmlkZTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5j
b29raWVzU3RyYXRlZ3koKS0+ZGVmYXVsdENvb2tpZVN0b3JhZ2UoKTsKLX0KLQotI2lmIFBMQVRG
T1JNKFdJTikKLQotdm9pZCBvdmVycmlkZUNvb2tpZVN0b3JhZ2UoQ0ZIVFRQQ29va2llU3RvcmFn
ZVJlZiBjb29raWVTdG9yYWdlKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
Ly8gRklYTUU6IFdoeSBkb24ndCB3ZSByZXRhaW4gaXQ/IFRoZSBvbmx5IGNhbGxlciBpcyBhbiBB
UEkgbWV0aG9kIHRoYXQgdGFrZXMgY29va2llIHN0b3JhZ2UgYXMgYSByYXcgYXJndW1lbnQuCi0g
ICAgY29va2llU3RvcmFnZU92ZXJyaWRlKCkuYWRvcHRDRihjb29raWVTdG9yYWdlKTsKLX0KLQot
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiBvdmVycmlkZW5Db29raWVTdG9yYWdlKCkKLXsKLSAgICBy
ZXR1cm4gY29va2llU3RvcmFnZU92ZXJyaWRlKCkuZ2V0KCk7Ci19Ci0KIHN0YXRpYyB2b2lkIG5v
dGlmeUNvb2tpZXNDaGFuZ2VkT25NYWluVGhyZWFkKHZvaWQqKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CkBAIC0xMzAsNyArNzgsNyBAQCB2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2ll
Q2hhbmdlcygpCiAgICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBjb29raWVTdG9yYWdlT2JzZXJ2
ZXJSdW5Mb29wKCk7CiAgICAgQVNTRVJUKHJ1bkxvb3ApOwogCi0gICAgUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBkZWZhdWx0Q0ZIVFRQQ29va2llU3Rv
cmFnZSgpOworICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9y
YWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29r
aWVTdG9yYWdlKCk7CiAgICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwogCiAgICAgQ0ZIVFRQQ29v
a2llU3RvcmFnZVNjaGVkdWxlV2l0aFJ1bkxvb3AoY29va2llU3RvcmFnZS5nZXQoKSwgcnVuTG9v
cCwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKQEAgLTE0NCw3ICs5Miw3IEBAIHZvaWQgc3RvcE9i
c2VydmluZ0Nvb2tpZUNoYW5nZXMoKQogICAgIENGUnVuTG9vcFJlZiBydW5Mb29wID0gY29va2ll
U3RvcmFnZU9ic2VydmVyUnVuTG9vcCgpOwogICAgIEFTU0VSVChydW5Mb29wKTsKIAotICAgIFJl
dGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gZGVmYXVsdENG
SFRUUENvb2tpZVN0b3JhZ2UoKTsKKyAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJl
Zj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VT
ZXNzaW9uKCkuY29va2llU3RvcmFnZSgpOwogICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsKIAog
ICAgIENGSFRUUENvb2tpZVN0b3JhZ2VSZW1vdmVPYnNlcnZlcihjb29raWVTdG9yYWdlLmdldCgp
LCBydW5Mb29wLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUsIG5vdGlmeUNvb2tpZXNDaGFuZ2VkLCAw
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFn
ZUNGTmV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9Db29raWVTdG9yYWdlQ0ZOZXQuaAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBDb29raWVTdG9yYWdlQ0ZOZXRf
aAotI2RlZmluZSBDb29raWVTdG9yYWdlQ0ZOZXRfaAotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgotCi10eXBlZGVmIHN0cnVjdCBPcGFxdWVDRkhUVFBDb29raWVTdG9yYWdlKiAgQ0ZIVFRQ
Q29va2llU3RvcmFnZVJlZjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBOZXR3b3Jr
aW5nQ29udGV4dDsKLQotUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGN1cnJlbnRD
RkhUVFBDb29raWVTdG9yYWdlKE5ldHdvcmtpbmdDb250ZXh0Kik7IC8vIFdpbGwgYmUgbnVsbCB3
aGVuIHVzaW5nIHNoYXJlZCBOU0hUVFBDb29raWVTdG9yYWdlLgotUmV0YWluUHRyPENGSFRUUENv
b2tpZVN0b3JhZ2VSZWY+IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCk7IC8vIERvZXNuJ3Qg
dGFrZSBjdXJyZW50IHNlc3Npb24gaW50byBhY2NvdW50LgotCi0jaWYgUExBVEZPUk0oV0lOKQot
Ly8gTmVlZGVkIGZvciBXZWJLaXQxIEFQSSBvbmx5Lgotdm9pZCBvdmVycmlkZUNvb2tpZVN0b3Jh
Z2UoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZik7Ci1DRkhUVFBDb29raWVTdG9yYWdlUmVmIG92ZXJy
aWRlbkNvb2tpZVN0b3JhZ2UoKTsKLSNlbmRpZgotCi19Ci0KLSNlbmRpZiAvLyBDb29raWVTdG9y
YWdlQ0ZOZXRfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3
b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkNGTmV0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmgiCisKKyNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCisjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitOZXR3b3JrU3RvcmFn
ZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbihDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHBs
YXRmb3JtU2Vzc2lvbikKKyAgICA6IG1fcGxhdGZvcm1TZXNzaW9uKHBsYXRmb3JtU2Vzc2lvbikK
KyAgICAsIG1faXNQcml2YXRlKGZhbHNlKQoreworfQorCitzdGF0aWMgT3duUHRyPE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbj4mIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKQoreworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4sIHNlc3Npb24s
ICgpKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKQoreworICAgIC8vIFNldCBhIHByaXZhdGUg
c2Vzc2lvbiBmb3IgdGVzdGluZyB0byBhdm9pZCBpbnRlcmZlcmluZyB3aXRoIGdsb2JhbCBjb29r
aWVzLiBUaGlzIHNob3VsZCBiZSBkaWZmZXJlbnQgZnJvbSBwcml2YXRlIGJyb3dzaW5nIHNlc3Np
b24uCisgICAgLy8gRklYTUU6IEl0IGxvb2tzIGxpa2UgY3JlYXRpbmcgYSBuZXcgc2Vzc2lvbiB3
aXRoIHRoZSBzYW1lIGlkZW50aWZpZXIgbWF5IGJlIGp1c3QgY3JlYXRpbmcgYSByZWZlcmVuY2Ug
dG8gdGhlIHNhbWUgc3RvcmFnZS4gU2VlIDxyZGFyOi8vcHJvYmxlbS8xMTU3MTQ1MD4gYW5kIDxy
ZGFyOi8vcHJvYmxlbS8xMjM4NDM4MD4uCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGRlZmF1bHRO
ZXR3b3JrU3RvcmFnZVNlc3Npb24oKSA9IGFkb3B0UHRyKG5ldyBOZXR3b3JrU3RvcmFnZVNlc3Np
b24od2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTVFIoIlByaXZhdGUgV2ViS2l0IFNl
c3Npb24iKSkpKTsKKyNlbHNlCisgICAgZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpID0g
YWRvcHRQdHIobmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbih3a0NyZWF0ZVByaXZhdGVTdG9yYWdl
U2Vzc2lvbihDRlNUUigiUHJpdmF0ZSBXZWJLaXQgU2Vzc2lvbiIpLCBkZWZhdWx0TmV0d29ya1N0
b3JhZ2VTZXNzaW9uKCktPnBsYXRmb3JtU2Vzc2lvbigpKSkpOworI2VuZGlmCit9CisKKyNpZiBQ
TEFURk9STShXSU4pCitzdGF0aWMgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiBj
b29raWVTdG9yYWdlT3ZlcnJpZGUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+LCBjb29raWVTdG9yYWdlLCAoKSk7CisgICAgcmV0
dXJuIGNvb2tpZVN0b3JhZ2U7Cit9CisKK3ZvaWQgb3ZlcnJpZGVDb29raWVTdG9yYWdlKENGSFRU
UENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIC8vIEZJWE1FOiBXaHkgZG9uJ3Qgd2UgcmV0YWluIGl0PyBUaGUgb25seSBj
YWxsZXIgaXMgYW4gQVBJIG1ldGhvZCB0aGF0IHRha2VzIGNvb2tpZSBzdG9yYWdlIGFzIGEgcmF3
IGFyZ3VtZW50LgorICAgIGNvb2tpZVN0b3JhZ2VPdmVycmlkZSgpLmFkb3B0Q0YoY29va2llU3Rv
cmFnZSk7Cit9CisKK0NGSFRUUENvb2tpZVN0b3JhZ2VSZWYgb3ZlcnJpZGVuQ29va2llU3RvcmFn
ZSgpCit7CisgICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2VPdmVycmlkZSgpLmdldCgpOworfQorI2Vu
ZGlmCisKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZh
dWx0U3RvcmFnZVNlc3Npb24oKQoreworICAgIHJldHVybiAqZGVmYXVsdE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbigpOworfQorCitQYXNzT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKGNvbnN0IFN0cmlu
ZyYgaWRlbnRpZmllckJhc2UpCit7CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50
aWZpZXIgPSBTdHJpbmcoaWRlbnRpZmllckJhc2UgKyAiLlByaXZhdGVCcm93c2luZyIpLmNyZWF0
ZUNGU3RyaW5nKCk7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgT3duUHRyPE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbj4gc2Vzc2lvbiA9IGFkb3B0UHRyKG5ldyBOZXR3b3JrU3RvcmFnZVNlc3Npb24o
d2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpKSkpOworI2Vs
c2UKKyAgICBPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBzZXNzaW9uID0gYWRvcHRQdHIo
bmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbih3a0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihj
ZklkZW50aWZpZXIuZ2V0KCksIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKS0+cGxhdGZv
cm1TZXNzaW9uKCkpKSk7CisjZW5kaWYKKyAgICBzZXNzaW9uLT5tX2lzUHJpdmF0ZSA9IHRydWU7
CisKKyAgICByZXR1cm4gc2Vzc2lvbi5yZWxlYXNlKCk7Cit9CisKK1JldGFpblB0cjxDRkhUVFBD
b29raWVTdG9yYWdlUmVmPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNvb2tpZVN0b3JhZ2UoKSBj
b25zdAoreworI2lmIFBMQVRGT1JNKFdJTikKKyAgICBpZiAoUmV0YWluUHRyPENGSFRUUENvb2tp
ZVN0b3JhZ2VSZWY+JiBvdmVycmlkZSA9IGNvb2tpZVN0b3JhZ2VPdmVycmlkZSgpKQorICAgICAg
ICByZXR1cm4gb3ZlcnJpZGU7CisjZW5kaWYKKworICAgIGlmIChtX3BsYXRmb3JtU2Vzc2lvbikK
KyAgICAgICAgcmV0dXJuIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPihBZG9wdENG
LCB3a0NvcHlIVFRQQ29va2llU3RvcmFnZShtX3BsYXRmb3JtU2Vzc2lvbi5nZXQoKSkpOworCisj
aWYgVVNFKENGTkVUV09SSykKKyAgICByZXR1cm4gd2tHZXREZWZhdWx0SFRUUENvb2tpZVN0b3Jh
Z2UoKTsKKyNlbHNlCisgICAgLy8gV2hlbiB1c2luZyBOU1VSTENvbm5lY3Rpb24sIHdlIGFsc28g
dXNlIGl0cyBzaGFyZWQgY29va2llIHN0b3JhZ2UuCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30K
KworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpbmNsdWRlICJBdXRoZW50aWNhdGlv
bkNGLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKLSNpbmNsdWRlICJD
b29raWVTdG9yYWdlQ0ZOZXQuaCIKICNpbmNsdWRlICJDcmVkZW50aWFsU3RvcmFnZS5oIgogI2lu
Y2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiRm9ybURhdGFTdHJlYW1D
Rk5ldC5oIgpAQCAtMzgsNiArMzcsNyBAQAogI2luY2x1ZGUgIkxvYWRlclJ1bkxvb3BDRi5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5j
bHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3Bv
bnNlLmgiCkBAIC0xNjUsNyArMTY1LDcgQEAgc3RhdGljIENGVVJMUmVxdWVzdFJlZiB3aWxsU2Vu
ZFJlcXVlc3QoQwogICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBuZXdNZXRob2Qg
PSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdE1ldGhvZChjZlJlcXVlc3QpKTsK
ICAgICAgICAgICAgIGlmIChDRlN0cmluZ0NvbXBhcmVXaXRoT3B0aW9ucyhsYXN0SFRUUE1ldGhv
ZC5nZXQoKSwgbmV3TWV0aG9kLmdldCgpLCBDRlJhbmdlTWFrZSgwLCBDRlN0cmluZ0dldExlbmd0
aChsYXN0SFRUUE1ldGhvZC5nZXQoKSkpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSkgewog
ICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRk11dGFibGVVUkxSZXF1ZXN0UmVmPiBtdXRhYmxl
UmVxdWVzdChBZG9wdENGLCBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxlQ29weSgwLCBjZlJlcXVl
c3QpKTsKLSAgICAgICAgICAgICAgICB3a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbihoYW5kbGUt
PnN0b3JhZ2VTZXNzaW9uKCksIG11dGFibGVSZXF1ZXN0LmdldCgpKTsKKyAgICAgICAgICAgICAg
ICB3a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbihoYW5kbGUtPnN0b3JhZ2VTZXNzaW9uKCkucGxh
dGZvcm1TZXNzaW9uKCksIG11dGFibGVSZXF1ZXN0LmdldCgpKTsKICAgICAgICAgICAgICAgICBD
RlVSTFJlcXVlc3RTZXRIVFRQUmVxdWVzdE1ldGhvZChtdXRhYmxlUmVxdWVzdC5nZXQoKSwgbGFz
dEhUVFBNZXRob2QuZ2V0KCkpOwogCiAgICAgICAgICAgICAgICAgRm9ybURhdGEqIGJvZHkgPSBo
YW5kbGUtPmZpcnN0UmVxdWVzdCgpLmh0dHBCb2R5KCk7CkBAIC0zOTksNyArMzk5LDcgQEAgc3Rh
dGljIGJvb2wgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llUAogewogICAgIC8vIElmIGEgVVJM
IGFscmVhZHkgaGFzIGNvb2tpZXMsIHRoZW4gd2UnbGwgcmVsYXggdGhlIDNyZCBwYXJ0eSBjb29r
aWUgcG9saWN5IGFuZCBhY2NlcHQgbmV3IGNvb2tpZXMuCiAKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQ
Q29va2llU3RvcmFnZVJlZj4gY2ZDb29raWVTdG9yYWdlID0gY3VycmVudENGSFRUUENvb2tpZVN0
b3JhZ2UoY29udGV4dCk7CisgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNm
Q29va2llU3RvcmFnZSA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgp
OwogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kgY29va2llQWNjZXB0UG9saWN5
ID0gQ0ZIVFRQQ29va2llU3RvcmFnZUdldENvb2tpZUFjY2VwdFBvbGljeShjZkNvb2tpZVN0b3Jh
Z2UuZ2V0KCkpOwogCiAgICAgaWYgKGNvb2tpZUFjY2VwdFBvbGljeSAhPSBDRkhUVFBDb29raWVT
dG9yYWdlQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4pCkBAIC01MDYsNyAr
NTA2LDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoTmV0d29ya2luZ0NvbgogICAgIGlm
ICghY29udGV4dC0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBkLT5t
X3N0b3JhZ2VTZXNzaW9uID0gY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKTsKKyAgICBkLT5tX3N0
b3JhZ2VTZXNzaW9uID0gY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5wbGF0Zm9ybVNlc3Npb24o
KTsKIAogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UgPSAhY2xpZW50KCkgfHwg
Y2xpZW50KCktPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKHRoaXMpOwogCkBAIC03NDEsNyAr
NzQxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hybwogCiAgICAg
UmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5k
bGUocmVxdWVzdCwgY2xpZW50LmdldCgpLCBmYWxzZSAvKmRlZmVyc0xvYWRpbmcqLywgdHJ1ZSAv
KnNob3VsZENvbnRlbnRTbmlmZiovKSk7CiAKLSAgICBoYW5kbGUtPmQtPm1fc3RvcmFnZVNlc3Np
b24gPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpOworICAgIGhhbmRsZS0+ZC0+bV9zdG9yYWdl
U2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCk7CiAK
ICAgICBpZiAoaGFuZGxlLT5kLT5tX3NjaGVkdWxlZEZhaWx1cmVUeXBlICE9IE5vRmFpbHVyZSkg
ewogICAgICAgICBlcnJvciA9IGNvbnRleHQtPmJsb2NrZWRFcnJvcihyZXF1ZXN0KTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFyQ2hyb21p
dW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hy
b21pdW0vQ29va2llSmFyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL0Nvb2tpZUphckNocm9taXVtLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDEsNTUgKzQxLDU1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29u
c3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBjb29raWVTdHIpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpCiB7Ci0gICAgaWYgKCFjb250ZXh0KQor
ICAgIGlmICghc2Vzc2lvbi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBXZWJLaXQ6
OldlYkNvb2tpZUphciogY29va2llSmFyID0gY29udGV4dC0+Y29va2llSmFyKCk7CisgICAgV2Vi
S2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9IHNlc3Npb24uY29udGV4dCgpLT5jb29raWVK
YXIoKTsKICAgICBpZiAoY29va2llSmFyKQogICAgICAgICBjb29raWVKYXItPnNldENvb2tpZSh1
cmwsIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb29raWVTdHIpOwogfQogCi1TdHJpbmcgY29va2ll
c0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eUZvckNvb2tpZXMsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVzRm9yRE9NKE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tp
ZXMsIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBpZiAoIWNvbnRleHQpCisgICAgaWYgKCFzZXNz
aW9uLmNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIFN0cmluZyByZXN1
bHQ7Ci0gICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9IGNvbnRleHQtPmNvb2tp
ZUphcigpOworICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVKYXIgPSBzZXNzaW9uLmNv
bnRleHQoKS0+Y29va2llSmFyKCk7CiAgICAgaWYgKGNvb2tpZUphcikKICAgICAgICAgcmVzdWx0
ID0gY29va2llSmFyLT5jb29raWVzKHVybCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMpOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShO
ZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tp
ZXMsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHlG
b3JDb29raWVzLCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgaWYgKCFjb250ZXh0KQorICAgIGlm
ICghc2Vzc2lvbi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBTdHJp
bmcgcmVzdWx0OwotICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVKYXIgPSBjb250ZXh0
LT5jb29raWVKYXIoKTsKKyAgICBXZWJLaXQ6OldlYkNvb2tpZUphciogY29va2llSmFyID0gc2Vz
c2lvbi5jb250ZXh0KCktPmNvb2tpZUphcigpOwogICAgIGlmIChjb29raWVKYXIpCiAgICAgICAg
IHJlc3VsdCA9IGNvb2tpZUphci0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUodXJsLCBm
aXJzdFBhcnR5Rm9yQ29va2llcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotYm9vbCBjb29r
aWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgY29va2ll
VVJMLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcykKK2Jvb2wgY29va2llc0VuYWJs
ZWQoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBjb29raWVVUkws
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzKQogewogICAgIGJvb2wgcmVzdWx0ID0g
ZmFsc2U7Ci0gICAgaWYgKCFjb250ZXh0KQorICAgIGlmICghc2Vzc2lvbi5jb250ZXh0KCkpCiAg
ICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUph
ciA9IGNvbnRleHQtPmNvb2tpZUphcigpOworICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29r
aWVKYXIgPSBzZXNzaW9uLmNvbnRleHQoKS0+Y29va2llSmFyKCk7CiAgICAgaWYgKGNvb2tpZUph
cikKICAgICAgICAgcmVzdWx0ID0gY29va2llSmFyLT5jb29raWVzRW5hYmxlZChjb29raWVVUkws
IGZpcnN0UGFydHlGb3JDb29raWVzKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIGdl
dFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHlGb3JDb29raWVzLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29r
aWVzKQorYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9y
PENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmF3Q29va2llcy5jbGVhcigpOwotICAgIGlm
ICghY29udGV4dCkKKyAgICBpZiAoIXNlc3Npb24uY29udGV4dCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgV2ViS2l0OjpXZWJWZWN0b3I8V2ViS2l0OjpXZWJDb29raWU+IHdlYkNvb2tp
ZXM7Ci0gICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9IGNvbnRleHQtPmNvb2tp
ZUphcigpOworICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVKYXIgPSBzZXNzaW9uLmNv
bnRleHQoKS0+Y29va2llSmFyKCk7CiAgICAgaWYgKGNvb2tpZUphcikKICAgICAgICAgY29va2ll
SmFyLT5yYXdDb29raWVzKHVybCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIHdlYkNvb2tpZXMpOwog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB3ZWJDb29raWVzLnNpemUoKTsgKytpKSB7CkBA
IC0xMDAsMjYgKzEwMCwyNiBAQCBib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQq
IGNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtpbmdD
b250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFt
ZSkKK3ZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0gICAgaWYgKCFjb250
ZXh0KQorICAgIGlmICghc2Vzc2lvbi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBX
ZWJLaXQ6OldlYkNvb2tpZUphciogY29va2llSmFyID0gY29udGV4dC0+Y29va2llSmFyKCk7Cisg
ICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9IHNlc3Npb24uY29udGV4dCgpLT5j
b29raWVKYXIoKTsKICAgICBpZiAoY29va2llSmFyKQogICAgICAgICBjb29raWVKYXItPmRlbGV0
ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUpOwogfQogCi12b2lkIGdldEhvc3RuYW1lc1dpdGhDb29r
aWVzKE5ldHdvcmtpbmdDb250ZXh0KiAvKmNvbnRleHQqLywgSGFzaFNldDxTdHJpbmc+JiAvKmhv
c3RuYW1lcyovKQordm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBIYXNoU2V0PFN0cmluZz4mIC8qaG9zdG5hbWVzKi8pCiB7CiAgICAgLy8gRklYTUU6
IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUo
TmV0d29ya2luZ0NvbnRleHQqIC8qY29udGV4dCovLCBjb25zdCBTdHJpbmcmIC8qaG9zdG5hbWUq
LykKK3ZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFN0cmluZyYgLypob3N0bmFtZSovKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGlt
cGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRlQWxsQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCog
Lypjb250ZXh0Ki8pCit2b2lkIGRlbGV0ZUFsbENvb2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JikKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9SZXNvdXJjZUhhbmRsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9SZXNv
dXJjZUhhbmRsZS5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3VyY2VIYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VI
YW5kbGUuaCIKIAorI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUludGVybmFsLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCShyZXZpc2lv
biAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2ll
SmFyQ3VybC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDUwICsyNyw1MCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBjb29raWVKYXI7CiAK
LXZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiwg
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBzZXRDb29raWVzRnJv
bURPTShOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGNvb2tpZUphci5zZXQodXJsLnN0cmluZygp
LCB2YWx1ZSk7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0Kiwg
Y29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVzRm9yRE9NKE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAg
cmV0dXJuIGNvb2tpZUphci5nZXQodXJsLnN0cmluZygpKTsKIH0KIAotU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBL
VVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIC8q
Zmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgLy8gRklYTUU6IGluY2x1ZGUg
SHR0cE9ubHkgY29va2llLgogICAgIHJldHVybiBjb29raWVKYXIuZ2V0KHVybC5zdHJpbmcoKSk7
CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQorYm9vbCBjb29r
aWVzRW5hYmxlZChOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFy
dHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9v
bCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiAv
KmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLywgVmVjdG9yPENvb2tpZT4mIHJhd0Nv
b2tpZXMpCitib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
S1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8sIFZlY3RvcjxDb29raWU+
JiByYXdDb29raWVzKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiAgICAg
cmF3Q29va2llcy5jbGVhcigpOwogICAgIHJldHVybiBmYWxzZTsgLy8gcmV0dXJuIHRydWUgd2hl
biBpbXBsZW1lbnRlZAogfQogCi12b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCos
IGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQordm9pZCBkZWxldGVDb29raWUoTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgLy8gRklY
TUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2ll
cyhOZXR3b3JraW5nQ29udGV4dCosIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQordm9pZCBn
ZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBIYXNoU2V0PFN0
cmluZz4mIGhvc3RuYW1lcykKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAog
fQogCi12b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShOZXR3b3JraW5nQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAgIC8vIEZJ
WE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRlQWxsQ29va2llcyhOZXR3
b3JraW5nQ29udGV4dCopCit2b2lkIGRlbGV0ZUFsbENvb2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJikKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291
cmNlSGFuZGxlQ3VybC5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKIAogI2luY2x1
ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQu
aCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxl
SW50ZXJuYWwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZU1hbmFnZXIuaCIKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMu
bW0JKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL0Nvb2tpZUphck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsOCBAQAogI2lt
cG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJDb29raWUuaCIKICNpbXBvcnQgIkNv
b2tpZVN0b3JhZ2UuaCIKLSNpbXBvcnQgIkNvb2tpZVN0b3JhZ2VDRk5ldC5oIgogI2ltcG9ydCAi
S1VSTC5oIgotI2ltcG9ydCAiTmV0d29ya2luZ0NvbnRleHQuaCIKKyNpbXBvcnQgIk5ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MiwzMSArNjEsMjkgQEAgc3RhdGljIFJldGFpblB0cjxO
U0FycmF5PiBmaWx0ZXJDb29raWVzKAogICAgIHJldHVybiBmaWx0ZXJlZENvb2tpZXM7CiB9CiAK
LVN0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBL
VVJMJiwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQog
ewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIFJldGFpblB0cjxDRkhU
VFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhU
VFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsK
LSAgICBOU0FycmF5ICpjb29raWVzID0gd2tIVFRQQ29va2llc0ZvclVSTChjb29raWVTdG9yYWdl
LmdldCgpLCB1cmwpOworICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hUVFBDb29raWVzRm9yVVJM
KHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCB1cmwpOwogICAgIHJldHVybiBbW05TSFRU
UENvb2tpZSByZXF1ZXN0SGVhZGVyRmllbGRzV2l0aENvb2tpZXM6ZmlsdGVyQ29va2llcyhjb29r
aWVzKS5nZXQoKV0gb2JqZWN0Rm9yS2V5OkAiQ29va2llIl07CiAKICAgICBFTkRfQkxPQ0tfT0JK
Q19FWENFUFRJT05TOwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAotU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBL
VVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICBCRUdJ
Tl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3Rv
cmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBjdXJyZW50Q0ZIVFRQQ29va2llU3Rv
cmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCk7Ci0gICAgTlNBcnJh
eSAqY29va2llcyA9IHdrSFRUUENvb2tpZXNGb3JVUkwoY29va2llU3RvcmFnZS5nZXQoKSwgdXJs
KTsKKyAgICBOU0FycmF5ICpjb29raWVzID0gd2tIVFRQQ29va2llc0ZvclVSTChzZXNzaW9uLmNv
b2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsKTsKICAgICByZXR1cm4gW1tOU0hUVFBDb29raWUgcmVx
dWVzdEhlYWRlckZpZWxkc1dpdGhDb29raWVzOmNvb2tpZXNdIG9iamVjdEZvcktleTpAIkNvb2tp
ZSJdOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKLXZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBjb29raWVTdHIpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CiAKQEAgLTEwMywzMSArMTAwLDI4IEBAIHZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0
d29ya2luZ0NvbnRleHQKICAgICBSZXRhaW5QdHI8TlNBcnJheT4gZmlsdGVyZWRDb29raWVzID0g
ZmlsdGVyQ29va2llcyhbTlNIVFRQQ29va2llIGNvb2tpZXNXaXRoUmVzcG9uc2VIZWFkZXJGaWVs
ZHM6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDpjb29raWVTdHJpbmcgZm9yS2V5
OkAiU2V0LUNvb2tpZSJdIGZvclVSTDpjb29raWVVUkxdKTsKICAgICBBU1NFUlQoW2ZpbHRlcmVk
Q29va2llcy5nZXQoKSBjb3VudF0gPD0gMSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2ll
U3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBjdXJyZW50Q0ZIVFRQQ29va2ll
U3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCk7Ci0gICAgd2tT
ZXRIVFRQQ29va2llc0ZvclVSTChjb29raWVTdG9yYWdlLmdldCgpLCBmaWx0ZXJlZENvb2tpZXMu
Z2V0KCksIGNvb2tpZVVSTCwgZmlyc3RQYXJ0eSk7CisgICAgd2tTZXRIVFRQQ29va2llc0ZvclVS
TChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgZmlsdGVyZWRDb29raWVzLmdldCgpLCBj
b29raWVVUkwsIGZpcnN0UGFydHkpOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
IH0KIAotYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29u
c3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCitib29sIGNvb2tp
ZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VS
TCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCiB7CiAgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2Uo
Y29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAgIE5TSFRUUENvb2tp
ZUFjY2VwdFBvbGljeSBjb29raWVBY2NlcHRQb2xpY3kgPSBzdGF0aWNfY2FzdDxOU0hUVFBDb29r
aWVBY2NlcHRQb2xpY3k+KHdrR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdl
LmdldCgpKSk7CisgICAgTlNIVFRQQ29va2llQWNjZXB0UG9saWN5IGNvb2tpZUFjY2VwdFBvbGlj
eSA9IHN0YXRpY19jYXN0PE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeT4od2tHZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpKSk7CiAgICAgcmV0dXJu
IGNvb2tpZUFjY2VwdFBvbGljeSA9PSBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lBbHdheXMgfHwg
Y29va2llQWNjZXB0UG9saWN5ID09IE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFp
bkRvY3VtZW50RG9tYWluOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgZ2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCog
Y29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCwgVmVj
dG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29u
c3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKICAgICByYXdDb29r
aWVzLmNsZWFyKCk7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgUmV0
YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8g
Y3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2ll
U3RvcmFnZSgpOwotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hUVFBDb29raWVzRm9yVVJMKGNv
b2tpZVN0b3JhZ2UuZ2V0KCksIHVybCk7CisgICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENv
b2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHVybCk7CiAgICAgTlNV
SW50ZWdlciBjb3VudCA9IFtjb29raWVzIGNvdW50XTsKICAgICByYXdDb29raWVzLnJlc2VydmVD
YXBhY2l0eShjb3VudCk7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsr
aSkgewpAQCAtMTQxLDEyICsxMzUsMTIgQEAgYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdD
b250ZXh0KiBjbwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIGRlbGV0ZUNvb2tpZShOZXR3
b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNv
b2tpZU5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewog
ICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAogICAgIE5TVVJMICpjb29raWVVUkwg
PSB1cmw7Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3Jh
Z2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZh
dWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOworICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9y
YWdlUmVmPiBjb29raWVTdG9yYWdlID0gc2Vzc2lvbi5jb29raWVTdG9yYWdlKCk7CiAgICAgTlNB
cnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXNGb3JVUkwoY29va2llU3RvcmFnZS5nZXQoKSwg
Y29va2llVVJMKTsKIAogICAgIE5TU3RyaW5nICpjb29raWVOYW1lU3RyaW5nID0gY29va2llTmFt
ZTsKQEAgLTE2MSwxMiArMTU1LDExIEBAIHZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250
ZXh0KiBjb24KICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCi12b2lkIGdldEhv
c3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBIYXNoU2V0PFN0
cmluZz4mIGhvc3RuYW1lcykKK3ZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykK
IHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBSZXRhaW5QdHI8Q0ZI
VFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBjdXJyZW50Q0ZI
VFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCk7
Ci0gICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXMoY29va2llU3RvcmFnZS5nZXQo
KSk7CisgICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXMoc2Vzc2lvbi5jb29raWVT
dG9yYWdlKCkuZ2V0KCkpOwogICAgIAogICAgIGZvciAoTlNIVFRQQ29va2llKiBjb29raWUgaW4g
Y29va2llcykKICAgICAgICAgaG9zdG5hbWVzLmFkZChbY29va2llIGRvbWFpbl0pOwpAQCAtMTc0
LDExICsxNjcsMTEgQEAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQwog
ICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llc0Zv
ckhvc3RuYW1lKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGhvc3Ru
YW1lKQordm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdl
UmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdl
KGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKKyAgICBSZXRhaW5QdHI8
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IHNlc3Npb24uY29va2llU3Rv
cmFnZSgpOwogICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hUVFBDb29raWVzKGNvb2tpZVN0b3Jh
Z2UuZ2V0KCkpOwogICAgIGlmICghY29va2llcykKICAgICAgICAgcmV0dXJuOwpAQCAtMTkxLDEw
ICsxODQsOSBAQCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShOZXR3b3JraW5nCiAgICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAotdm9pZCBkZWxldGVBbGxDb29raWVzKE5l
dHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQordm9pZCBkZWxldGVBbGxDb29raWVzKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKIHsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29v
a2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBjdXJyZW50Q0ZIVFRQQ29v
a2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCk7Ci0gICAg
d2tEZWxldGVBbGxIVFRQQ29va2llcyhjb29raWVTdG9yYWdlLmdldCgpKTsKKyAgICB3a0RlbGV0
ZUFsbEhUVFBDb29raWVzKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpKTsKIH0KIAogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llU3RvcmFnZU1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9D
b29raWVTdG9yYWdlTWFjLm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVTdG9yYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yNSw3ICsyNSw2IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb29raWVT
dG9yYWdlLmgiCi0jaW5jbHVkZSAiQ29va2llU3RvcmFnZUNGTmV0LmgiCiAKICNpbXBvcnQgIlJl
c291cmNlSGFuZGxlLmgiCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCShyZXZpc2lvbiAxMzg0MDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1h
Yy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNiBAQAogI2ltcG9ydCAiQmxvYlJlZ2lz
dHJ5LmgiCiAjaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkNvb2tpZVN0b3Jh
Z2UuaCIKLSNpbXBvcnQgIkNvb2tpZVN0b3JhZ2VDRk5ldC5oIgogI2ltcG9ydCAiQ3JlZGVudGlh
bFN0b3JhZ2UuaCIKICNpbXBvcnQgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW1wb3J0ICJF
bXB0eVByb3RvY29sRGVmaW5pdGlvbnMuaCIKQEAgLTQyLDYgKzQxLDcgQEAKICNpbXBvcnQgIkZy
YW1lTG9hZGVyLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNSU1FVHlwZVJlZ2lz
dHJ5LmgiCisjaW1wb3J0ICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2ltcG9ydCAiUGFnZS5oIgog
I2ltcG9ydCAiUmVzb3VyY2VFcnJvci5oIgogI2ltcG9ydCAiUmVzb3VyY2VSZXNwb25zZS5oIgpA
QCAtMTQ3LDcgKzE0Nyw3IEBAIHN0YXRpYyBib29sIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tp
ZVAKIHsKICAgICAvLyBJZiBhIFVSTCBhbHJlYWR5IGhhcyBjb29raWVzLCB0aGVuIHdlJ2xsIHJl
bGF4IHRoZSAzcmQgcGFydHkgY29va2llIHBvbGljeSBhbmQgYWNjZXB0IG5ldyBjb29raWVzLgog
Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNmQ29va2llU3RvcmFnZSA9
IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpOworICAgIFJldGFpblB0cjxDRkhU
VFBDb29raWVTdG9yYWdlUmVmPiBjZkNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0LT5zdG9yYWdlU2Vz
c2lvbigpLmNvb2tpZVN0b3JhZ2UoKTsKICAgICBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kgY29v
a2llQWNjZXB0UG9saWN5ID0gc3RhdGljX2Nhc3Q8TlNIVFRQQ29va2llQWNjZXB0UG9saWN5Pih3
a0dldEhUVFBDb29raWVBY2NlcHRQb2xpY3koY2ZDb29raWVTdG9yYWdlLmdldCgpKSk7CiAKICAg
ICBpZiAoY29va2llQWNjZXB0UG9saWN5ICE9IE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlG
cm9tTWFpbkRvY3VtZW50RG9tYWluKQpAQCAtMjMwLDcgKzIzMCw3IEBAIGJvb2wgUmVzb3VyY2VI
YW5kbGU6OnN0YXJ0KE5ldHdvcmtpbmdDb24KICAgICBpZiAoIWNvbnRleHQtPmlzVmFsaWQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRl
eHQtPnN0b3JhZ2VTZXNzaW9uKCk7CisgICAgZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRleHQt
PnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCk7CiAKICAgICBBU1NFUlQoIWQtPm1f
cHJveHkpOwogICAgIGQtPm1fcHJveHkuYWRvcHROUyh3a0NyZWF0ZU5TVVJMQ29ubmVjdGlvbkRl
bGVnYXRlUHJveHkoKSk7CkBAIC0zOTYsNyArMzk2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6
bG9hZFJlc291cmNlU3luY2hybwogCiAgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUg
PSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5kbGUocmVxdWVzdCwgY2xpZW50LmdldCgpLCBmYWxz
ZSAvKmRlZmVyc0xvYWRpbmcqLywgdHJ1ZSAvKnNob3VsZENvbnRlbnRTbmlmZiovKSk7CiAKLSAg
ICBoYW5kbGUtPmQtPm1fc3RvcmFnZVNlc3Npb24gPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigp
OworICAgIGhhbmRsZS0+ZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNz
aW9uKCkucGxhdGZvcm1TZXNzaW9uKCk7CiAKICAgICBpZiAoY29udGV4dCAmJiBoYW5kbGUtPmQt
Pm1fc2NoZWR1bGVkRmFpbHVyZVR5cGUgIT0gTm9GYWlsdXJlKSB7CiAgICAgICAgIGVycm9yID0g
Y29udGV4dC0+YmxvY2tlZEVycm9yKHJlcXVlc3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9xdC9Db29raWVKYXJRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Db29raWVKYXJRdC5jcHAJKHJldmlzaW9uIDEzODQw
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvQ29va2llSmFyUXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NiwxNSArNDYsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdGF0aWMgU2hhcmVkQ29va2llSmFyUXQqIHNfc2hhcmVkQ29va2llSmFyUXQgPSAwOwogCi12
b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit2
b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVl
KQogewotICAgIFFOZXR3b3JrQ29va2llSmFyKiBqYXIgPSBjb250ZXh0ID8gY29udGV4dC0+bmV0
d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBTaGFyZWRDb29raWVKYXJRdDo6c2hh
cmVkKCk7CisgICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IHNlc3Npb24uY29udGV4dCgpID8g
c2Vzc2lvbi5jb250ZXh0KCktPm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCktPmNvb2tpZUphcigpIDog
U2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOwogICAgIGlmICghamFyKQogICAgICAgICByZXR1
cm47CiAKICAgICBRVXJsIHVybEZvckNvb2tpZXModXJsKTsKICAgICBRVXJsIGZpcnN0UGFydHlV
cmwoZmlyc3RQYXJ0eSk7Ci0gICAgaWYgKCF0aGlyZFBhcnR5Q29va2llUG9saWN5UGVybWl0cyhj
b250ZXh0LCB1cmxGb3JDb29raWVzLCBmaXJzdFBhcnR5VXJsKSkKKyAgICBpZiAoIXRoaXJkUGFy
dHlDb29raWVQb2xpY3lQZXJtaXRzKHNlc3Npb24uY29udGV4dCgpLCB1cmxGb3JDb29raWVzLCBm
aXJzdFBhcnR5VXJsKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUUxpc3Q8UU5ldHdvcmtDb29r
aWU+IGNvb2tpZXMgPSBRTmV0d29ya0Nvb2tpZTo6cGFyc2VDb29raWVzKFFTdHJpbmcodmFsdWUp
LnRvTGF0aW4xKCkpOwpAQCAtNjksMTUgKzY5LDE1IEBAIHZvaWQgc2V0Q29va2llc0Zyb21ET00o
TmV0d29ya2luZ0NvbnRleHQKICAgICBqYXItPnNldENvb2tpZXNGcm9tVXJsKGNvb2tpZXMsIHVy
bEZvckNvb2tpZXMpOwogfQogCi1TdHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3Ry
aW5nIGNvb2tpZXNGb3JET00oTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgUU5ldHdvcmtDb29raWVK
YXIqIGphciA9IGNvbnRleHQgPyBjb250ZXh0LT5uZXR3b3JrQWNjZXNzTWFuYWdlcigpLT5jb29r
aWVKYXIoKSA6IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKKyAgICBRTmV0d29ya0Nvb2tp
ZUphciogamFyID0gc2Vzc2lvbi5jb250ZXh0KCkgPyBzZXNzaW9uLmNvbnRleHQoKS0+bmV0d29y
a0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVk
KCk7CiAgICAgaWYgKCFqYXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIFFVcmwg
dXJsRm9yQ29va2llcyh1cmwpOwogICAgIFFVcmwgZmlyc3RQYXJ0eVVybChmaXJzdFBhcnR5KTsK
LSAgICBpZiAoIXRoaXJkUGFydHlDb29raWVQb2xpY3lQZXJtaXRzKGNvbnRleHQsIHVybEZvckNv
b2tpZXMsIGZpcnN0UGFydHlVcmwpKQorICAgIGlmICghdGhpcmRQYXJ0eUNvb2tpZVBvbGljeVBl
cm1pdHMoc2Vzc2lvbi5jb250ZXh0KCksIHVybEZvckNvb2tpZXMsIGZpcnN0UGFydHlVcmwpKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBRTGlzdDxRTmV0d29ya0Nvb2tpZT4gY29v
a2llcyA9IGphci0+Y29va2llc0ZvclVybCh1cmxGb3JDb29raWVzKTsKQEAgLTk0LDkgKzk0LDkg
QEAgU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqIAogICAgIHJldHVybiBy
ZXN1bHRDb29raWVzLmpvaW4oUUxhdGluMVN0cmluZygiOyAiKSk7CiB9CiAKLVN0cmluZyBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29u
c3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgUU5ldHdv
cmtDb29raWVKYXIqIGphciA9IGNvbnRleHQgPyBjb250ZXh0LT5uZXR3b3JrQWNjZXNzTWFuYWdl
cigpLT5jb29raWVKYXIoKSA6IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKKyAgICBRTmV0
d29ya0Nvb2tpZUphciogamFyID0gc2Vzc2lvbi5jb250ZXh0KCkgPyBzZXNzaW9uLmNvbnRleHQo
KS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBTaGFyZWRDb29raWVKYXJR
dDo6c2hhcmVkKCk7CiAgICAgaWYgKCFqYXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIApA
QCAtMTExLDQzICsxMTEsNDMgQEAgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KE5ldAogICAgIHJldHVybiByZXN1bHRDb29raWVzLmpvaW4oUUxhdGluMVN0cmluZygiOyAiKSk7
CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQorYm9vbCBjb29r
aWVzRW5hYmxlZChOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8q
Zmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQogewotICAgIFFOZXR3b3JrQ29va2ll
SmFyKiBqYXIgPSBjb250ZXh0ID8gY29udGV4dC0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29v
a2llSmFyKCkgOiBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CisgICAgUU5ldHdvcmtDb29r
aWVKYXIqIGphciA9IHNlc3Npb24uY29udGV4dCgpID8gc2Vzc2lvbi5jb250ZXh0KCktPm5ldHdv
cmtBY2Nlc3NNYW5hZ2VyKCktPmNvb2tpZUphcigpIDogU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJl
ZCgpOwogICAgIHJldHVybiAhIWphcjsKIH0KIAotYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtp
bmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VS
TCYgLyp1cmwqLywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIGdldFJhd0Nvb2tp
ZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFy
dHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7
CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKICAgICByYXdDb29raWVzLmNsZWFy
KCk7CiAgICAgcmV0dXJuIGZhbHNlOyAvLyByZXR1cm4gdHJ1ZSB3aGVuIGltcGxlbWVudGVkCiB9
CiAKLXZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYsIGNv
bnN0IFN0cmluZyYpCit2b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBs
ZW1lbnRlZAogfQogCi12b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXh0LCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKK3ZvaWQgZ2V0SG9zdG5h
bWVzV2l0aENvb2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBIYXNoU2V0PFN0
cmluZz4mIGhvc3RuYW1lcykKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsICFjb250ZXh0
KTsgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBmb3IgY29va2llIGphcnMgb3RoZXIgdGhhbiB0aGUg
c2hhcmVkIG9uZS4KKyAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb24sICFzZXNzaW9uLmNvbnRleHQo
KSk7IC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9yIGNvb2tpZSBqYXJzIG90aGVyIHRoYW4gdGhl
IHNoYXJlZCBvbmUuCiAgICAgU2hhcmVkQ29va2llSmFyUXQqIGphciA9IFNoYXJlZENvb2tpZUph
clF0OjpzaGFyZWQoKTsKICAgICBpZiAoamFyKQogICAgICAgICBqYXItPmdldEhvc3RuYW1lc1dp
dGhDb29raWVzKGhvc3RuYW1lcyk7CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1l
KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQordm9p
ZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewotICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwg
IWNvbnRleHQpOyAvLyBOb3QgeWV0IGltcGxlbWVudGVkIGZvciBjb29raWUgamFycyBvdGhlciB0
aGFuIHRoZSBzaGFyZWQgb25lLgorICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbiwgIXNlc3Npb24u
Y29udGV4dCgpKTsgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBmb3IgY29va2llIGphcnMgb3RoZXIg
dGhhbiB0aGUgc2hhcmVkIG9uZS4KICAgICBTaGFyZWRDb29raWVKYXJRdCogamFyID0gU2hhcmVk
Q29va2llSmFyUXQ6OnNoYXJlZCgpOwogICAgIGlmIChqYXIpCiAgICAgICAgIGphci0+ZGVsZXRl
Q29va2llc0Zvckhvc3RuYW1lKGhvc3RuYW1lKTsKIH0KIAotdm9pZCBkZWxldGVBbGxDb29raWVz
KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQordm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQs
ICFjb250ZXh0KTsgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBmb3IgY29va2llIGphcnMgb3RoZXIg
dGhhbiB0aGUgc2hhcmVkIG9uZS4KKyAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb24sICFzZXNzaW9u
LmNvbnRleHQoKSk7IC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9yIGNvb2tpZSBqYXJzIG90aGVy
IHRoYW4gdGhlIHNoYXJlZCBvbmUuCiAgICAgU2hhcmVkQ29va2llSmFyUXQqIGphciA9IFNoYXJl
ZENvb2tpZUphclF0OjpzaGFyZWQoKTsKICAgICBpZiAoamFyKQogICAgICAgICBqYXItPmRlbGV0
ZUFsbENvb2tpZXMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9Db29raWVKYXJTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzIsOSArMzIsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1z
dGF0aWMgU291cENvb2tpZUphciogY29va2llSmFyRm9yQ29udGV4dChOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCkKK3N0YXRpYyBTb3VwQ29va2llSmFyKiBjb29raWVKYXJGb3JTZXNzaW9uKE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKIHsKLSAgICByZXR1cm4gU09VUF9DT09LSUVf
SkFSKHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShjb250ZXh0LT5zb3VwU2Vzc2lvbigpLCBTT1VQ
X1RZUEVfQ09PS0lFX0pBUikpOworICAgIGlmICghc2Vzc2lvbi5jb250ZXh0KCkpCisgICAgICAg
IHJldHVybiBzb3VwQ29va2llSmFyKCk7CisgICAgcmV0dXJuIFNPVVBfQ09PS0lFX0pBUihzb3Vw
X3Nlc3Npb25fZ2V0X2ZlYXR1cmUoc2Vzc2lvbi5jb250ZXh0KCktPnNvdXBTZXNzaW9uKCksIFNP
VVBfVFlQRV9DT09LSUVfSkFSKSk7CiB9CiAKIHN0YXRpYyBHUmVmUHRyPFNvdXBDb29raWVKYXI+
JiBkZWZhdWx0Q29va2llSmFyKCkKQEAgLTczLDkgKzc1LDkgQEAgc3RhdGljIGlubGluZSBib29s
IGh0dHBPbmx5Q29va2llRXhpc3RzKAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBzZXRD
b29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBzZXRD
b29raWVzRnJvbURPTShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwm
IGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAg
ICBTb3VwQ29va2llSmFyKiBqYXIgPSBjb250ZXh0ID8gY29va2llSmFyRm9yQ29udGV4dChjb250
ZXh0KSA6IHNvdXBDb29raWVKYXIoKTsKKyAgICBTb3VwQ29va2llSmFyKiBqYXIgPSBjb29raWVK
YXJGb3JTZXNzaW9uKHNlc3Npb24pOwogICAgIGlmICghamFyKQogICAgICAgICByZXR1cm47CiAK
QEAgLTEwNyw5ICsxMDksOSBAQCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250
ZXh0CiAgICAgc291cF9jb29raWVzX2ZyZWUoZXhpc3RpbmdDb29raWVzKTsKIH0KIAotc3RhdGlj
IFN0cmluZyBjb29raWVzRm9yQ29udGV4dChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29u
c3QgS1VSTCYgdXJsLCBib29sIGZvckhUVFBIZWFkZXIpCitzdGF0aWMgU3RyaW5nIGNvb2tpZXNG
b3JTZXNzaW9uKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJs
LCBib29sIGZvckhUVFBIZWFkZXIpCiB7Ci0gICAgU291cENvb2tpZUphciogamFyID0gY29udGV4
dCA/IGNvb2tpZUphckZvckNvbnRleHQoY29udGV4dCkgOiBzb3VwQ29va2llSmFyKCk7CisgICAg
U291cENvb2tpZUphciogamFyID0gY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKICAgICBp
ZiAoIWphcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCkBAIC0xMTgsMjUgKzEyMCwyNSBA
QCBzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JDb250ZXh0KE5ldHdvcmtpCiAgICAgcmV0dXJuIFN0
cmluZzo6ZnJvbVVURjgoY29va2llcy5nZXQoKSk7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9N
KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJs
KQorU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVybiBjb29raWVzRm9yQ29u
dGV4dChjb250ZXh0LCB1cmwsIGZhbHNlKTsKKyAgICByZXR1cm4gY29va2llc0ZvclNlc3Npb24o
c2Vzc2lvbiwgdXJsLCBmYWxzZSk7CiB9CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBh
cnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQ
YXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIGNvb2tpZXNGb3JDb250ZXh0
KGNvbnRleHQsIHVybCwgdHJ1ZSk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKHNlc3Np
b24sIHVybCwgdHJ1ZSk7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVy
bCovKQorYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQogewotICAg
IHJldHVybiAhIWNvb2tpZUphckZvckNvbnRleHQoY29udGV4dCk7CisgICAgcmV0dXJuICEhY29v
a2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKIH0KIAotYm9vbCBnZXRSYXdDb29raWVzKE5ldHdv
cmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3Qg
S1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2ll
cyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0
eSovLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewogICAg
IHJhd0Nvb2tpZXMuY2xlYXIoKTsKLSAgICBTb3VwQ29va2llSmFyKiBqYXIgPSBjb250ZXh0ID8g
Y29va2llSmFyRm9yQ29udGV4dChjb250ZXh0KSA6IHNvdXBDb29raWVKYXIoKTsKKyAgICBTb3Vw
Q29va2llSmFyKiBqYXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Npb24pOwogICAgIGlmICgh
amFyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE1Nyw5ICsxNTksOSBAQCBib29sIGdl
dFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LXZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUp
CiB7Ci0gICAgU291cENvb2tpZUphciogamFyID0gY29udGV4dCA/IGNvb2tpZUphckZvckNvbnRl
eHQoY29udGV4dCkgOiBzb3VwQ29va2llSmFyKCk7CisgICAgU291cENvb2tpZUphciogamFyID0g
Y29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKICAgICBpZiAoIWphcikKICAgICAgICAgcmV0
dXJuOwogCkBAIC0xNzgsOSArMTgwLDkgQEAgdm9pZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0Nv
bnRleHQqIGNvbgogICAgIH0KIH0KIAotdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3
b3JraW5nQ29udGV4dCogY29udGV4dCwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCit2b2lk
IGdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
SGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7Ci0gICAgU291cENvb2tpZUphciogY29va2ll
SmFyID0gY29udGV4dCA/IGNvb2tpZUphckZvckNvbnRleHQoY29udGV4dCkgOiBzb3VwQ29va2ll
SmFyKCk7CisgICAgU291cENvb2tpZUphciogY29va2llSmFyID0gY29va2llSmFyRm9yU2Vzc2lv
bihzZXNzaW9uKTsKICAgICBHT3duUHRyPEdTTGlzdD4gY29va2llcyhzb3VwX2Nvb2tpZV9qYXJf
YWxsX2Nvb2tpZXMoY29va2llSmFyKSk7CiAgICAgZm9yIChHU0xpc3QqIGl0ZW0gPSBjb29raWVz
LmdldCgpOyBpdGVtOyBpdGVtID0gZ19zbGlzdF9uZXh0KGl0ZW0pKSB7CiAgICAgICAgIEdPd25Q
dHI8U291cENvb2tpZT4gY29va2llKHN0YXRpY19jYXN0PFNvdXBDb29raWUqPihpdGVtLT5kYXRh
KSk7CkBAIC0xOTAsMTAgKzE5MiwxMCBAQCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5l
dHdvcmtpbmdDCiAgICAgfQogfQogCi12b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShOZXR3
b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKK3ZvaWQgZGVs
ZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKICAgICBDU3RyaW5nIGhvc3ROYW1lU3RyaW5nID0gaG9z
dG5hbWUudXRmOCgpOwotICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphciA9IGNvbnRleHQgPyBj
b29raWVKYXJGb3JDb250ZXh0KGNvbnRleHQpIDogc291cENvb2tpZUphcigpOworICAgIFNvdXBD
b29raWVKYXIqIGNvb2tpZUphciA9IGNvb2tpZUphckZvclNlc3Npb24oc2Vzc2lvbik7CiAgICAg
R093blB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29raWVfamFyX2FsbF9jb29raWVzKGNvb2tp
ZUphcikpOwogICAgIGZvciAoR1NMaXN0KiBpdGVtID0gY29va2llcy5nZXQoKTsgaXRlbTsgaXRl
bSA9IGdfc2xpc3RfbmV4dChpdGVtKSkgewogICAgICAgICBTb3VwQ29va2llKiBjb29raWUgPSBz
dGF0aWNfY2FzdDxTb3VwQ29va2llKj4oaXRlbS0+ZGF0YSk7CkBAIC0yMDMsOSArMjA1LDkgQEAg
dm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZwogICAgIH0KIH0KIAotdm9p
ZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQordm9pZCBkZWxl
dGVBbGxDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKIHsKLSAgICBTb3Vw
Q29va2llSmFyKiBjb29raWVKYXIgPSBjb250ZXh0ID8gY29va2llSmFyRm9yQ29udGV4dChjb250
ZXh0KSA6IHNvdXBDb29raWVKYXIoKTsKKyAgICBTb3VwQ29va2llSmFyKiBjb29raWVKYXIgPSBj
b29raWVKYXJGb3JTZXNzaW9uKHNlc3Npb24pOwogICAgIEdPd25QdHI8R1NMaXN0PiBjb29raWVz
KHNvdXBfY29va2llX2phcl9hbGxfY29va2llcyhjb29raWVKYXIpKTsKICAgICBmb3IgKEdTTGlz
dCogaXRlbSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkp
IHsKICAgICAgICAgU291cENvb2tpZSogY29va2llID0gc3RhdGljX2Nhc3Q8U291cENvb2tpZSo+
KGl0ZW0tPmRhdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlSGFuZGxlU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAJKHJldmlzaW9uIDEzODQw
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRs
ZVNvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiTG9j
YWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNSU1FVHlw
ZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVy
cm9yLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Db29raWVK
YXJXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
d2luL0Nvb2tpZUphcldpbi5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUgIktVUkwuaCIK
KyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxl
LmgiCiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgPFdpbmluZXQuaD4KQEAgLTM1LDcg
KzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIHNldENvb2tpZXNGcm9tRE9N
KE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKK3ZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
IHsKICAgICAvLyBGSVhNRTogRGVhbCB3aXRoIGZpcnN0UGFydHkgYXJndW1lbnQuCiAgICAgU3Ry
aW5nIHN0ciA9IHVybC5zdHJpbmcoKTsKQEAgLTQzLDcgKzQ0LDcgQEAgdm9pZCBzZXRDb29raWVz
RnJvbURPTShOZXR3b3JraW5nQ29udGV4dAogICAgIEludGVybmV0U2V0Q29va2llKHN0ci5jaGFy
YWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCAwLCB2YWwuY2hhcmFjdGVyc1dpdGhOdWxsVGVy
bWluYXRpb24oKSk7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0
KiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVzRm9yRE9NKE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAg
ICAgLy8gRklYTUU6IERlYWwgd2l0aCBmaXJzdFBhcnR5IGFyZ3VtZW50LgogCkBAIC02NCw0MCAr
NjUsNDAgQEAgU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqLAogICAgIHJl
dHVybiBTdHJpbmc6OmFkb3B0KGJ1ZmZlcik7CiB9CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewogICAgIC8vIEZJWE1FOiBpbmNsdWRlIEh0dHBPbmx5
IGNvb2tpZQotICAgIHJldHVybiBjb29raWVzRm9yRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVy
bCk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JET00oc2Vzc2lvbi5jb250ZXh0KCksIGZpcnN0UGFy
dHksIHVybCk7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQor
Ym9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQogewogICAgIHJldHVy
biB0cnVlOwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovLCBWZWN0
b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2llcyhOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJM
JiAvKnVybCovLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKICAgICAvLyBGSVhNRTog
Tm90IHlldCBpbXBsZW1lbnRlZAogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKICAgICByZXR1cm4g
ZmFsc2U7IC8vIHJldHVybiB0cnVlIHdoZW4gaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxldGVD
b29raWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKK3Zv
aWQgZGVsZXRlQ29va2llKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25z
dCBTdHJpbmcmKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZv
aWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqLCBIYXNoU2V0PFN0
cmluZz4mIGhvc3RuYW1lcykKK3ZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7CiAgICAgLy8gRklY
TUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5h
bWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQordm9pZCBkZWxl
dGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgU3RyaW5n
JiBob3N0bmFtZSkKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQogCi12
b2lkIGRlbGV0ZUFsbENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqKQordm9pZCBkZWxldGVBbGxD
b29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQg
aW1wbGVtZW50ZWQKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2lu
L1Jlc291cmNlSGFuZGxlV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUhhbmRsZVdpbi5jcHAJKHJldmlzaW9uIDEzODQwNykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlSGFuZGxlV2lu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkRhdGFVUkwu
aCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnku
aCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFu
ZGxlQ2xpZW50LmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lv
biAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NCwxNiArMTQ0LDkgQEAg
dm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0UwogICAgIG1fc2VyaWFsTG9h
ZGluZ0VuYWJsZWQgPSBlbmFibGVkOwogfQogCi1zdGF0aWMgUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQqIG5ldHdvcmtpbmdDb250ZXh0KGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKK3N0YXRp
YyBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKGJvb2wgcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCkKIHsKLSAgICAvLyBUaGlzIG5ldHdvcmtpbmcgY29udGV4dCBpcyBvbmx5IG5l
ZWRlZCB0byBnZXQgc3RvcmFnZSBzZXNzaW9uIGZyb20uCi0gICAgaWYgKHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQpIHsKLSAgICAgICAgc3RhdGljIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0KiBjb250
ZXh0ID0gUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShmYWxzZSwgZmFsc2UsIHRydWUp
LmxlYWtSZWYoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQ7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgc3RhdGljIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0ID0gUmVtb3RlTmV0d29y
a2luZ0NvbnRleHQ6OmNyZWF0ZShmYWxzZSwgZmFsc2UsIGZhbHNlKS5sZWFrUmVmKCk7Ci0gICAg
ICAgIHJldHVybiBjb250ZXh0OwotICAgIH0KKyAgICByZXR1cm4gcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCA/IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpwcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkg
OiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQogCiB2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERvd25sb2FkKGJvb2wgcHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCwgdWludDY0X3QgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQpAQCAtMTY0LDMyICsxNTcsMzIgQEAgdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6c3RhcgogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpjb29raWVzRm9yRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcmIHJlc3VsdCkKIHsKLSAgICBy
ZXN1bHQgPSBXZWJDb3JlOjpjb29raWVzRm9yRE9NKG5ldHdvcmtpbmdDb250ZXh0KHByaXZhdGVC
cm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJlc3VsdCA9IFdlYkNvcmU6
OmNvb2tpZXNGb3JET00oc3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZp
cnN0UGFydHksIHVybCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OnNldENvb2tpZXNGcm9tRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmlu
ZykKIHsKLSAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShuZXR3b3JraW5nQ29udGV4dChw
cml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwor
ICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93
c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CiB9CiAKIHZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFibGVkKGJvb2wgcHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJs
LCBib29sJiByZXN1bHQpCiB7Ci0gICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQo
bmV0d29ya2luZ0NvbnRleHQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVy
bCk7CisgICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc3RvcmFnZVNlc3Npb24o
cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCk7CiB9CiAKIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYgdXJsLCBTdHJpbmcmIHJlc3VsdCkKIHsKLSAgICByZXN1bHQgPSBXZWJDb3JlOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShuZXR3b3JraW5nQ29udGV4dChwcml2YXRlQnJv
d3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXN1bHQgPSBXZWJDb3JlOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzdG9yYWdlU2Vzc2lvbihwcml2YXRlQnJvd3Np
bmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyhib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQs
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4m
IHJlc3VsdCkKIHsKLSAgICBXZWJDb3JlOjpnZXRSYXdDb29raWVzKG5ldHdvcmtpbmdDb250ZXh0
KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwsIHJlc3VsdCk7CisgICAg
V2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzdG9yYWdlU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdFbmFi
bGVkKSwgZmlyc3RQYXJ0eSwgdXJsLCByZXN1bHQpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVk
LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKLSAgICBXZWJD
b3JlOjpkZWxldGVDb29raWUobmV0d29ya2luZ0NvbnRleHQocHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCksIHVybCwgY29va2llTmFtZSk7CisgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHN0b3JhZ2VT
ZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lv
biAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0
d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOCBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwogICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CiAKKyAgICBzdGF0aWMg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBwcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7
IC8vIENhbiBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBzZXNzaW9uIGV4aXN0cy4KKwogcHJpdmF0
ZToKICAgICBSZW1vdGVOZXR3b3JraW5nQ29udGV4dChib29sIG5lZWRzU2l0ZVNwZWNpZmljUXVp
cmtzLCBib29sIGxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQsIGJvb2wgcHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCk7CiAKQEAgLTQ5LDggKzUxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1
YWwgYm9vbCBuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygpIGNvbnN0IE9WRVJSSURFOwogICAgIHZp
cnR1YWwgYm9vbCBsb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkKCkgY29uc3QgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCBib29sIGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpIGNvbnN0IE9WRVJS
SURFOwotICAgIHZpcnR1YWwgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbigp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgTlNPcGVy
YXRpb25RdWV1ZSAqc2NoZWR1bGVkT3BlcmF0aW9uUXVldWUoKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0IE9WRVJSSURFOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtp
bmdDb250ZXh0Lm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0JKHdvcmtpbmcgY29weSkKQEAg
LTM1LDcgKzM1LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgcHJpdmF0ZUJyb3dzaW5nU3Rv
cmFnZVNlc3Npb247CitzdGF0aWMgT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4mIHByaXZh
dGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIERFRklORV9TVEFUSUNfTE9DQUwoT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4s
IHNlc3Npb24sICgpKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKK30KIAogUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0KGJvb2wgbmVlZHNTaXRlU3BlY2lmaWNR
dWlya3MsIGJvb2wgbG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZCwgYm9vbCBwcml2YXRl
QnJvd3NpbmdFbmFibGVkKQogICAgIDogbV9uZWVkc1NpdGVTcGVjaWZpY1F1aXJrcyhuZWVkc1Np
dGVTcGVjaWZpY1F1aXJrcykKQEAgLTYzLDE5ICs2OCwyMCBAQCBib29sIFJlbW90ZU5ldHdvcmtp
bmdDb250ZXh0Ojpsb2NhbEZpbGVDCiAgICAgcmV0dXJuIG1fbG9jYWxGaWxlQ29udGVudFNuaWZm
aW5nRW5hYmxlZDsKIH0KIAotYm9vbCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6aW5Qcml2YXRl
QnJvd3NpbmdNb2RlKCkgY29uc3QKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgUmVtb3RlTmV0d29y
a2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2
YXRlQnJvd3NpbmdFbmFibGVkOworICAgIGlmIChtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQpIHsK
KyAgICAgICAgQVNTRVJUKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpOworICAgICAg
ICByZXR1cm4gKnByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCk7CisgICAgfQorCisgICAg
cmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9
CiAKLUNGVVJMU3RvcmFnZVNlc3Npb25SZWYgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnN0b3Jh
Z2VTZXNzaW9uKCkgY29uc3QKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQ6OnByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewotICAgIGlmIChpblByaXZhdGVC
cm93c2luZ01vZGUoKSkgewotICAgICAgICBBU1NFUlQocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNl
c3Npb24pOwotICAgICAgICByZXR1cm4gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb247Ci0g
ICAgfQotICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IFJldHVybiBhIGRlZmF1bHQgc2Vz
c2lvbiB0aGF0J3MgdXNlZCBmb3IgdGVzdGluZy4KLSAgICByZXR1cm4gMDsKKyAgICBBU1NFUlQo
cHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSk7CisgICAgcmV0dXJuICpwcml2YXRlQnJv
d3NpbmdTdG9yYWdlU2Vzc2lvbigpOwogfQogCiBOU09wZXJhdGlvblF1ZXVlICpSZW1vdGVOZXR3
b3JraW5nQ29udGV4dDo6c2NoZWR1bGVkT3BlcmF0aW9uUXVldWUoKSBjb25zdApAQCAtMTA4LDIz
ICsxMTQsMTggQEAgdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6c2V0UHJpdmF0ZQogCiB2
b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmIChwcml2YXRlQnJvd3Np
bmdTdG9yYWdlU2Vzc2lvbikKKyAgICBpZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24o
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFwcml2YXRlQnJvd3NpbmdTdG9yYWdl
U2Vzc2lvbklkZW50aWZpZXJCYXNlKCkuaXNOdWxsKCkpOwogICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gY2ZJZGVudGlmaWVyID0gU3RyaW5nKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9u
SWRlbnRpZmllckJhc2UoKSArICIuUHJpdmF0ZUJyb3dzaW5nIikuY3JlYXRlQ0ZTdHJpbmcoKTsK
IAotICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uID0gV0tDcmVhdGVQcml2YXRlU3Rv
cmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpKTsKKyAgICBwcml2YXRlQnJvd3NpbmdTdG9y
YWdlU2Vzc2lvbigpID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKSk7
CiB9CiAKIHZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKCkKIHsKLSAgICBpZiAoIXByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBDRlJlbGVhc2UocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNl
c3Npb24pOwotICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uID0gMDsKKyAgICBwcml2
YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpID0gbnVsbHB0cjsKIH0KIAogfQpJbmRleDogU291
cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90
b2NvbE1hbmFnZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL05l
dHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW0JKHJl
dmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVBy
b3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbXBv
cnQgIldlYlByb2Nlc3MuaCIKICNpbXBvcnQgPFdlYkNvcmUvS1VSTC5oPgorI2ltcG9ydCA8V2Vi
Q29yZS9SZXNvdXJjZUVycm9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTA0Myw3ICsxMDQzLDYgQEAKIAkJRTFC
Nzg0NzMxNjNGMjUzRTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFCNzg0NzIxNjNGMjUz
RTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tICovOyB9OwogCQlFMUNDMUI5
MDEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUNDMUI4RTEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJ
bmZvLmggKi87IH07CiAJCUUxQ0MxQjkxMTJEN0VBREYwMDYyNTgzOCAvKiBQcmludEluZm9NYWMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUNDMUI4
RjEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvTWFjLm1tICovOyB9OwotCQlFMUQyMjk3MTE2
NTJEQzUyMDBCQUE0QkQgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFEMjI5NkUxNjUyREI5QzAwQkFB
NEJEIC8qIFdlYlBsYXRmb3JtU3RyYXRlZ2llc01hYy5tbSAqLzsgfTsKIAkJRTFFREZEQTYxNjI4
ODY4RTAwMzlFQ0RBIC8qIE1haW5NYWNQcm9jZXNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNkZBMzEwMTFFMzkyMUUwMERCMTM3MSAvKiBNYWlu
TWFjUHJvY2Vzcy5jcHAgKi87IH07CiAJCUUxRURGREE3MTYyODg2OTYwMDM5RUNEQSAvKiBTaGFy
ZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxRURGRDlCMTYyODdEMEIwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQ
cm9jZXNzTWFpbk1hYy5tbSAqLzsgfTsKIAkJRTFFREZEQTgxNjI4ODY5OTAwMzlFQ0RBIC8qIFNo
YXJlZFdvcmtlclByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMUVERkRBMjE2Mjg4MzhDMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJv
Y2Vzc01hYy5tbSAqLzsgfTsKQEAgLTIzNDQsNyArMjM0Myw2IEBACiAJCUUxQjc4NDcyMTYzRjI1
M0UwMDA3QjY5MiAvKiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUNDMUI4RTEyRDdFQURGMDA2MjU4MzggLyogUHJp
bnRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFByaW50SW5mby5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUNDMUI4RjEyRDdFQURGMDA2MjU4MzggLyog
UHJpbnRJbmZvTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
UHJpbnRJbmZvTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlFMUQyMjk2RTE2
NTJEQjlDMDBCQUE0QkQgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFjLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFjLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUVERkQ5ODE2Mjg3QkQxMDAzOUVDREEg
LyogU2hhcmVkV29ya2VyUHJvY2Vzc01haW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzc01haW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTFFREZEOUIxNjI4N0QwQjAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYWlu
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2hhcmVkV29y
a2VyUHJvY2Vzc01haW5NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRURG
RDlEMTYyODdGMTkwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb2Nlc3MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTM3MzMsNyArMzczMSw2IEBACiAJCQkJQkMxMTFBREYxMTJGNUJD
MjAwMzM3QkFCIC8qIFdlYkVycm9yc01hYy5tbSAqLywKIAkJCQk5MzkxRjI4MzEyMUIzOEY1MDBF
QkY3RTggLyogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oICovLAogCQkJCTkzOTFGMjg0MTIx
QjM4RjUwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tICovLAotCQkJCUUx
RDIyOTZFMTY1MkRCOUMwMEJBQTRCRCAvKiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXNNYWMubW0gKi8s
CiAJCQkJQkNDNDNBQzYxMjdCOTlERTAwMzE3RjE2IC8qIFdlYlBvcHVwTWVudU1hYy5tbSAqLywK
IAkJCQlCQ0M1NzE1OTExNUFEQUVGMDAxQ0NBRjkgLyogV2ViU3lzdGVtSW50ZXJmYWNlLmggKi8s
CiAJCQkJQkNDNTcxNUExMTVBREFFRjAwMUNDQUY5IC8qIFdlYlN5c3RlbUludGVyZmFjZS5tbSAq
LywKQEAgLTU5NzgsNyArNTk3NSw2IEBACiAJCQkJNTEyMTc0NjAxNjRDMjBFMzAwMzdBNUMxIC8q
IFNoYXJlYWJsZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxMjE3NDY0MTY0QzIx
MzcwMDM3QTVDMSAvKiBXZWJSZXNvdXJjZUJ1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
QUYxQUM2QjE2NTE3NTlFMDBDMTdEN0YgLyogUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0g
aW4gU291cmNlcyAqLywKLQkJCQlFMUQyMjk3MTE2NTJEQzUyMDBCQUE0QkQgLyogV2ViUGxhdGZv
cm1TdHJhdGVnaWVzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBM0Q3NUIxNjUxQjQ0RjAw
ODcxM0QwIC8qIFJlbW90ZUxheWVyVHJlZUhvc3QubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUEz
RDc2MTE2NTFCN0QzMDA4NzEzRDAgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdE1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUZEMThCNTE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0
d29ya1Jlc291cmNlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2
ICs1NSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTWVtb3J5U3RhdGlzdGljcy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpblByZWZsaWdodFJlc3Vs
dENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
b250Q2FjaGUuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJD
b29raWVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94
eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
Q29va2llU3RvcmFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvb2tpZUphci5oPgogCiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKQEAgLTU1LDcgKzU2LDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpn
ZXRIb3N0bmFtZXNXaXRoQwogewogICAgIEhhc2hTZXQ8U3RyaW5nPiBob3N0bmFtZXM7CiAKLSAg
ICBXZWJDb3JlOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcygwLCBob3N0bmFtZXMpOworICAgIFdl
YkNvcmU6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVm
YXVsdFN0b3JhZ2VTZXNzaW9uKCksIGhvc3RuYW1lcyk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBo
b3N0bmFtZUxpc3Q7CiAgICAgY29weVRvVmVjdG9yKGhvc3RuYW1lcywgaG9zdG5hbWVMaXN0KTsK
QEAgLTY1LDEyICs2NiwxMiBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhvc3RuYW1lc1dp
dGhDCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7Ci0gICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llc0Zvckhv
c3RuYW1lKDAsIGhvc3RuYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxldGVDb29raWVzRm9ySG9zdG5h
bWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgaG9zdG5h
bWUpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFsbENvb2tpZXMoKQogewot
ICAgIFdlYkNvcmU6OmRlbGV0ZUFsbENvb2tpZXMoMCk7CisgICAgV2ViQ29yZTo6ZGVsZXRlQWxs
Q29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpKTsK
IH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMo
KQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2Fk
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRz
L21hYy9Eb3dubG9hZE1hYy5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkRvd25sb2FkLmgi
CiAKKyNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbXBvcnQg
PFdlYkNvcmUvQXV0aGVudGljYXRpb25NYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVt
ZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzAzLDcgKzMwMyw4IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnN3aXRjaE5ldHdvcmtMb2Fk
ZXIKIHsKICNpZiAoUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKSkgJiYgIVBMQVRGT1JN
KFdJTikKICAgICAvLyBGSVhNRSAoTmV0d29ya1Byb2Nlc3MpOiBEbyB0aGlzIGluIG5ldHdvcmsg
cHJvY2VzcywgdG9vLgotICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN3aXRjaFRvTmV3
VGVzdGluZ1Nlc3Npb24oKTsKKyAgICBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSgpOworICAg
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOwogI2Vu
ZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNv
dXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKKyNp
bmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SZXNvdXJjZUxvYWRlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJldmlzaW9uIDEzODQwNykKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvQ29sb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0xvYWRlclN0cmF0ZWd5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Bs
YXRmb3JtQ29va2llSmFyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVBhc3RlYm9hcmQu
aD4KQEAgLTExMyw5MCArMTE0LDgzIEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpub3Rp
ZnlDb29raWUKICAgICBXZWJDb29raWVNYW5hZ2VyOjpzaGFyZWQoKS5kaXNwYXRjaENvb2tpZXNE
aWRDaGFuZ2UoKTsKIH0KIAotI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENGTkVUV09SSykKLVJl
dGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRl
ZmF1bHRDb29raWVTdG9yYWdlKCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLSNlbmRpZgotCi1TdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYg
dXJsKQogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6
OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIFN0cmluZyByZXN1bHQ7
Ci0gICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+
Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OkNvb2tpZXNGb3JET00oY29udGV4dCAmJiBjb250ZXh0LT5pblByaXZhdGVCcm93c2lu
Z01vZGUoKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShyZXN1bHQpLCAwKSkKKyAgICAgICAgaWYg
KCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCkt
PnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2ll
c0ZvckRPTShzZXNzaW9uLmlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCBmaXJzdFBhcnR5LCB1
cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JE
T006OlJlcGx5KHJlc3VsdCksIDApKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIFdlYkNvcmU6
OmNvb2tpZXNGb3JET00oY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2Vi
Q29yZTo6Y29va2llc0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lk
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0
Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2ll
U3RyaW5nKQogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nl
c3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9NKGNvbnRl
eHQgJiYgY29udGV4dC0+aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCksIGZpcnN0UGFydHksIHVybCwg
Y29va2llU3RyaW5nKSwgMCk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtD
b25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24uaXNQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKCksIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKSwgMCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAjZW5kaWYKIAotICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9N
KGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBXZWJDb3JlOjpz
ZXRDb29raWVzRnJvbURPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7
CiB9CiAKLWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRW5hYmxlZChOZXR3b3Jr
aW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYg
dXJsKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYgdXJsKQogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdl
YlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIGJvb2wg
cmVzdWx0OwotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0
aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZChjb250ZXh0ICYmIGNvbnRleHQtPmluUHJpdmF0
ZUJyb3dzaW5nTW9kZSgpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkOjpSZXBseShyZXN1bHQpLCAwKSkKKyAg
ICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25u
ZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Q29va2llc0VuYWJsZWQoc2Vzc2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgZmly
c3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpD
b29raWVzRW5hYmxlZDo6UmVwbHkocmVzdWx0KSwgMCkpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4g
V2ViQ29yZTo6Y29va2llc0VuYWJsZWQoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsK
IH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewogI2lmIEVO
QUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNO
ZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIFN0cmluZyByZXN1bHQ7Ci0gICAgICAgIGlmICgh
V2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5z
ZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnRleHQgJiYgY29udGV4dC0+aW5Qcml2YXRlQnJvd3Np
bmdNb2RlKCksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWU6OlJlcGx5KHJlc3VsdCks
IDApKQorICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9u
KCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLmlzUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbigpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBs
eShyZXN1bHQpLCAwKSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJl
dHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJz
dFBhcnR5LCB1cmwpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29v
a2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0
b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQog
ICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAg
ICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5l
Y3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpHZXRSYXdDb29raWVzKGNvbnRleHQgJiYgY29udGV4dC0+aW5Qcml2YXRlQnJvd3NpbmdNb2Rl
KCksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQorICAgICAgICBpZiAo
IVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+
c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdD
b29raWVzKHNlc3Npb24uaXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIGZpcnN0UGFydHksIHVy
bCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2ll
czo6UmVwbHkocmF3Q29va2llcyksIDApKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBXZWJDb3JlOjpn
ZXRSYXdDb29raWVzKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7CisgICAg
cmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBy
YXdDb29raWVzKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tp
ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGNvb2tpZU5hbWUpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2ll
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
ICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAg
ICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlv
bigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RGVsZXRl
Q29va2llKGNvbnRleHQgJiYgY29udGV4dC0+aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCksIHVybCwg
Y29va2llTmFtZSksIDApOworICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29u
bmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpEZWxldGVDb29raWUoc2Vzc2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Np
b24oKSwgdXJsLCBjb29raWVOYW1lKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5k
aWYKIAotICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShjb250ZXh0LCB1cmwsIGNvb2tpZU5hbWUp
OworICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1cmwsIGNvb2tpZU5hbWUpOwog
fQogCiAvLyBEYXRhYmFzZVN0cmF0ZWd5CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVn
aWVzLmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3
LDE1ICs1NywxMiBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5
CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkKCkgT1ZFUlJJREU7Ci0jaWYg
UExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQotICAgIHZpcnR1YWwgUmV0YWluUHRyPENG
SFRUUENvb2tpZVN0b3JhZ2VSZWY+IGRlZmF1bHRDb29raWVTdG9yYWdlKCkgT1ZFUlJJREU7Ci0j
ZW5kaWYKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKFdlYkNvcmU6Ok5ldHdvcmtp
bmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShX
ZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
V2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGdl
dFJhd0Nvb2tpZXMoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6
Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRD
b29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3Qg
U3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0
cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBX
ZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3Qg
U3RyaW5nJikgT1ZFUlJJREU7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CiAj
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTAgKzM0LDggQEAgcHVibGljOgogICAgIH0KIAogICAg
IHN0YXRpYyB2b2lkIHNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJh
c2UoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIHZvaWQgc3dpdGNoVG9OZXdUZXN0aW5nU2Vz
c2lvbigpOwogICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsK
ICAgICBzdGF0aWMgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwotICAgIHN0
YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogICAg
IHN0YXRpYyB2b2lkIHNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kpOwogCiBwcml2YXRlOgpAQCAtNDgsOCArNDYsNyBAQCBwcml2YXRlOgog
CiAgICAgdmlydHVhbCBib29sIG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkgY29uc3QgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBib29sIGxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoKSBj
b25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkg
Y29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3Jh
Z2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBXZWJDb3JlOjpTY2hlZHVsZVBhaXJIYXNoU2V0KiBzY2hlZHVsZWRSdW5Mb29wUGFpcnMo
KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxv
Y2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0IE9WRVJSSURF
OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFj
L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dC5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjEsNyArMjEsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0LmgiCiAKLSNpbXBvcnQgPFdlYkNvcmUvQ29va2llU3RvcmFnZUNG
TmV0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyQ2xpZW50Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgpAQCAtMzIs
OCArMzEsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1zdGF0aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lv
bjsKLXN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VT
ZXNzaW9uOworc3RhdGljIE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBwcml2YXRlQnJv
d3NpbmdTdG9yYWdlU2Vzc2lvbigpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChPd25QdHI8
TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiwgc2Vzc2lvbiwgKCkpOworICAgIHJldHVybiBzZXNzaW9u
OworfQogCiBib29sIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6Om5lZWRzU2l0ZVNwZWNpZmlj
UXVpcmtzKCkgY29uc3QKIHsKQEAgLTY3LDI2ICs2OSwxNyBAQCB2b2lkIFdlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQ6OnNldFByaXZhCiAgICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25J
ZGVudGlmaWVyQmFzZSgpID0gaWRlbnRpZmllcjsKIH0KIAotdm9pZCBXZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0Ojpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkKLXsKLSAgICAvLyBTZXQgYSBw
cml2YXRlIHNlc3Npb24gZm9yIHRlc3RpbmcgdG8gYXZvaWQgaW50ZXJmZXJpbmcgd2l0aCBnbG9i
YWwgY29va2llcy4gVGhpcyBzaG91bGQgYmUgZGlmZmVyZW50IGZyb20gcHJpdmF0ZSBicm93c2lu
ZyBzZXNzaW9uLgotICAgIGlmIChkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbikKLSAgICAgICAgQ0ZS
ZWxlYXNlKGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uKTsKLSAgICBkZWZhdWx0Q0ZTdG9yYWdlU2Vz
c2lvbiA9IFdLQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU1RSKCJQcml2YXRlIFdlYktp
dCBTZXNzaW9uIikpOwotfQotCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewogICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vz
cyk6IERvbid0IGNyZWF0ZSBhbiB1bm5lY2Vzc2FyeSBzZXNzaW9uIHdoZW4gdXNpbmcgbmV0d29y
ayBwcm9jZXNzLgogCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAocHJpdmF0
ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pCisgICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VT
ZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBiYXNlID0gcHJpdmF0ZUJy
b3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpID8gU3RyaW5nKFtb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0pIDogcHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gY2ZJZGVudGlmaWVyID0gU3RyaW5nKGJhc2UgKyAiLlByaXZhdGVCcm93c2luZyIpLmNyZWF0
ZUNGU3RyaW5nKCk7CisgICAgU3RyaW5nIGlkZW50aWZpZXJCYXNlID0gcHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpID8gU3RyaW5nKFtbTlNCdW5k
bGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0pIDogcHJpdmF0ZUJyb3dzaW5nU3RvcmFn
ZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpOwogCi0gICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNl
c3Npb24gPSBXS0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCkp
OworICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkgPSBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oaWRlbnRpZmllckJhc2UpOwogfQog
CiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKCkKQEAgLTk0LDM5ICs4NywyOCBAQCB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ6OmRlc3Ryb3lQCiAgICAgaWYgKCFwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgQ0ZSZWxlYXNlKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNz
aW9uKTsKLSAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbiA9IDA7Ci19Ci0KLUNGVVJM
U3RvcmFnZVNlc3Npb25SZWYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVmYXVsdFN0b3Jh
Z2VTZXNzaW9uKCkKLXsKLSAgICByZXR1cm4gZGVmYXVsdENGU3RvcmFnZVNlc3Npb247Ci19Ci0K
LWJvb2wgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpICYmIGZy
YW1lKCktPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBwcml2YXRl
QnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpID0gbnVsbHB0cjsKIH0KIAotQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0
CitOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3Jh
Z2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICBpZiAoaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkpIHsK
LSAgICAgICAgQVNTRVJUKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKTsKLSAgICAgICAg
cmV0dXJuIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uOworICAgIGJvb2wgaW5Qcml2YXRl
QnJvd3NpbmdNb2RlID0gZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpICYmIGZyYW1lKCkt
PnNldHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBpZiAoaW5Qcml2YXRl
QnJvd3NpbmdNb2RlKSB7CisgICAgICAgIEFTU0VSVChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vz
c2lvbigpKTsKKyAgICAgICAgcmV0dXJuICpwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigp
OwogICAgIH0KLSAgICByZXR1cm4gZGVmYXVsdENGU3RvcmFnZVNlc3Npb247CisgICAgcmV0dXJu
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKIHZv
aWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yQWxs
Q29udGV4dHMoSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCiB7CiAgICAgW1tOU0hUVFBD
b29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXSBzZXRDb29raWVBY2NlcHRQb2xp
Y3k6c3RhdGljX2Nhc3Q8TlNIVFRQQ29va2llQWNjZXB0UG9saWN5Pihwb2xpY3kpXTsKIAotICAg
IGlmIChSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGRl
ZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCkpCisgICAgaWYgKFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZh
dWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCkpCiAgICAgICAgIFdLU2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBwb2xpY3kpOwogCi0gICAgaWYg
KHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRkhU
VFBDb29raWVTdG9yYWdlUmVmPiBwcml2YXRlQnJvd3NpbmdDb29raWVTdG9yYWdlID0gYWRvcHRD
RihXS0NvcHlIVFRQQ29va2llU3RvcmFnZShwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbikp
OwotICAgICAgICBXS1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocHJpdmF0ZUJyb3dzaW5nQ29v
a2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKKyAgICBpZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFn
ZVNlc3Npb24oKSkgeworICAgICAgICBXS1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocHJpdmF0
ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKS0+Y29va2llU3RvcmFnZSgpLmdldCgpLCBwb2xpY3kp
OwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlBsYXRmb3JtU3RyYXRl
Z2llc01hYy5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFjLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCi0KLSNpbmNsdWRlICJXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+
Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotUmV0
YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVm
YXVsdENvb2tpZVN0b3JhZ2UoKQotewotICAgIGlmIChDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHNl
c3Npb24gPSBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZWZhdWx0U3RvcmFnZVNlc3Npb24o
KSkKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoV0tDb3B5SFRUUENvb2tpZVN0b3JhZ2Uoc2Vzc2lv
bikpOwotCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICByZXR1cm4gV0tHZXREZWZhdWx0SFRUUENv
b2tpZVN0b3JhZ2UoKTsKLSNlbHNlCi0gICAgLy8gV2hlbiB1c2luZyBOU1VSTENvbm5lY3Rpb24s
IHdlIGFsc28gdXNlIGl0cyBzaGFyZWQgY29va2llIHN0b3JhZ2UuCi0gICAgcmV0dXJuIDA7Ci0j
ZW5kaWYKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDEzODQwNykKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0pTRWxlbWVudC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvSlNSYW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWFpblJlc291
cmNlTG9hZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JraW5nQ29udGV4dC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTm9kZVRyYXZlcnNhbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRG9jdW1lbnQuaD4KQEAgLTI0OCw3ICsyNDksNyBA
QCB2b2lkIFdlYkZyYW1lOjpzdGFydERvd25sb2FkKGNvbnN0IFdlYkNvCiAKICNpZiBFTkFCTEUo
TkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29y
a1Byb2Nlc3MoKSkgewotICAgICAgICBib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBtX2Nv
cmVGcmFtZS0+bG9hZGVyKCktPm5ldHdvcmtpbmdDb250ZXh0KCktPmluUHJpdmF0ZUJyb3dzaW5n
TW9kZSgpOworICAgICAgICBib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBtX2NvcmVGcmFt
ZS0+bG9hZGVyKCktPm5ldHdvcmtpbmdDb250ZXh0KCktPnN0b3JhZ2VTZXNzaW9uKCkuaXNQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKCk7CiAgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdv
cmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OlN0YXJ0RG93bmxvYWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwg
cG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2Vi
UGFnZU1hYy5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3
IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KICNpbXBvcnQgPFdlYkNvcmUv
SFRNTENvbnZlcnRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CisjaW1w
b3J0IDxXZWJDb3JlL05ldHdvcmtpbmdDb250ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2Uu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CkBAIC02NzgsNyArNjc5LDcgQEAgYm9vbCBXZWJQYWdl
OjpwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVSTAogICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QqIHJl
cXVlc3QgPSBbW05TTXV0YWJsZVVSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJMOnVybF07CiAg
ICAgW3JlcXVlc3Qgc2V0VmFsdWU6KE5TU3RyaW5nKil1c2VyQWdlbnQoKSBmb3JIVFRQSGVhZGVy
RmllbGQ6QCJVc2VyLUFnZW50Il07CiAgICAgTlNDYWNoZWRVUkxSZXNwb25zZSAqY2FjaGVkUmVz
cG9uc2U7Ci0gICAgaWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24gPSBj
b3JlUGFnZSgpLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPm5ldHdvcmtpbmdDb250ZXh0KCktPnN0
b3JhZ2VTZXNzaW9uKCkpCisgICAgaWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNl
c3Npb24gPSBjb3JlUGFnZSgpLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPm5ldHdvcmtpbmdDb250
ZXh0KCktPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCkpCiAgICAgICAgIGNhY2hl
ZFJlc3BvbnNlID0gV0tDYWNoZWRSZXNwb25zZUZvclJlcXVlc3Qoc3RvcmFnZVNlc3Npb24sIHJl
cXVlc3QpOwogICAgIGVsc2UKICAgICAgICAgY2FjaGVkUmVzcG9uc2UgPSBbW05TVVJMQ2FjaGUg
c2hhcmVkVVJMQ2FjaGVdIGNhY2hlZFJlc3BvbnNlRm9yUmVxdWVzdDpyZXF1ZXN0XTsKQEAgLTY5
Miw3ICs2OTMsNyBAQCBzdGF0aWMgTlNDYWNoZWRVUkxSZXNwb25zZSAqY2FjaGVkUmVzcG9uCiAg
ICAgUmV0YWluUHRyPE5TTXV0YWJsZVVSTFJlcXVlc3Q+IHJlcXVlc3QoQWRvcHROUywgW1tOU011
dGFibGVVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDp1cmxdKTsKICAgICBbcmVxdWVzdC5n
ZXQoKSBzZXRWYWx1ZTooTlNTdHJpbmcgKil3ZWJQYWdlLT51c2VyQWdlbnQoKSBmb3JIVFRQSGVh
ZGVyRmllbGQ6QCJVc2VyLUFnZW50Il07CiAKLSAgICBpZiAoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJl
ZiBzdG9yYWdlU2Vzc2lvbiA9IHdlYlBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLT5sb2Fk
ZXIoKS0+bmV0d29ya2luZ0NvbnRleHQoKS0+c3RvcmFnZVNlc3Npb24oKSkKKyAgICBpZiAoQ0ZV
UkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbiA9IHdlYlBhZ2UtPmNvcmVQYWdlKCkt
Pm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+bmV0d29ya2luZ0NvbnRleHQoKS0+c3RvcmFnZVNlc3Np
b24oKS5wbGF0Zm9ybVNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuIFdLQ2FjaGVkUmVzcG9uc2VG
b3JSZXF1ZXN0KHN0b3JhZ2VTZXNzaW9uLCByZXF1ZXN0LmdldCgpKTsKIAogICAgIHJldHVybiBb
W05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIGNhY2hlZFJlc3BvbnNlRm9yUmVxdWVzdDpyZXF1
ZXN0LmdldCgpXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRm
b3JtU3RyYXRlZ2llc0VmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2Vi
Q29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcAkocmV2aXNpb24gMTM4NDA3KQor
KysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsMzQgKzg2LDM0IEBAIHZvaWQgUGxhdGZvcm1TdHJh
dGVnaWVzRWZsOjpub3RpZnlDb29raWUKIHsKIH0KIAotU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2ll
c0VmbDo6Y29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2ll
c0VmbDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4g
V2ViQ29yZTo6Y29va2llc0ZvckRPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJl
dHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9
CiAKLXZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpzZXRDb29raWVzRnJvbURPTShOZXR3b3Jr
aW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVz
RWZsOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBjb29raWVTdHJpbmcpCiB7Ci0gICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oY29udGV4
dCwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNldENvb2tp
ZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAot
Ym9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiti
b29sIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKGNvbnRleHQsIGZp
cnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHNlc3Np
b24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6
OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgUGxhdGZv
cm1TdHJhdGVnaWVzRWZsOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsK
IH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmdldFJhd0Nvb2tpZXMoTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVy
bCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc0Vm
bDo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJh
d0Nvb2tpZXMpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoY29udGV4dCwg
Zmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3
Q29va2llcyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12b2lk
IFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6ZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQg
UGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFt
ZSkKIHsKLSAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoY29udGV4dCwgdXJsLCBjb29raWVOYW1l
KTsKKyAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsK
IH0KIAogdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OnJlZnJlc2hQbHVnaW5zKCkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3Jt
U3RyYXRlZ2llc0VmbC5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaAkod29ya2luZyBjb3B5KQpAQCAt
NDcsMTIgKzQ3LDEyIEBAIHByaXZhdGU6CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRl
Z3kKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQoKTsKLSAgICB2aXJ0dWFs
IFN0cmluZyBjb29raWVzRm9yRE9NKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCos
IGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBj
b25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoV2ViQ29yZTo6
TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBib29s
IGdldFJhd0Nvb2tpZXMoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6Ok5ldHdv
cmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAg
IHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBi
b29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsK
KyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nv
b2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3Ry
aW5nJik7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CiAgICAgLy8gLSBVc2lu
ZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwCShyZXZp
c2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9y
bVN0cmF0ZWdpZXNHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCwzNCArODAsMzQgQEAgdm9p
ZCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6Om5vdGlmeUNvb2tpZQogewogfQogCi1TdHJpbmcgUGxh
dGZvcm1TdHJhdGVnaWVzR3RrOjpjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgUGxh
dGZvcm1TdHJhdGVnaWVzR3RrOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQog
ewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKGNvbnRleHQsIGZpcnN0UGFydHks
IHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQ
YXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OnNldENvb2tpZXNG
cm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBQbGF0
Zm9ybVN0cmF0ZWdpZXNHdGs6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKLSAgICBXZWJDb3JlOjpzZXRDb29raWVz
RnJvbURPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CisgICAgV2Vi
Q29yZTo6c2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVT
dHJpbmcpOwogfQogCi1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y29va2llc0VuYWJsZWQo
TmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmIHVybCkKK2Jvb2wgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjb29raWVzRW5hYmxlZChj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJs
ZWQoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2ll
c0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotU3RyaW5nIFBsYXRmb3Jt
U3RyYXRlZ2llc0d0azo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkK
K1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJl
dHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJz
dFBhcnR5LCB1cmwpOwogfQogCi1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Z2V0UmF3Q29v
a2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgUGxhdGZv
cm1TdHJhdGVnaWVzR3RrOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0
b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29v
a2llcyhjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOworICAgIHJldHVybiBX
ZWJDb3JlOjpnZXRSYXdDb29raWVzKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2ll
cyk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpkZWxldGVDb29raWUoTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29r
aWVOYW1lKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmRlbGV0ZUNvb2tpZShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBjb29raWVOYW1lKQogewotICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShjb250ZXh0LCB1
cmwsIGNvb2tpZU5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1cmws
IGNvb2tpZU5hbWUpOwogfQogCiAvLyBQbHVnaW5TdHJhdGVneQpJbmRleDogU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3Rr
LmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMiArNDYsMTIg
QEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneQogICAgIHZpcnR1
YWwgdm9pZCBub3RpZnlDb29raWVzQ2hhbmdlZCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tp
ZXNGb3JET00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dENvb2tpZXNGcm9tRE9NKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYp
OwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChXZWJDb3JlOjpOZXR3b3JraW5nQ29u
dGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktV
UkwmKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShX
ZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2ll
cyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwot
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBTdHJp
bmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Cisg
ICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29va2llc0Vu
YWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwg
U3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKIAogICAg
IC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kKICAgICAvLyAtIFVzaW5nIGRlZmF1bHQgaW1w
bGVtZW50YXRpb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24gMTM4NDA3KQorKysg
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0J
KHdvcmtpbmcgY29weSkKQEAgLTEwOCw2ICsxMDgsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9Nb3Vz
ZUV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGx1
Z2luVmlld0Jhc2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUHJvdGVjdGlvblNwYWNlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VI
YW5kbGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjcsMTMgKzI3LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQoZnJhbWUpKTsKICAgICB9CiAKLSAgICBzdGF0aWMg
dm9pZCBzZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKGNvbnN0
IFN0cmluZyYpOwotICAgIHN0YXRpYyB2b2lkIHN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsK
ICAgICBzdGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CiAgICAgc3Rh
dGljIHZvaWQgZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKLSAgICBzdGF0aWMgQ0ZV
UkxTdG9yYWdlU2Vzc2lvblJlZiBkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKLQotICAgIHN0YXRp
YyB2b2lkIHNldENvb2tpZUFjY2VwdFBvbGljeUZvclRlc3RpbmdDb250ZXh0KE5TSFRUUENvb2tp
ZUFjY2VwdFBvbGljeSk7CiAKIHByaXZhdGU6CiAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dChXZWJDb3JlOjpGcmFtZSogZnJhbWUpCkBAIC00Myw4ICszOCw3IEBAIHByaXZhdGU6CiAKICAg
ICB2aXJ0dWFsIGJvb2wgbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSBjb25zdCBPVkVSUklERTsK
ICAgICB2aXJ0dWFsIGJvb2wgbG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZCgpIGNvbnN0
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBpblByaXZhdGVCcm93c2luZ01vZGUoKSBjb25z
dCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNl
c3Npb24oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFs
IFdlYkNvcmU6OlNjaGVkdWxlUGFpckhhc2hTZXQqIHNjaGVkdWxlZFJ1bkxvb3BQYWlycygpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2Vk
RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgT1ZFUlJJREU7CiB9
OwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBT
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAjaW1wb3J0ICJXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0LmgiCiAKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXJDbGllbnQu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2ltcG9y
dCA8V2ViQ29yZS9TZXR0aW5ncy5oPgpAQCAtMjgsOCArMjksMTEgQEAKIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKLXN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGRlZmF1bHRDRlN0
b3JhZ2VTZXNzaW9uOwotc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgcHJpdmF0ZUJyb3dz
aW5nU3RvcmFnZVNlc3Npb247CitzdGF0aWMgT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4m
IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+LCBzZXNzaW9uLCAoKSk7CisgICAgcmV0
dXJuIHNlc3Npb247Cit9CiAKIGJvb2wgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6bmVlZHNT
aXRlU3BlY2lmaWNRdWlya3MoKSBjb25zdAogewpAQCAtNTEsNjkgKzU1LDI3IEBAIFJlc291cmNl
RXJyb3IgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDoKICAgICByZXR1cm4gZnJhbWUoKS0+bG9h
ZGVyKCktPmNsaWVudCgpLT5ibG9ja2VkRXJyb3IocmVxdWVzdCk7CiB9CiAKLXN0YXRpYyBTdHJp
bmcmIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKQotewotICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcs
IGJhc2UsICgpKTsKLSAgICByZXR1cm4gYmFzZTsKLX0KLQotdm9pZCBXZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0OjpzZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNl
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKLXsKLSAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdl
U2Vzc2lvbklkZW50aWZpZXJCYXNlKCkgPSBpZGVudGlmaWVyOwotfQotCi12b2lkIFdlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKQotewotICAgIC8v
IFNldCBhIHByaXZhdGUgc2Vzc2lvbiBmb3IgdGVzdGluZyB0byBhdm9pZCBpbnRlcmZlcmluZyB3
aXRoIGdsb2JhbCBjb29raWVzLiBUaGlzIHNob3VsZCBiZSBkaWZmZXJlbnQgZnJvbSBwcml2YXRl
IGJyb3dzaW5nIHNlc3Npb24uCi0gICAgaWYgKGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uKQotICAg
ICAgICBDRlJlbGVhc2UoZGVmYXVsdENGU3RvcmFnZVNlc3Npb24pOwotICAgIGRlZmF1bHRDRlN0
b3JhZ2VTZXNzaW9uID0gV0tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTVFIoIlByaXZh
dGUgV2ViS2l0IFNlc3Npb24iKSk7Ci19Ci0KIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pCisgICAgaWYg
KHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFN0cmluZyBiYXNlID0gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFz
ZSgpLmlzTnVsbCgpID8gU3RyaW5nKFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRp
Zmllcl0pIDogcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpOwot
ICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVudGlmaWVyID0gU3RyaW5nKGJhc2UgKyAi
LlByaXZhdGVCcm93c2luZyIpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0KLSAgICBwcml2YXRlQnJvd3Np
bmdTdG9yYWdlU2Vzc2lvbiA9IFdLQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKGNmSWRlbnRp
Zmllci5nZXQoKSk7CisgICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSA9IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihbW05TQnVuZGxl
IG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKIH0KIAogdm9pZCBXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7Ci0gICAgaWYg
KCFwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Q0ZSZWxlYXNlKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKTsKLSAgICBwcml2YXRlQnJv
d3NpbmdTdG9yYWdlU2Vzc2lvbiA9IDA7Ci19Ci0KLUNGVVJMU3RvcmFnZVNlc3Npb25SZWYgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkKLXsKLSAgICBy
ZXR1cm4gZGVmYXVsdENGU3RvcmFnZVNlc3Npb247CisgICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFn
ZVNlc3Npb24oKSA9IG51bGxwdHI7CiB9CiAKLWJvb2wgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dDo6aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAg
IHJldHVybiBmcmFtZSgpICYmIGZyYW1lKCktPnNldHRpbmdzKCkgJiYgZnJhbWUoKS0+c2V0dGlu
Z3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwotfQotCi1DRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKLXsK
LSAgICBpZiAoaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkpIHsKLSAgICAgICAgQVNTRVJUKHByaXZh
dGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKTsKLSAgICAgICAgcmV0dXJuIHByaXZhdGVCcm93c2lu
Z1N0b3JhZ2VTZXNzaW9uOworICAgIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlID0gZnJhbWUo
KSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpICYmIGZyYW1lKCktPnNldHRpbmdzKCktPnByaXZhdGVC
cm93c2luZ0VuYWJsZWQoKTsKKyAgICBpZiAoaW5Qcml2YXRlQnJvd3NpbmdNb2RlKSB7CisgICAg
ICAgIEFTU0VSVChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpKTsKKyAgICAgICAgcmV0
dXJuICpwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpOwogICAgIH0KLSAgICByZXR1cm4g
ZGVmYXVsdENGU3RvcmFnZVNlc3Npb247CisgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKLXZvaWQgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yVGVzdGluZ0NvbnRleHQoTlNIVFRQQ29v
a2llQWNjZXB0UG9saWN5IHBvbGljeSkKLXsKLSAgICBBU1NFUlQoZGVmYXVsdENGU3RvcmFnZVNl
c3Npb24pOwotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBkZWZhdWx0Q29v
a2llU3RvcmFnZSA9IGFkb3B0Q0YoV0tDb3B5SFRUUENvb2tpZVN0b3JhZ2UoZGVmYXVsdENGU3Rv
cmFnZVNlc3Npb24pKTsKLSAgICBXS1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3koZGVmYXVsdENv
b2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7Ci19CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAkocmV2
aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDEzICs1MywxMiBAQCBwcml2
YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lk
IG5vdGlmeUNvb2tpZXNDaGFuZ2VkKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBSZXRhaW5QdHI8
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gZGVmYXVsdENvb2tpZVN0b3JhZ2UoKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250
ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VS
TCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShXZWJDb3Jl
OjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IGJvb2wgY29va2llc0VuYWJsZWQoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoV2ViQ29y
ZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGdldFJhd0Nv
b2tpZXMoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
KSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6Ok5ldHdv
cmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVz
RnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5n
JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5n
JikgT1ZFUlJJREU7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CiAgICAgLy8g
LSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgpJbmRleDogU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQko
cmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw0NyArODcsMzQgQEAg
dm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Om5vdGlmeUNvb2tpZQogewogfQogCi1SZXRhaW5Q
dHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWZhdWx0
Q29va2llU3RvcmFnZSgpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9y
RE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIGlmIChDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmIHNlc3Npb24gPSBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoV0tDb3B5SFRUUENvb2tpZVN0b3JhZ2Uo
c2Vzc2lvbikpOwotCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICByZXR1cm4gV0tHZXREZWZhdWx0
SFRUUENvb2tpZVN0b3JhZ2UoKTsKLSNlbHNlCi0gICAgLy8gV2hlbiB1c2luZyBOU1VSTENvbm5l
Y3Rpb24sIHdlIGFsc28gdXNlIGl0cyBzaGFyZWQgY29va2llIHN0b3JhZ2UuCi0gICAgcmV0dXJu
IDA7Ci0jZW5kaWYKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0Zv
ckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsKQotewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKGNv
bnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JE
T00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2ll
U3RyaW5nKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKLSAgICBX
ZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tp
ZVN0cmluZyk7CisgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbiwgZmlyc3RQ
YXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwm
IGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6Y29va2llc0VuYWJsZWQoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1
cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0K
IAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHks
IGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVy
biBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb250ZXh0LCBmaXJzdFBh
cnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Z2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3Qg
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29v
a2llcykKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKLSAgICByZXR1cm4g
V2ViQ29yZTo6Z2V0UmF3Q29va2llcyhjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tp
ZXMpOworICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHNlc3Npb24sIGZpcnN0UGFy
dHksIHVybCwgcmF3Q29va2llcyk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpk
ZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRl
bGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIFdlYkNvcmU6OmRlbGV0
ZUNvb2tpZShjb250ZXh0LCB1cmwsIGNvb2tpZU5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0ZUNv
b2tpZShzZXNzaW9uLCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCiB2b2lkIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6cmVmcmVzaFBsdWdpbnMoKQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0
MCw3IEBACiAjaW1wb3J0ICJXZWJOU0RpY3Rpb25hcnlFeHRyYXMuaCIKICNpbXBvcnQgIldlYk5T
VVJMRXh0cmFzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+
Ci0jaW1wb3J0IDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2VDRk5ldC5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5k
bGUuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtMTI4NiwxMiArMTI4NiwxMyBA
QCArICh2b2lkKV9zZXRJQkNyZWF0b3JJRDooTlNTdHJpbmcgKilzdHJpCiAKICsgKHZvaWQpX3N3
aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uCiB7Ci0gICAgV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOworICAgIEluaXRXZWJD
b3JlU3lzdGVtSW50ZXJmYWNlKCkKKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRv
TmV3VGVzdGluZ1Nlc3Npb24oKTsKIH0KIAogKyAodm9pZClfc2V0Q3VycmVudE5ldHdvcmtMb2Fk
ZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpcG9s
aWN5CiB7Ci0gICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9s
aWN5Rm9yVGVzdGluZ0NvbnRleHQocG9saWN5KTsKKyAgICBXS1NldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3koTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29r
aWVTdG9yYWdlKCkuZ2V0KCksIHBvbGljeSk7CiB9CiAKIC0gKEJPT0wpaXNET01QYXN0ZUFsbG93
ZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDEzODQw
NykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjAxNiw3ICsyMDE2LDcgQEAgLSAoTlNDYWNoZWRVUkxSZXNwb25zZSAqKV9jYWNoZWRS
ZXNwb25zZQogICAgIGlmICghX3ByaXZhdGUtPnBhZ2UpCiAgICAgICAgIHJldHVybiBuaWw7CiAK
LSAgICBpZiAoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbiA9IF9wcml2YXRl
LT5wYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPm5ldHdvcmtpbmdDb250ZXh0KCktPnN0b3Jh
Z2VTZXNzaW9uKCkpCisgICAgaWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Np
b24gPSBfcHJpdmF0ZS0+cGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5uZXR3b3JraW5nQ29u
dGV4dCgpLT5zdG9yYWdlU2Vzc2lvbigpLnBsYXRmb3JtU2Vzc2lvbigpKQogICAgICAgICBjYWNo
ZWRSZXNwb25zZSA9IFdLQ2FjaGVkUmVzcG9uc2VGb3JSZXF1ZXN0KHN0b3JhZ2VTZXNzaW9uLCBy
ZXF1ZXN0LmdldCgpKTsKICAgICBlbHNlCiAgICAgICAgIGNhY2hlZFJlc3BvbnNlID0gW1tOU1VS
TENhY2hlIHNoYXJlZFVSTENhY2hlXSBjYWNoZWRSZXNwb25zZUZvclJlcXVlc3Q6cmVxdWVzdC5n
ZXQoKV07CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3Ry
YXRlZ2llc1F0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTk5LDM0ICs5OSwzNCBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpu
b3RpZnlDb29raWVzCiB7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29va2ll
c0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb29raWVz
Rm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29r
aWVzRm9yRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6
OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBQbGF0
Zm9ybVN0cmF0ZWdpZXNRdDo6c2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBjb29raWVTdHJpbmcpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpzZXRDb29raWVz
RnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwm
IGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcp
CiB7Ci0gICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oY29udGV4dCwgZmlyc3RQYXJ0eSwg
dXJsLCBjb29raWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Np
b24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0
cmF0ZWdpZXNRdDo6Y29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgUGxhdGZvcm1TdHJh
dGVnaWVzUXQ6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJl
dHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOwor
ICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzZXNzaW9uLCBmaXJzdFBhcnR5LCB1
cmwpOwogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAg
IHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb250ZXh0LCBm
aXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1ib29sIFBsYXRmb3Jt
U3RyYXRlZ2llc1F0OjpnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiBy
YXdDb29raWVzKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Z2V0UmF3Q29va2llcyhjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHks
IGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7Ci0gICAgcmV0
dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCByYXdD
b29raWVzKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBmaXJz
dFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1F0
OjpkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6
ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0gICAgV2ViQ29yZTo6ZGVs
ZXRlQ29va2llKGNvbnRleHQsIHVybCwgY29va2llTmFtZSk7CisgICAgV2ViQ29yZTo6ZGVsZXRl
Q29va2llKHNlc3Npb24sIHVybCwgY29va2llTmFtZSk7CiB9CiAKIHZvaWQgUGxhdGZvcm1TdHJh
dGVnaWVzUXQ6OnJlZnJlc2hQbHVnaW5zKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmgJKHJldmlzaW9uIDEz
ODQwNykKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVn
aWVzUXQuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsMTIgKzU4LDEyIEBAIHByaXZhdGU6CiAgICAg
CiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIG5vdGlm
eUNvb2tpZXNDaGFuZ2VkKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShXZWJD
b3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21E
T00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVh
bCBib29sIGNvb2tpZXNFbmFibGVkKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZp
cnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFdlYkNvcmU6Ok5ldHdv
cmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKFdlYkNvcmU6Ok5l
dHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdmlydHVhbCB2
b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9y
RE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYs
IGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VS
TCYpOworICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gV2ViQ29yZTo6
RGF0YWJhc2VTdHJhdGVneQogICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvb2tpZU1hbmFnZXJDRk5ldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29va2llTWFuYWdlckNGTmV0LmNwcAkocmV2
aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29va2llTWFuYWdlckNGTmV0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIldlYkNvb2tp
ZU1hbmFnZXIuaCIKIAogI2luY2x1ZGUgPENGTmV0d29yay9DRkhUVFBDb29raWVzUHJpdi5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvQ29va2llU3RvcmFnZUNGTmV0Lmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDcgKzE1NCw2IEBACiAj
aWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDYWNoZVByaXYuaD4K
ICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxQcm90b2NvbFByaXYuaD4KLSNpbmNsdWRlIDxXZWJD
b3JlL0Nvb2tpZVN0b3JhZ2VDRk5ldC5oPgogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFj
ZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4gCiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMyw3ICsyMyw2IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpZiBV
U0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUgPENGTmV0d29yay9DRkhUVFBDb29raWVzUHJpdi5oPgot
I2luY2x1ZGUgPFdlYkNvcmUvQ29va2llU3RvcmFnZUNGTmV0Lmg+CiAjZW5kaWYKICNpbmNsdWRl
IDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaWYgVVNFKENGTkVUV09SSykKQEAgLTMzLDggKzMyLDEx
IEBACiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogI2lmIFVTRShDRk5FVFdPUkspCi1zdGF0
aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbjsKLXN0YXRp
YyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uOwor
c3RhdGljIE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBwcml2YXRlQnJvd3NpbmdTdG9y
YWdlU2Vzc2lvbigpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChPd25QdHI8TmV0d29ya1N0
b3JhZ2VTZXNzaW9uPiwgc2Vzc2lvbiwgKCkpOworICAgIHJldHVybiBzZXNzaW9uOworfQogI2Vu
ZGlmCiAKIFBhc3NSZWZQdHI8V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dD4gV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dDo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdl
bnQpCkBAIC02OSw3NSArNzEsNDMgQEAgdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpz
ZXRQcml2YQogICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2Uo
KSA9IGlkZW50aWZpZXI7CiB9CiAKLXZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3dp
dGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpCi17Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICAvLyBT
ZXQgYSBwcml2YXRlIHNlc3Npb24gZm9yIHRlc3RpbmcgdG8gYXZvaWQgaW50ZXJmZXJpbmcgd2l0
aCBnbG9iYWwgY29va2llcy4gVGhpcyBzaG91bGQgYmUgZGlmZmVyZW50IGZyb20gcHJpdmF0ZSBi
cm93c2luZyBzZXNzaW9uLgotICAgIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uID0gd2tDcmVhdGVQ
cml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTVFIoIlByaXZhdGUgV2ViS2l0IFNlc3Npb24iKSwgZGVm
YXVsdENGU3RvcmFnZVNlc3Npb24pOwotI2VuZGlmCi19Ci0KIHZvaWQgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIGlmIChwcml2YXRlQnJv
d3NpbmdTdG9yYWdlU2Vzc2lvbikKKyAgICBpZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGJhc2UgPSBwcml2YXRlQnJvd3Np
bmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkuaXNOdWxsKCkgPyBTdHJpbmcocmVpbnRl
cnByZXRfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZCdW5kbGVHZXRWYWx1ZUZvckluZm9EaWN0aW9uYXJ5
S2V5KENGQnVuZGxlR2V0TWFpbkJ1bmRsZSgpLCBrQ0ZCdW5kbGVJZGVudGlmaWVyS2V5KSkpIDog
cHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpOwotICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVudGlmaWVyID0gU3RyaW5nKGJhc2UgKyAiLlByaXZhdGVC
cm93c2luZyIpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgU3RyaW5nIGlkZW50aWZpZXJCYXNlID0g
cHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpID8g
U3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQnVuZGxlR2V0VmFsdWVGb3JJ
bmZvRGljdGlvbmFyeUtleShDRkJ1bmRsZUdldE1haW5CdW5kbGUoKSwga0NGQnVuZGxlSWRlbnRp
ZmllcktleSkpKSA6IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2Uo
KTsKIAotICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uID0gd2tDcmVhdGVQcml2YXRl
U3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpLCBkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lv
bik7CisgICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSA9IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihpZGVudGlmaWVyQmFzZSk7CiAj
ZW5kaWYKIH0KIAogdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbigpCiB7CiAjaWYgVVNFKENGTkVUV09SSykKLSAgICBpZiAoIXByaXZh
dGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDRlJlbGVh
c2UocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pOwotICAgIHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uID0gMDsKKyAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpID0g
bnVsbHB0cjsKICNlbmRpZgogfQogCiAjaWYgVVNFKENGTkVUV09SSykKLUNGVVJMU3RvcmFnZVNl
c3Npb25SZWYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCkKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3Rv
cmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIHJldHVybiBkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lv
bjsKLX0KLQotYm9vbCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjppblByaXZhdGVCcm93c2lu
Z01vZGUoKSBjb25zdAotewotICAgIHJldHVybiBmcmFtZSgpICYmIGZyYW1lKCktPnNldHRpbmdz
KCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwotfQot
Ci1DRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3Jh
Z2VTZXNzaW9uKCkgY29uc3QKLXsKLSAgICBib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBp
blByaXZhdGVCcm93c2luZ01vZGUoKTsKLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkg
ewotICAgICAgICBBU1NFUlQocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pOwotICAgICAg
ICByZXR1cm4gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb247CisgICAgYm9vbCBpblByaXZh
dGVCcm93c2luZ01vZGUgPSBmcmFtZSgpICYmIGZyYW1lKCktPnNldHRpbmdzKCkgJiYgZnJhbWUo
KS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIGlmIChpblByaXZh
dGVCcm93c2luZ01vZGUpIHsKKyAgICAgICAgQVNTRVJUKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VT
ZXNzaW9uKCkpOworICAgICAgICByZXR1cm4gKnByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9u
KCk7CiAgICAgfQotICAgIHJldHVybiBkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbjsKLX0KLQotdm9p
ZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JUZXN0
aW5nQ29udGV4dChDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5IHBvbGljeSkKLXsKLSAg
ICBBU1NFUlQoZGVmYXVsdENGU3RvcmFnZVNlc3Npb24pOwotICAgIFJldGFpblB0cjxDRkhUVFBD
b29raWVTdG9yYWdlUmVmPiBkZWZhdWx0Q29va2llU3RvcmFnZSA9IGFkb3B0Q0Yod2tDb3B5SFRU
UENvb2tpZVN0b3JhZ2UoZGVmYXVsdENGU3RvcmFnZVNlc3Npb24pKTsKLSAgICBDRkhUVFBDb29r
aWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGRlZmF1bHRDb29raWVTdG9yYWdlLmdldCgp
LCBwb2xpY3kpOworICAgIHJldHVybiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9y
YWdlU2Vzc2lvbigpOwogfQogCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENv
b2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQ
b2xpY3kgcG9saWN5KQogewotICAgIGlmIChSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJl
Zj4gY29va2llU3RvcmFnZSA9IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCkpCisgICAgaWYg
KFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCkp
CiAgICAgICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3koY29va2ll
U3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKIAotICAgIGlmIChwcml2YXRlQnJvd3NpbmdTdG9yYWdl
U2Vzc2lvbikgewotICAgICAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gcHJp
dmF0ZUJyb3dzaW5nQ29va2llU3RvcmFnZSA9IGFkb3B0Q0Yod2tDb3B5SFRUUENvb2tpZVN0b3Jh
Z2UocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pKTsKLSAgICAgICAgQ0ZIVFRQQ29va2ll
U3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShwcml2YXRlQnJvd3NpbmdDb29raWVTdG9yYWdl
LmdldCgpLCBwb2xpY3kpOwotICAgIH0KKyAgICBpZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNl
c3Npb24oKSkKKyAgICAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGlj
eShwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpLT5jb29raWVTdG9yYWdlKCkuZ2V0KCks
IHBvbGljeSk7CiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlz
aW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTQgKzI5LDEwIEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBj
cmVhdGUoV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBXVEY6OlN0cmluZyYgdXNlckFnZW50KTsKIAog
ICAgIHN0YXRpYyB2b2lkIHNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmll
ckJhc2UoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIHZvaWQgc3dpdGNoVG9OZXdUZXN0aW5n
U2Vzc2lvbigpOwogICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
KTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwogCiAj
aWYgVVNFKENGTkVUV09SSykKLSAgICBzdGF0aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBkZWZh
dWx0U3RvcmFnZVNlc3Npb24oKTsKLQotICAgIHN0YXRpYyB2b2lkIHNldENvb2tpZUFjY2VwdFBv
bGljeUZvclRlc3RpbmdDb250ZXh0KENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kpOwog
ICAgIHN0YXRpYyB2b2lkIHNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKENGSFRU
UENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kpOwogI2VuZGlmCiAKQEAgLTUwLDggKzQ2LDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHVzZXJBZ2VudCgpIGNvbnN0OwogICAg
IHZpcnR1YWwgV1RGOjpTdHJpbmcgcmVmZXJyZXIoKSBjb25zdDsKICNpZiBVU0UoQ0ZORVRXT1JL
KQotICAgIHZpcnR1YWwgYm9vbCBpblByaXZhdGVCcm93c2luZ01vZGUoKSBjb25zdDsKLSAgICB2
aXJ0dWFsIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24oKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24o
KSBjb25zdDsKICNlbmRpZgogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9j
a2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODYsNDQgKzg2LDM0IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpub3RpZnlD
b29raWUKIHsKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi1SZXRhaW5QdHI8Q0ZIVFRQQ29va2ll
U3RvcmFnZVJlZj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWZhdWx0Q29va2llU3RvcmFnZSgp
CitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsKQogewotICAgIGlmIChDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHNlc3Npb24gPSBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKSkKLSAgICAg
ICAgcmV0dXJuIGFkb3B0Q0Yod2tDb3B5SFRUUENvb2tpZVN0b3JhZ2Uoc2Vzc2lvbikpOwotCi0g
ICAgcmV0dXJuIHdrR2V0RGVmYXVsdEhUVFBDb29raWVTdG9yYWdlKCk7Ci19Ci0jZW5kaWYKLQot
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTShOZXR3b3JraW5nQ29u
dGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQot
ewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKGNvbnRleHQsIGZpcnN0UGFydHks
IHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQ
YXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNG
cm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKLSAgICBXZWJDb3JlOjpzZXRDb29raWVz
RnJvbURPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CisgICAgV2Vi
Q29yZTo6c2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVT
dHJpbmcpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQo
TmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmIHVybCkKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRW5hYmxlZChj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJs
ZWQoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2ll
c0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkK
K1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJl
dHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJz
dFBhcnR5LCB1cmwpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29v
a2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0
b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29v
a2llcyhjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOworICAgIHJldHVybiBX
ZWJDb3JlOjpnZXRSYXdDb29raWVzKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2ll
cyk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxldGVDb29raWUoTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29r
aWVOYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBjb29raWVOYW1lKQogewotICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShjb250ZXh0LCB1
cmwsIGNvb2tpZU5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1cmws
IGNvb2tpZU5hbWUpOwogfQogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVmcmVzaFBs
dWdpbnMoKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MiwxNSArNTIsMTIgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6
OkNvb2tpZXNTdHJhdGVneQogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDb29raWVzQ2hhbmdlZCgp
OwotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2ll
U3RvcmFnZVJlZj4gZGVmYXVsdENvb2tpZVN0b3JhZ2UoKTsKLSNlbmRpZgotICAgIHZpcnR1YWwg
U3RyaW5nIGNvb2tpZXNGb3JET00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmly
dHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0Kiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNv
bnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChXZWJDb3JlOjpO
ZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIGJvb2wg
Z2V0UmF3Q29va2llcyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6
Q29va2llPiYpOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6TmV0d29y
a2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAg
dmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJv
b2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwor
ICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29v
a2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJp
bmcmKTsKIAogICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kKICAgICAvLyAtIFVzaW5n
IGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNv
cmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNw
cAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9y
dC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzLDM0ICs4
MywzNCBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpub3RpZnlDb29rCiB7CiB9CiAK
LVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y29va2llc0ZvckRPTShOZXR3b3JraW5n
Q29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJs
KQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjb29raWVzRm9yRE9NKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYgdXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKGNvbnRl
eHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00o
c2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNX
aW5DRTo6c2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVT
dHJpbmcpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpzZXRDb29raWVzRnJvbURPTShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7Ci0gICAg
V2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCBjb29r
aWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0
UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNX
aW5DRTo6Y29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgUGxhdGZvcm1TdHJhdGVnaWVz
V2luQ0U6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVy
biBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAg
IHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwp
OwogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6
OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewot
ICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb250ZXh0
LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1ib29sIFBsYXRm
b3JtU3RyYXRlZ2llc1dpbkNFOjpnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29r
aWU+JiByYXdDb29raWVzKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Z2V0UmF3Q29v
a2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7
Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoY29udGV4dCwgZmlyc3RQYXJ0eSwg
dXJsLCByYXdDb29raWVzKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzZXNz
aW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12b2lkIFBsYXRmb3JtU3Ry
YXRlZ2llc1dpbkNFOjpkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBQbGF0Zm9ybVN0
cmF0ZWdpZXNXaW5DRTo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0g
ICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKGNvbnRleHQsIHVybCwgY29va2llTmFtZSk7CisgICAg
V2ViQ29yZTo6ZGVsZXRlQ29va2llKHNlc3Npb24sIHVybCwgY29va2llTmFtZSk7CiB9CiAKIHZv
aWQgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OnJlZnJlc2hQbHVnaW5zKCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3Jt
U3RyYXRlZ2llc1dpbkNFLmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvd2lu
Y2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuaAkod29ya2luZyBjb3B5
KQpAQCAtNTEsMTIgKzUxLDEyIEBAIHByaXZhdGU6CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVz
U3RyYXRlZ3kKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQoKTsKLSAgICB2
aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0Kiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwot
ICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29u
dGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktV
UkwmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoV2Vi
Q29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVh
bCBib29sIGdldFJhd0Nvb2tpZXMoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6
Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYp
OworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmly
dHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktV
UkwmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCBib29sIGdl
dFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29u
c3QgU3RyaW5nJik7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CiAgICAgLy8g
LSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgo=
</data>
<flag name="commit-queue"
          id="197902"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180593</attachid>
            <date>2012-12-21 22:39:04 -0800</date>
            <delta_ts>2012-12-21 22:55:36 -0800</delta_ts>
            <desc>patch for EWS</desc>
            <filename>StorageSession.txt</filename>
            <type>text/plain</type>
            <size>173783</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjAyOCw2ICsyMDI4LDcgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRUUFZhbGlkYXRpb24u
Y3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcAogICAgIHBsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCisgICAgcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29u
dGVudFR5cGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuY3BwCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNTc2MCw2ICs1NzYwLDcgQEAgd2ViY29y
ZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Byb3h5U2VydmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0YXRlTm90aWZpZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdGF0ZU5vdGlmaWVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9u
IDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAg
LTEwNjEsNiArMTA2MSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRU
UFZhbGlkYXRpb24uY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwIFwK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCBcCisgICAgcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcCBcCiAgICAgcGxhdGZv
cm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsv
UHJvdGVjdGlvblNwYWNlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5j
cHAgXApAQCAtMjI3Myw2ICsyMjc0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0
d29yay9IVFRQVmFsaWRhdGlvbi5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBTdGF0dXND
b2Rlcy5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmluZy5oIFwKKyAgICBwbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIFwKICAgICBwbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtpbmdDb250ZXh0LmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
YXRlTm90aWZpZXIuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5o
IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjA3LDcgKzIwNyw3IEBA
IF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yRDFFdgogX19aTjdXZWJDb3JlMTJjYWNoZVN0b3Jh
Z2VFdgogX19aTjdXZWJDb3JlMTJjcmVhdGVNYXJrdXBFUEtOU180Tm9kZUVOU18xM0VDaGlsZHJl
bk9ubHlFUE4zV1RGNlZlY3RvcklQUzBfTG0wRUVFTlNfMTNFQWJzb2x1dGVVUkxzRVBOUzVfSU5T
XzEzUXVhbGlmaWVkTmFtZUVMbTBFRUUKIF9fWk43V2ViQ29yZTEyY3JlYXRlTWFya3VwRVBLTlNf
NVJhbmdlRVBOM1dURjZWZWN0b3JJUE5TXzROb2RlRUxtMEVFRU5TXzIzRUFubm90YXRlRm9ySW50
ZXJjaGFuZ2VFYk5TXzEzRUFic29sdXRlVVJMc0UKLV9fWk43V2ViQ29yZTEyZGVsZXRlQ29va2ll
RVBOU18xN05ldHdvcmtpbmdDb250ZXh0RVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdFCitfX1pO
N1dlYkNvcmUxMmRlbGV0ZUNvb2tpZUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNf
NEtVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMmdjQ29udHJvbGxlckV2CiBfX1pO
N1dlYkNvcmUxMmljb25EYXRhYmFzZUV2CiBfX1pON1dlYkNvcmUxMnRvVWludDhBcnJheUVOM0pT
QzdKU1ZhbHVlRQpAQCAtMjM2LDEwICsyMzYsMTAgQEAgX19aTjdXZWJDb3JlMTNSZXNvdXJjZUVy
cm9yQzFFUDdOU0Vycm9yCiBfX1pON1dlYkNvcmUxM1Jlc291cmNlRXJyb3JDMUVQOV9fQ0ZFcnJv
cgogX19aTjdXZWJDb3JlMTNTdHlsZWRFbGVtZW50MjJzZXRJbmxpbmVTdHlsZVByb3BlcnR5RU5T
XzEzQ1NTUHJvcGVydHlJREVSS04zV1RGNlN0cmluZ0ViCiBfX1pON1dlYkNvcmUxM1N0eWxlZEVs
ZW1lbnQyMnNldElubGluZVN0eWxlUHJvcGVydHlFTlNfMTNDU1NQcm9wZXJ0eUlERWROU18xN0NT
U1ByaW1pdGl2ZVZhbHVlOVVuaXRUeXBlc0ViCi1fX1pON1dlYkNvcmUxM2Nvb2tpZXNGb3JET01F
UE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VSTEVTNF8KK19fWk43V2ViQ29yZTEzY29v
a2llc0ZvckRPTUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfNEtVUkxFUzVfCiBf
X1pON1dlYkNvcmUxM2NyZWF0ZVdyYXBwZXJFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUds
b2JhbE9iamVjdEVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUxM2RpcmVjdG9yeU5hbWVFUktOM1dU
RjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxM2dldFJhd0Nvb2tpZXNFUE5TXzE3TmV0d29ya2luZ0Nv
bnRleHRFUktOU180S1VSTEVTNF9STjNXVEY2VmVjdG9ySU5TXzZDb29raWVFTG0wRUVFCitfX1pO
N1dlYkNvcmUxM2dldFJhd0Nvb2tpZXNFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05T
XzRLVVJMRVM1X1JOM1dURjZWZWN0b3JJTlNfNkNvb2tpZUVMbTBFRUUKIF9fWk43V2ViQ29yZTEz
dG9BcnJheUJ1ZmZlckVOM0pTQzdKU1ZhbHVlRQogX19aTjdXZWJDb3JlMTN0b0hUTUxFbGVtZW50
RVBOU18yMUZvcm1Bc3NvY2lhdGVkRWxlbWVudEUKIF9fWk43V2ViQ29yZTEzdG9KU0RPTVdpbmRv
d0VOM0pTQzdKU1ZhbHVlRQpAQCAtMjU0LDYgKzI1NCwxMCBAQCBfX1pON1dlYkNvcmUxNERvY3Vt
ZW50TG9hZGVyMTNhdHRhY2hUb0ZyCiBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTVkZXRh
Y2hGcm9tRnJhbWVFdgogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjE4YWRkQXJjaGl2ZVJl
c291cmNlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzE1QXJjaGl2ZVJlc291cmNlRUVFCiBfX1pON1dl
YkNvcmUxNFJlc291cmNlTG9hZGVyMzJkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUVS
S05TXzIzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VFCitfX1pON1dlYkNvcmUxNGNvb2tpZXNFbmFi
bGVkRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU180S1VSTEVTNV8KK19fWk43V2Vi
Q29yZTE3c2V0Q29va2llc0Zyb21ET01FUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05T
XzRLVVJMRVM1X1JLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMjFOZXR3b3JrU3RvcmFnZVNl
c3Npb24yMWRlZmF1bHRTdG9yYWdlU2Vzc2lvbkV2CitfX1pON1dlYkNvcmUyMU5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjI1c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbkV2CiBfX1pON1dlYkNvcmUyMVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTExZGVzZXJpYWxpemVFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMxXzE0
SlNHbG9iYWxPYmplY3RFUE4zV1RGNlZlY3RvcklOUzZfNlJlZlB0cklOU18xMU1lc3NhZ2VQb3J0
RUVFTG0xRUVFTlNfMjJTZXJpYWxpemF0aW9uRXJyb3JNb2RlRQogX19aTjdXZWJDb3JlMjFTZXJp
YWxpemVkU2NyaXB0VmFsdWU2Y3JlYXRlRVBOM0pTQzlFeGVjU3RhdGVFTlMxXzdKU1ZhbHVlRVBO
M1dURjZWZWN0b3JJTlM1XzZSZWZQdHJJTlNfMTFNZXNzYWdlUG9ydEVFRUxtMUVFRVBOUzZfSU5T
N19JTlM1XzExQXJyYXlCdWZmZXJFRUVMbTFFRUVOU18yMlNlcmlhbGl6YXRpb25FcnJvck1vZGVF
CiBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTZjcmVhdGVFUktOM1dURjZTdHJp
bmdFCkBAIC0yODQsNyArMjg4LDYgQEAgX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjlzZWxl
Y3RBbGxFdgogX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbkMxRVBOU181RnJhbWVFCiBfX1pO
N1dlYkNvcmUxNExvYWRlclN0cmF0ZWd5MjFyZXNvdXJjZUxvYWRTY2hlZHVsZXJFdgogX19aTjdX
ZWJDb3JlMTRQbHVnaW5Eb2N1bWVudDEwcGx1Z2luTm9kZUV2Ci1fX1pON1dlYkNvcmUxNGNvb2tp
ZXNFbmFibGVkRVBOU18xN05ldHdvcmtpbmdDb250ZXh0RVJLTlNfNEtVUkxFUzRfCiBfX1pOSzdX
ZWJDb3JlNUZyYW1lMjV0cmFja2VkUmVwYWludFJlY3RzQXNUZXh0RXYKIF9fWk43V2ViQ29yZTlG
cmFtZVZpZXcxN3NldFRyYWNrc1JlcGFpbnRzRWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMHJl
c2V0VHJhY2tlZFJlcGFpbnRzRXYKQEAgLTQ4OCw3ICs0OTEsNyBAQCBfX1pON1dlYkNvcmUxNlZp
c2libGVTZWxlY3Rpb25DMUVSS05TXzE1CiBfX1pON1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb25D
MUVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRWIKIF9fWk43V2ViQ29yZTE2Y3JlYXRlRnVsbE1hcmt1
cEVQS05TXzROb2RlRQogX19aTjdXZWJDb3JlMTZjcmVhdGVGdWxsTWFya3VwRVBLTlNfNVJhbmdl
RQotX19aTjdXZWJDb3JlMTZkZWxldGVBbGxDb29raWVzRVBOU18xN05ldHdvcmtpbmdDb250ZXh0
RQorX19aTjdXZWJDb3JlMTZkZWxldGVBbGxDb29raWVzRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNl
c3Npb25FCiBfX1pON1dlYkNvcmUxNmVuY2xvc2luZ0ludFJlY3RFUktOU185RmxvYXRSZWN0RQog
X19aTjdXZWJDb3JlMTZpc0VuZE9mUGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNf
MjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCiBfX1pON1dlYkNvcmUxNmlzVXNlclZpc2li
bGVVUkxFUDhOU1N0cmluZwpAQCAtNTExLDcgKzUxNCw2IEBAIF9fWk43V2ViQ29yZTE3U3VicmVz
b3VyY2VMb2FkZXI2Y3JlYXRlRVAKIF9fWk43V2ViQ29yZTE3Vmlld3BvcnRBcmd1bWVudHMxOWRl
cHJlY2F0ZWRUYXJnZXREUElFCiBfX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0dXJlRVBOU18x
N0pTRE9NR2xvYmFsT2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNsYXNzSW5mb0UKIF9f
Wk43V2ViQ29yZTE3b3BlblRlbXBvcmFyeUZpbGVFUktOM1dURjZTdHJpbmdFUmkKLV9fWk43V2Vi
Q29yZTE3c2V0Q29va2llc0Zyb21ET01FUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VS
TEVTNF9SS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE3dXNlclZpc2libGVTdHJpbmdFUDVO
U1VSTAogX19aTjdXZWJDb3JlMThET01XaW5kb3dFeHRlbnNpb25DMUVQTlNfNUZyYW1lRVBOU18x
NURPTVdyYXBwZXJXb3JsZEUKIF9fWk43V2ViQ29yZTE4SFRNTENvbnRlbnRFbGVtZW50NmNyZWF0
ZUVQTlNfOERvY3VtZW50RQpAQCAtNTk1LDYgKzU5Nyw3IEBAIF9fWk43V2ViQ29yZTIwcHJvdG9j
b2xJc0phdmFTY3JpcHRFUktOM1cKIF9fWk43V2ViQ29yZTIwU3BhY2VTcGxpdFN0cmluZ0RhdGFE
MUV2CiBfX1pON1dlYkNvcmUyMUJhY2tGb3J3YXJkQ29udHJvbGxlcjExaXRlbUF0SW5kZXhFaQog
X19aTjdXZWJDb3JlMjFNZW1vcnlQcmVzc3VyZUhhbmRsZXI3aW5zdGFsbEV2CitfX1pON1dlYkNv
cmUyMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjI4Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkVS
S04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIxUGxhdGZvcm1LZXlib2FyZEV2ZW50MjRkaXNh
bWJpZ3VhdGVLZXlEb3duRXZlbnRFTlNfMTNQbGF0Zm9ybUV2ZW50NFR5cGVFYgogX19aTjdXZWJD
b3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIxOXN0YXJ0UmVzb3VyY2VMb2FkZXJFUE5TXzE0UmVz
b3VyY2VMb2FkZXJFCiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjIwc2VydmVQ
ZW5kaW5nUmVxdWVzdHNFTlNfMjBSZXNvdXJjZUxvYWRQcmlvcml0eUUKQEAgLTY1MCw3ICs2NTMs
NyBAQCBfX1pON1dlYkNvcmUyM2NyZWF0ZUZyYWdtZW50RnJvbU5vZGVzRVBOCiBfX1pON1dlYkNv
cmUyM2RhdGFGb3JVUkxDb21wb25lbnRUeXBlRVA1TlNVUkxsCiBfX1pON1dlYkNvcmUyM2RlY29k
ZUhvc3ROYW1lV2l0aFJhbmdlRVA4TlNTdHJpbmc4X05TUmFuZ2UKIF9fWk43V2ViQ29yZTIzZW5j
b2RlSG9zdE5hbWVXaXRoUmFuZ2VFUDhOU1N0cmluZzhfTlNSYW5nZQotX19aTjdXZWJDb3JlMjNn
ZXRIb3N0bmFtZXNXaXRoQ29va2llc0VQTlNfMTdOZXR3b3JraW5nQ29udGV4dEVSTjNXVEY3SGFz
aFNldElOUzJfNlN0cmluZ0VOUzJfMTBTdHJpbmdIYXNoRU5TMl8xMEhhc2hUcmFpdHNJUzRfRUVF
RQorX19aTjdXZWJDb3JlMjNnZXRIb3N0bmFtZXNXaXRoQ29va2llc0VSS05TXzIxTmV0d29ya1N0
b3JhZ2VTZXNzaW9uRVJOM1dURjdIYXNoU2V0SU5TM182U3RyaW5nRU5TM18xMFN0cmluZ0hhc2hF
TlMzXzEwSGFzaFRyYWl0c0lTNV9FRUVFCiBfX1pON1dlYkNvcmUyNEJpbmFyeVByb3BlcnR5TGlz
dFdyaXRlcjE3d3JpdGVQcm9wZXJ0eUxpc3RFdgogX19aTjdXZWJDb3JlMjRDYWNoZWRSZXNvdXJj
ZUhhbmRsZUJhc2UxMXNldFJlc291cmNlRVBOU18xNENhY2hlZFJlc291cmNlRQogX19aTjdXZWJD
b3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIxMGZpcnN0Q2hpbGRFdgpAQCAtNjY5LDcgKzY3
Miw3IEBAIF9fWk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyQzIKIF9fWk43V2Vi
Q29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyRDJFdgogX19aTjdXZWJDb3JlMjRjcmVhdGVG
cmFnbWVudEZyb21NYXJrdXBFUE5TXzhEb2N1bWVudEVSS04zV1RGNlN0cmluZ0VTNV9OU18yN0Zy
YWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbkUKIF9fWk43V2ViQ29yZTI0ZGVjb2RlVVJMRXNjYXBl
U2VxdWVuY2VzRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMjRkZWxldGVDb29raWVzRm9y
SG9zdG5hbWVFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOM1dURjZTdHJpbmdFCitfX1pON1dl
YkNvcmUyNGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNz
aW9uRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjRmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b25FUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyNG5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdl
ZEUKIF9fWk43V2ViQ29yZTI1SGlzdG9yeVByb3BlcnR5TGlzdFdyaXRlcjExcmVsZWFzZURhdGFF
dgpAQCAtNjk2LDEwICs2OTksOSBAQCBfX1pON1dlYkNvcmUyN0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvCiBfX1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazE0c2V0T3Jp
ZW50YXRpb25FTjNXVEYxMFBhc3NSZWZQdHJJTlNfMjFEZXZpY2VPcmllbnRhdGlvbkRhdGFFRUUK
IF9fWk43V2ViQ29yZTI3RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrQzFFdgogX19aTjdXZWJD
b3JlMjdzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXNFdgotX19aTjdXZWJDb3JlMjZkZWZhdWx0
Q0ZIVFRQQ29va2llU3RvcmFnZUV2CiBfX1pON1dlYkNvcmUyOGVuY29kZVdpdGhVUkxFc2NhcGVT
ZXF1ZW5jZXNFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyOHJlbW92ZUxhbmd1YWdlQ2hh
bmdlT2JzZXJ2ZXJFUHYKLV9fWk43V2ViQ29yZTI5Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWVFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VSTEVTNF8KK19fWk43V2ViQ29yZTI5
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWVFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lv
bkVSS05TXzRLVVJMRVM1XwogX19aTjdXZWJDb3JlMjlpc0NoYXJhY3RlclNtYXJ0UmVwbGFjZUV4
ZW1wdEVpYgogX19aTjdXZWJDb3JlMzBob3N0TmFtZU5lZWRzRGVjb2RpbmdXaXRoUmFuZ2VFUDhO
U1N0cmluZzhfTlNSYW5nZQogX19aTjdXZWJDb3JlMzBob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRo
UmFuZ2VFUDhOU1N0cmluZzhfTlNSYW5nZQpAQCAtMTMzMCw2ICsxMzMyLDcgQEAgX19aTks3V2Vi
Q29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U2aXNIVAogX19aTks3V2ViQ29yZTIwUmVzb3VyY2VS
ZXNwb25zZUJhc2U4bWltZVR5cGVFdgogX19aTks3V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9s
bGVyMTJmb3J3YXJkQ291bnRFdgogX19aTks3V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9sbGVy
OWJhY2tDb3VudEV2CitfX1pOSzdXZWJDb3JlMjFOZXR3b3JrU3RvcmFnZVNlc3Npb24xM2Nvb2tp
ZVN0b3JhZ2VFdgogX19aTks3V2ViQ29yZTIxUmVuZGVyTGF5ZXJDb21wb3NpdG9yMTFzY3JvbGxM
YXllckV2CiBfX1pOSzdXZWJDb3JlMjFSZW5kZXJMYXllckNvbXBvc2l0b3IxNXJvb3RSZW5kZXJM
YXllckV2CiBfX1pOSzdXZWJDb3JlMjFVc2VyQ29udGVudFVSTFBhdHRlcm43bWF0Y2hlc0VSS05T
XzRLVVJMRQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC00MzY3LDYgKzQzNjcsNyBA
QAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmNwcCcsCkBAIC00Mzg2LDcg
KzQzODcsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRp
b25DRi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZO
ZXQuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VD
Rk5ldC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9y
YWdlQ0ZOZXQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9jZi9Eb3dubG9hZEJ1bmRsZS5o
JywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzI2MjEsNiArMzI2MjEsMTAgQEAKIAkJCQkJ
PgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3Jt
XG5ldHdvcmtcTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJ
CQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXE5ldHdvcmtp
bmdDb250ZXh0LmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBAIC0zMjg0NCwxMCArMzI4NDgsNiBA
QAogCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJCQkJPC9GaWxlPgogCQkJCQk8RmlsZQot
CQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXENvb2tpZVN0b3JhZ2VD
Rk5ldC5oIgotCQkJCQkJPgotCQkJCQk8L0ZpbGU+Ci0JCQkJCTxGaWxlCiAJCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAi
CiAJCQkJCQk+CiAJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTMyOTQwLDYgKzMyOTQwLDEw
IEBACiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAi
CisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKIAkJCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGxhdGZvcm1cbmV0d29ya1xjZlxQcm94eVNlcnZlckNGTmV0LmNwcCIKIAkJCQkJCT4KIAkJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDM3LDcgKzIwMzcsNiBAQAogCQk3RUU2ODQ2MTEyRDI2RTM4MDBFNzk0MTUgLyogQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdFRTY4NDRFMTJEMjZFMzgwMEU3OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdFRTY4NDYyMTJEMjZFMzgwMEU3OTQxNSAvKiBDb29raWVKYXJDRk5ldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ0RjEyRDI2RTM4
MDBFNzk0MTUgLyogQ29va2llSmFyQ0ZOZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2MzEyRDI2RTM4
MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDUwMTJEMjZFMzgwMEU3OTQxNSAvKiBDb29r
aWVTdG9yYWdlQ0ZOZXQuY3BwICovOyB9OwotCQk3RUU2ODQ2NDEyRDI2RTM4MDBFNzk0MTUgLyog
Q29va2llU3RvcmFnZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VF
Njg0NjUxMkQyNkUzODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NTIxMkQyNkUz
ODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2
NjEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1MzEyRDI2RTM4MDBFNzk0
MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgKi87IH07CiAJCTdFRTY4NDY3MTJEMjZFMzgw
MEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1NDEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURh
dGFTdHJlYW1DRk5ldC5oICovOyB9OwpAQCAtNjA5NSw2ICs2MDk0LDggQEAKIAkJRTEzNEY1QUIx
MkVFMzQzRjAwNEVDNThEIC8qIEludFJlY3RIYXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTM0RjVBQTEyRUUzNDNGMDA0RUM1OEQgLyogSW50UmVj
dEhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMTM5ODY2MzE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTM5ODY2MTE1NDc4NDc0MDAx
RTNGNjUgLyogU3R5bGVSZXNvbHZlci5jcHAgKi87IH07CiAJCUUxMzk4NjY0MTU0Nzg0NzQwMDFF
M0Y2NSAvKiBTdHlsZVJlc29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTM5ODY2MjE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5o
ICovOyB9OworCQlFMTNFRjM0NDE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTNF
RjM0MjE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTEzRUYzNDkxNjg1MEM0
NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxM0VGMzQ3MTY4NTBDNDcwMDM0Qzgz
RiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgKi87IH07CiAJCUUxM0YwMUYxMTI3
MEUxOTAwMERGQkE3MSAvKiBDb29raWVTdG9yYWdlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEzRjAxRjAxMjcwRTE5MDAwREZCQTcxIC8qIENv
b2tpZVN0b3JhZ2VNYWMubW0gKi87IH07CiAJCUUxNDI0QzhBMTY0QjNCNEUwMEYzMkQ0MCAvKiBQ
bGF0Zm9ybUNvb2tpZUphci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTE0MjRDODkxNjRCM0I0RTAwRjMyRDQwIC8qIFBsYXRmb3JtQ29va2llSmFyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTE0MjRD
OTAxNjRCNDYwQjAwRjMyRDQwIC8qIENvb2tpZUphck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNDI0QzhGMTY0QjQ2MEIwMEYzMkQ0MCAvKiBD
b29raWVKYXJNYWMubW0gKi87IH07CkBAIC05MzcwLDcgKzkzNzEsNiBAQAogCQk3RUU2ODQ0RTEy
RDI2RTM4MDBFNzk0MTUgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NEYxMkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZUph
ckNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvb2tpZUph
ckNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTAxMkQyNkUz
ODAwRTc5NDE1IC8qIENvb2tpZVN0b3JhZ2VDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDb29raWVTdG9yYWdlQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNG
TmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tpZVN0b3JhZ2VDRk5l
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1MjEyRDI2RTM4MDBFNzk0
MTUgLyogQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTMxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybURhdGFT
dHJlYW1DRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDU0MTJE
MjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZvcm1EYXRhU3RyZWFtQ0ZOZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEzNTc2LDYgKzEzNTc2LDggQEAKIAkJRTEzNEY1QUExMkVFMzQzRjAwNEVD
NThEIC8qIEludFJlY3RIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
dFJlY3RIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMzk4NjYxMTU0Nzg0
NzQwMDFFM0Y2NSAvKiBTdHlsZVJlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0eWxlUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMTM5ODY2MjE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZVJlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUxM0VGMzQyMTY4NEVDRjQwMDM0QzgzRiAvKiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxM0VGMzQ3MTY4NTBD
NDcwMDM0QzgzRiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxM0YwMUVBMTI3MEUxMEQwMERGQkE3MSAv
KiBDb29raWVTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tp
ZVN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEzRjAxRjAxMjcwRTE5
MDAwREZCQTcxIC8qIENvb2tpZVN0b3JhZ2VNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBDb29raWVTdG9yYWdlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMTQyNEM4OTE2NEIzQjRFMDBGMzJENDAgLyogUGxhdGZvcm1Db29raWVKYXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxhdGZvcm1Db29raWVKYXIuaDsg
cGF0aCA9IG5ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE1ODMzLDYgKzE1ODM1LDcgQEAKIAkJCQkzN0REQ0Q5MjEzODQ0RkQ1MDAwOEI3
OTMgLyogTUlNRUhlYWRlci5jcHAgKi8sCiAJCQkJMzdERENEOTMxMzg0NEZENTAwMDhCNzkzIC8q
IE1JTUVIZWFkZXIuaCAqLywKIAkJCQk2MjhEMjE0QjEyMTMxRUQxMDA1NURDRkMgLyogTmV0d29y
a2luZ0NvbnRleHQuaCAqLywKKwkJCQlFMTNFRjM0MjE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmggKi8sCiAJCQkJMUE3RkE2MUEwRERBM0JCRTAwMjhGOEE1IC8qIE5l
dHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCAqLywKIAkJCQkxQTdGQTYxODBEREEzQjNBMDAyOEY4QTUg
LyogTmV0d29ya1N0YXRlTm90aWZpZXIuaCAqLywKIAkJCQk0NDc5NTgwMjE2NDNCNDdCMDAxRTBB
N0YgLyogUGFyc2VkQ29udGVudFR5cGUuY3BwICovLApAQCAtMjA0MDMsMTMgKzIwNDA2LDEzIEBA
CiAJCQkJN0VFNjg0NEUxMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmggKi8sCiAJCQkJN0VFNjg0NEYxMkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZUphckNGTmV0LmNw
cCAqLywKIAkJCQk3RUU2ODQ1MDEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0
LmNwcCAqLywKLQkJCQk3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNG
TmV0LmggKi8sCiAJCQkJN0VFNjg0NTIxMkQyNkUzODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9y
YWdlQ0ZOZXQuY3BwICovLAogCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5l
dC5jcHAgKi8sCiAJCQkJN0VFNjg0NTMxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU0MTJEMjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0
cmVhbUNGTmV0LmggKi8sCiAJCQkJN0VFNjg0NTUxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1
bkxvb3BDRi5jcHAgKi8sCiAJCQkJN0VFNjg0NTYxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1
bkxvb3BDRi5oICovLAorCQkJCUUxM0VGMzQ3MTY4NTBDNDcwMDM0QzgzRiAvKiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb25DRk5ldC5jcHAgKi8sCiAJCQkJMUFGOEUxQzExMjU2NzNFMDAwMjMwRkY3IC8q
IFByb3h5U2VydmVyQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAv
KiBSZXNvdXJjZUVycm9yLmggKi8sCiAJCQkJN0VFNjg0NTgxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlRXJyb3JDRi5jcHAgKi8sCkBAIC0yMjg5NCw3ICsyMjg5Nyw2IEBACiAJCQkJRDhCNjE1
MkYxMDMyNDk1MTAwQzg1NTRBIC8qIENvb2tpZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzM5QjVC
NjMxMzFEQUEzMjAwRjQ4RDAyIC8qIENvb2tpZXNTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzNEMDIxMkQxMzFEQjM3QjAwNDA5MUE4IC8qIENvb2tpZVN0b3JhZ2UuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTdFRTY4NDY0MTJEMjZFMzgwMEU3OTQxNSAvKiBDb29raWVTdG9yYWdlQ0ZOZXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZFNkZENDg4MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29yZGlu
YXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZEMDQwQTE5ODlDQTAwN0ZCOEM1IC8qIENv
dW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCOTc5MEU4MjA2OTIwMEIyNTk2NSAvKiBD
b3VudGVyQ29udGVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTk4Miw2ICsyNTk4NCw3IEBACiAJ
CQkJRjM3QTU2MjMxNjc5Q0Y3QjAwQzU3MDQ2IC8qIEhlYXBHcmFwaFNlcmlhbGl6ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjg4OTBBMTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCODg5MEYxNjdEMzAxNjAwMTBDREE1
IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTEzRUYz
NDQxNjg0RUNGNDAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0yOTEwMCw2ICsyOTEwMyw3IEBACiAJCQkJMEZCODg5MEIxNjdEMkZBMTAwMTBDREE1
IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCODg5
MEUxNjdEMzAxNjAwMTBDREE1IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyMDlCNDU2QjE2Nzk2QTdFMDBFNTRFNEUgLyogSlNDcnlwdG9DdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTEzRUYzNDkxNjg1MEM0NzAwMzRDODNGIC8qIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nvb2tpZUphci5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db29raWVKYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTmV0
d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvb2tpZUphci5oIgogCiAjaWYg
VVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCkBAIC00Myw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4dChjb25z
dCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CisgICAgLy8gRklYTUU6IFJldHVybmluZyAwIG1lYW5z
IGZhbGxpbmcgYmFjayB0byBkZWZhdWx0IGNvbnRleHQuIFRoYXQncyBub3QgYSBjaG9pY2UgdGhh
dCBpcyBhcHByb3ByaWF0ZSB0byBkbyBhdCBydW50aW1lCiAgICAgaWYgKCFkb2N1bWVudCkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CkBA
IC01NCw1NyArNTYsNjggQEAgc3RhdGljIE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29u
dAogICAgIHJldHVybiBsb2FkZXItPm5ldHdvcmtpbmdDb250ZXh0KCk7CiB9CiAKKyNpZiBQTEFU
Rk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCitpbmxpbmUgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzdG9yYWdlU2Vzc2lvbihjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQgPSBuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCk7CisgICAg
cmV0dXJuIGNvbnRleHQgPyBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpIDogTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKK30KKyNkZWZpbmUgU0VTU0lPTihk
b2N1bWVudCkgc3RvcmFnZVNlc3Npb24oZG9jdW1lbnQpCisjZWxzZQorI2RlZmluZSBTRVNTSU9O
KGRvY3VtZW50KSBOZXR3b3JrU3RvcmFnZVNlc3Npb24obmV0d29ya2luZ0NvbnRleHQoZG9jdW1l
bnQpKQorI2VuZGlmCisKIFN0cmluZyBjb29raWVzKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgS1VSTCYgdXJsKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAgIHJl
dHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmNvb2tpZXNGb3JE
T00obmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgdXJsKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNT
dHJhdGVneSgpLT5jb29raWVzRm9yRE9NKFNFU1NJT04oZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsKICNlbHNlCi0gICAgcmV0dXJuIGNvb2tpZXNGb3JE
T00obmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgdXJsKTsKKyAgICByZXR1cm4gY29va2llc0ZvckRPTShTRVNTSU9OKGRvY3VtZW50
KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVybCk7CiAjZW5kaWYKIH0KIAog
dm9pZCBzZXRDb29raWVzKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykK
LSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPnNldENvb2tpZXNG
cm9tRE9NKG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlG
b3JDb29raWVzKCksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+Y29va2llc1N0cmF0ZWd5KCktPnNldENvb2tpZXNGcm9tRE9NKFNFU1NJT04oZG9jdW1lbnQp
LCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBjb29raWVTdHJpbmcpOwog
I2Vsc2UKLSAgICBzZXRDb29raWVzRnJvbURPTShuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCks
IGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZVN0cmluZyk7Cisg
ICAgc2V0Q29va2llc0Zyb21ET00oU0VTU0lPTihkb2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZVN0cmluZyk7CiAjZW5kaWYKIH0KIAogYm9vbCBj
b29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAjaWYgVVNFKFBMQVRG
T1JNX1NUUkFURUdJRVMpCi0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVz
U3RyYXRlZ3koKS0+Y29va2llc0VuYWJsZWQobmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBk
b2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgZG9jdW1lbnQtPmNvb2tpZVVSTCgpKTsK
KyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5jb29r
aWVzRW5hYmxlZChTRVNTSU9OKGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29r
aWVzKCksIGRvY3VtZW50LT5jb29raWVVUkwoKSk7CiAjZWxzZQotICAgIHJldHVybiBjb29raWVz
RW5hYmxlZChuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCBkb2N1bWVudC0+Y29va2llVVJMKCkpOworICAgIHJldHVybiBjb29raWVz
RW5hYmxlZChTRVNTSU9OKGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVz
KCksIGRvY3VtZW50LT5jb29raWVVUkwoKSk7CiAjZW5kaWYKIH0KIAogU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VS
TCYgdXJsKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAgIHJldHVybiBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFy
dHlGb3JDb29raWVzKCksIHVybCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5j
b29raWVzU3RyYXRlZ3koKS0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU0VTU0lPTihk
b2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpOwogI2Vsc2UK
LSAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUobmV0d29ya2luZ0NvbnRl
eHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsKKyAg
ICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU0VTU0lPTihkb2N1bWVudCks
IGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpOwogI2VuZGlmCiB9CiAKIGJv
b2wgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVy
bCwgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMpCiB7CiAjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJ
RVMpCi0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+
Z2V0UmF3Q29va2llcyhuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCksIGRvY3VtZW50LT5maXJz
dFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOworICAgIHJldHVybiBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmdldFJhd0Nvb2tpZXMoU0VTU0lPTihkb2N1
bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOwog
I2Vsc2UKLSAgICByZXR1cm4gZ2V0UmF3Q29va2llcyhuZXR3b3JraW5nQ29udGV4dChkb2N1bWVu
dCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOworICAg
IHJldHVybiBnZXRSYXdDb29raWVzKFNFU1NJT04oZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBjb29raWVzKTsKICNlbmRpZgogfQogCiB2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb29raWVOYW1lKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+ZGVsZXRlQ29va2llKG5l
dHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmRlbGV0ZUNvb2tpZShTRVNTSU9OKGRv
Y3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKICNlbHNlCi0gICAgZGVsZXRlQ29va2llKG5ldHdv
cmtpbmdDb250ZXh0KGRvY3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBkZWxldGVDb29r
aWUoU0VTU0lPTihkb2N1bWVudCksIHVybCwgY29va2llTmFtZSk7CiAjZW5kaWYKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxMzg0
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlSG9z
dC5oIgogI2luY2x1ZGUgIkFzeW5jRmlsZVN0cmVhbS5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gMTM4NDA3KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJDYWNoZVBvbGljeS5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJQdXJnZVByaW9yaXR5LmgiCisjaW5jbHVkZSAi
UmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0
LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAkocmV2
aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDMwICszMywyMiBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKE1B
QykgfHwgVVNFKENGTkVUV09SSykKLXR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0
b3JhZ2UqICBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgS1VSTDsKLWNsYXNzIE5ldHdvcmtpbmdDb250ZXh0OworY2xhc3MgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOwogc3RydWN0IENvb2tpZTsKIAogY2xhc3MgQ29va2llc1N0cmF0
ZWd5IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQoKSA9
IDA7CiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBS
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gZGVmYXVsdENvb2tpZVN0b3JhZ2UoKSA9
IDA7Ci0jZW5kaWYKLQotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2lu
Z0NvbnRleHQqLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmlu
ZykgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4
dCosIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmKSA9IDA7Ci0gICAgdmlydHVh
bCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOwotICAgIHZpcnR1YWwg
Ym9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+JikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiBjb29raWVOYW1lKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY29v
a2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXRS
YXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgfkNvb2tpZXNTdHJhdGVneSgpIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAkocmV2aXNpb24gMTM4
NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5k
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1
ZXN0LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOZXR3b3JrU3RvcmFnZVNlc3Np
b25faAorI2RlZmluZSBOZXR3b3JrU3RvcmFnZVNlc3Npb25faAorCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgUExBVEZP
Uk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQordHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTFN0
b3JhZ2VTZXNzaW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwordHlwZWRlZiBzdHJ1Y3QgT3Bh
cXVlQ0ZIVFRQQ29va2llU3RvcmFnZSogIENGSFRUUENvb2tpZVN0b3JhZ2VSZWY7CisjZW5kaWYK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOZXR3b3JraW5nQ29udGV4dDsKKworY2xh
c3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3
b3JrU3RvcmFnZVNlc3Npb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsK
KyAgICBzdGF0aWMgUGFzc093blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IGNyZWF0ZVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSk7CisKKyAgICBz
dGF0aWMgdm9pZCBzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7CisKKyNpZiBQTEFURk9STShN
QUMpIHx8IFVTRShDRk5FVFdPUkspCisgICAgLy8gTWF5IGJlIG51bGwsIGluIHdoaWNoIGNhc2Ug
YSBGb3VuZGF0aW9uIGRlZmF1bHQgc2hvdWxkIGJlIHVzZWQuCisgICAgQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZiBwbGF0Zm9ybVNlc3Npb24oKSB7IHJldHVybiBtX3BsYXRmb3JtU2Vzc2lvbi5nZXQo
KTsgfQorICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdl
KCkgY29uc3Q7CisgICAgYm9vbCBpc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSBjb25zdCB7IHJl
dHVybiBtX2lzUHJpdmF0ZTsgfQorI2Vsc2UKKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24oTmV0
d29ya2luZ0NvbnRleHQqKTsKKyAgICB+TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCk7CisgICAgTmV0
d29ya2luZ0NvbnRleHQqIGNvbnRleHQoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorI2lm
IFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Np
b24oQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBwbGF0Zm9ybVNlc3Npb24pOworICAgIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbigpOworICAgIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBt
X3BsYXRmb3JtU2Vzc2lvbjsKKyAgICBib29sIG1faXNQcml2YXRlOworI2Vsc2UKKyAgICBSZWZQ
dHI8TmV0d29ya2luZ0NvbnRleHQ+IG1fY29udGV4dDsKKyNlbmRpZgorfTsKKworI2lmIFBMQVRG
T1JNKFdJTikKKy8vIE5lZWRlZCBmb3IgV2ViS2l0MSBBUEkgb25seS4KK3ZvaWQgb3ZlcnJpZGVD
b29raWVTdG9yYWdlKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYpOworQ0ZIVFRQQ29va2llU3RvcmFn
ZVJlZiBvdmVycmlkZW5Db29raWVTdG9yYWdlKCk7CisjZW5kaWYKKworfQorCisjZW5kaWYgLy8g
TmV0d29ya1N0b3JhZ2VTZXNzaW9uX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uU3R1Yi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmgiCisKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCisg
ICAgOiBtX2NvbnRleHQoY29udGV4dCkKK3sKK30KKworTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjp+
TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkKK3sKK30KKworTmV0d29ya2luZ0NvbnRleHQqIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGV4
dC5nZXQoKTsKK30KKworUGFzc093blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihjb25zdCBTdHJpbmcm
KQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCitOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VT
ZXNzaW9uKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biwgc2Vzc2lvbiwgKDApKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKK30KKwordm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKQoreworfQorCit9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JraW5n
Q29udGV4dC5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDcgKzIwLDgg
QEAKICNpZm5kZWYgTmV0d29ya2luZ0NvbnRleHRfaAogI2RlZmluZSBOZXR3b3JraW5nQ29udGV4
dF9oCiAKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKIAogI2lmIFBMQVRGT1JN
KE1BQykKICNpbmNsdWRlICJTY2hlZHVsZVBhaXIuaCIKQEAgLTQwLDEwICs0MSw2IEBAIGNsYXNz
IFdlYkNvb2tpZUphcjsKIE9CSkNfQ0xBU1MgTlNPcGVyYXRpb25RdWV1ZTsKICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQotdHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
X19DRlVSTFN0b3JhZ2VTZXNzaW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwotI2VuZGlmCi0K
ICNpZiBQTEFURk9STShRVCkKIFFUX0JFR0lOX05BTUVTUEFDRQogY2xhc3MgUU9iamVjdDsKQEAg
LTY4LDYgKzY1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgLy8gRklYTUU6
IFdyYXAgV2ViQ29va2llSmFyIGludG8gYSBOZXR3b3JrU3RvcmFnZVNlc3Npb24gdG8gbWFrZSB0
aGUgY29kZSBjcm9zcy1wbGF0Zm9ybS4KICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViQ29va2llSmFy
KiBjb29raWVKYXIoKSBjb25zdCA9IDA7CiAjZW5kaWYKIApAQCAtODAsMTEgKzc4LDEyIEBAIHB1
YmxpYzoKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQotICAg
IHZpcnR1YWwgYm9vbCBpblByaXZhdGVCcm93c2luZ01vZGUoKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgPSAwOwor
CisgICAgdmlydHVhbCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29u
c3QgPSAwOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShRVCkKKyAgICAvLyBGSVhNRTogV3JhcCBR
TmV0d29ya0FjY2Vzc01hbmFnZXIgaW50byBhIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB0byBtYWtl
IHRoZSBjb2RlIGNyb3NzLXBsYXRmb3JtLgogICAgIHZpcnR1YWwgUU9iamVjdCogb3JpZ2luYXRp
bmdPYmplY3QoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBRTmV0d29ya0FjY2Vzc01hbmFnZXIq
IG5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBtaW1l
U25pZmZpbmdFbmFibGVkKCkgY29uc3QgPSAwOwpAQCAtOTgsNiArOTcsNyBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogI2lmIFVTRShTT1VQKQorICAgIC8vIEZJWE1FOiBXcmFwIFNvdXBTZXNzaW9uIGlu
dG8gYSBOZXR3b3JrU3RvcmFnZVNlc3Npb24gdG8gbWFrZSB0aGUgY29kZSBjcm9zcy1wbGF0Zm9y
bS4KICAgICB2aXJ0dWFsIFNvdXBTZXNzaW9uKiBzb3VwU2Vzc2lvbigpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQoKSBjb25zdCA9IDA7CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3Jt
Q29va2llSmFyLmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTkgKzM0
LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEtVUkw7Ci1jbGFzcyBOZXR3b3Jr
aW5nQ29udGV4dDsKK2NsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIHN0cnVjdCBDb29raWU7
CiAKIC8vIElmIG5ldHdvcmtpbmcgY29udGV4dCBpcyBudWxsLCBkZWZhdWx0IGNvb2tpZSBzdG9y
YWdlIGlzIHVzZWQuCi1TdHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCosIGNv
bnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmKTsKLXZvaWQgc2V0Q29va2llc0Zyb21E
T00oTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJik7Ci1ib29sIGNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0
KiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpOwotU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYpOwotYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250
ZXh0KiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+
Jik7Ci12b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmKTsKLXZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya2luZ0Nv
bnRleHQqLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcyk7Ci12b2lkIGRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOwot
dm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0Kik7CitTdHJpbmcgY29va2ll
c0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJik7Cit2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBjb25z
dCBTdHJpbmcmKTsKK2Jvb2wgY29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpOworU3RyaW5nIGNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmKTsKK2Jvb2wgZ2V0UmF3Q29va2llcyhj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJiwgVmVjdG9yPENvb2tpZT4mKTsKK3ZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKTsKK3ZvaWQgZ2V0
SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNl
dDxTdHJpbmc+JiBob3N0bmFtZXMpOwordm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7Cit2b2lk
IGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJik7CiAKIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBA
CiAKICNpbmNsdWRlICJCbG9iUmVnaXN0cnkuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5j
bHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVu
dC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAkocmV2
aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMyArMjYsMTMgQEAKICNpZm5kZWYgUmVz
b3VyY2VIYW5kbGVfaAogI2RlZmluZSBSZXNvdXJjZUhhbmRsZV9oCiAKLSNpbmNsdWRlICJBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgotI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAKICNpZiBVU0UoU09VUCkKK3R5cGVkZWYgc3RydWN0IF9HVGxzQ2VydGlmaWNhdGUgR1Rsc0Nl
cnRpZmljYXRlOwogdHlwZWRlZiBzdHJ1Y3QgX1NvdXBTZXNzaW9uIFNvdXBTZXNzaW9uOwogdHlw
ZWRlZiBzdHJ1Y3QgX1NvdXBSZXF1ZXN0IFNvdXBSZXF1ZXN0OwogI2VuZGlmCkBAIC03OCw2ICs3
OCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQ3JlZGVudGlhbDsK
IGNsYXNzIEZyYW1lOwogY2xhc3MgS1VSTDsKK2NsYXNzIE5ldHdvcmtpbmdDb250ZXh0OwogY2xh
c3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNl
SGFuZGxlQ2xpZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9D
b29raWVKYXJDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw5ICsyOSw4IEBACiAjaWYgVVNFKENGTkVUV09SSykKIAogI2luY2x1ZGUg
IkNvb2tpZS5oIgotI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2VDRk5ldC5oIgogI2luY2x1ZGUgIktV
UkwuaCIKLSNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIk5ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAi
U29mdExpbmtpbmcuaCIKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIVFRQQ29va2llc1ByaXYuaD4K
QEAgLTk1LDE1ICs5NCwxMiBAQCBzdGF0aWMgUmV0YWluUHRyPENGQXJyYXlSZWY+IGZpbHRlckNv
b2tpCiAgICAgcmV0dXJuIGZpbHRlcmVkQ29va2llczsKIH0KIAotdm9pZCBzZXRDb29raWVzRnJv
bURPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBzZXRDb29raWVzRnJv
bURPTShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyA8cmRh
cjovL3Byb2JsZW0vNTYzMjg4Mz4gQ0ZIVFRQQ29va2llU3RvcmFnZSBzdG9yZXMgYW4gZW1wdHkg
Y29va2llLCB3aGljaCB3b3VsZCBiZSBzZW50IGFzICJDb29raWU6ID0iLgogICAgIGlmICh2YWx1
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29r
aWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBB
U1NFUlQoY29va2llU3RvcmFnZSk7Ci0KICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybENGKEFk
b3B0Q0YsIHVybC5jcmVhdGVDRlVSTCgpKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGZpcnN0
UGFydHlGb3JDb29raWVzQ0YoQWRvcHRDRiwgZmlyc3RQYXJ0eS5jcmVhdGVDRlVSTCgpKTsKIApA
QCAtMTE5LDU0ICsxMTUsNDMgQEAgdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29u
dGV4dAogICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQ
Q29va2llQ3JlYXRlV2l0aFJlc3BvbnNlSGVhZGVyRmllbGRzKGtDRkFsbG9jYXRvckRlZmF1bHQs
CiAgICAgICAgIGhlYWRlckZpZWxkc0NGLmdldCgpLCB1cmxDRi5nZXQoKSkpOwogCi0gICAgQ0ZI
VFRQQ29va2llU3RvcmFnZVNldENvb2tpZXMoY29va2llU3RvcmFnZS5nZXQoKSwgZmlsdGVyQ29v
a2llcyhjb29raWVzQ0YuZ2V0KCkpLmdldCgpLCB1cmxDRi5nZXQoKSwgZmlyc3RQYXJ0eUZvckNv
b2tpZXNDRi5nZXQoKSk7CisgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZXMoc2Vzc2lv
bi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIGZpbHRlckNvb2tpZXMoY29va2llc0NGLmdldCgpKS5n
ZXQoKSwgdXJsQ0YuZ2V0KCksIGZpcnN0UGFydHlGb3JDb29raWVzQ0YuZ2V0KCkpOwogfQogCi1T
dHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VS
TCYsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBS
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQg
PyBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29r
aWVTdG9yYWdlKCk7Ci0gICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwotCiAgICAgUmV0YWluUHRy
PENGVVJMUmVmPiB1cmxDRihBZG9wdENGLCB1cmwuY3JlYXRlQ0ZVUkwoKSk7CiAKICAgICBib29s
IHNlY3VyZSA9IHVybC5wcm90b2NvbElzKCJodHRwcyIpOwotICAgIFJldGFpblB0cjxDRkFycmF5
UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzRm9y
VVJMKGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHVybENGLmdldCgpLCBzZWN1cmUpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZBcnJheVJlZj4gY29va2llc0NGKEFkb3B0Q0YsIENGSFRUUENvb2tpZVN0b3JhZ2VD
b3B5Q29va2llc0ZvclVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsQ0YuZ2V0
KCksIHNlY3VyZSkpOwogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGhlYWRlckNGKEFk
b3B0Q0YsIENGSFRUUENvb2tpZUNvcHlSZXF1ZXN0SGVhZGVyRmllbGRzKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGZpbHRlckNvb2tpZXMoY29va2llc0NGLmdldCgpKS5nZXQoKSkpOwogICAgIHJldHVy
biAoQ0ZTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoaGVhZGVyQ0YuZ2V0KCksIHNfY29v
a2llQ0YpOwogfQogCi1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBL
VVJMJiB1cmwpCitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3Qg
S1VSTCYgdXJsKQogewotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29r
aWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQp
IDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFn
ZSk7Ci0KICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybENGKEFkb3B0Q0YsIHVybC5jcmVhdGVD
RlVSTCgpKTsKIAogICAgIGJvb2wgc2VjdXJlID0gdXJsLnByb3RvY29sSXMoImh0dHBzIik7Ci0g
ICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVT
dG9yYWdlQ29weUNvb2tpZXNGb3JVUkwoY29va2llU3RvcmFnZS5nZXQoKSwgdXJsQ0YuZ2V0KCks
IHNlY3VyZSkpOworICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwg
Q0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzRm9yVVJMKHNlc3Npb24uY29va2llU3RvcmFn
ZSgpLmdldCgpLCB1cmxDRi5nZXQoKSwgc2VjdXJlKSk7CiAgICAgUmV0YWluUHRyPENGRGljdGlv
bmFyeVJlZj4gaGVhZGVyQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llQ29weVJlcXVlc3RIZWFkZXJG
aWVsZHMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY29va2llc0NGLmdldCgpKSk7CiAgICAgcmV0dXJu
IChDRlN0cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShoZWFkZXJDRi5nZXQoKSwgc19jb29r
aWVDRik7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQorYm9v
bCBjb29raWVzRW5hYmxlZChOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQogewotICAgIFJldGFpblB0
cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJl
bnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3Jh
Z2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7Ci0KLSAgICBDRkhUVFBDb29raWVTdG9y
YWdlQWNjZXB0UG9saWN5IHBvbGljeSA9IENGSFRUUENvb2tpZVN0b3JhZ2VHZXRDb29raWVBY2Nl
cHRQb2xpY3koY29va2llU3RvcmFnZS5nZXQoKSk7CisgICAgQ0ZIVFRQQ29va2llU3RvcmFnZUFj
Y2VwdFBvbGljeSBwb2xpY3kgPSBDRkhUVFBDb29raWVTdG9yYWdlR2V0Q29va2llQWNjZXB0UG9s
aWN5KHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpKTsKICAgICByZXR1cm4gcG9saWN5ID09
IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFp
biB8fCBwb2xpY3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeUFsd2F5czsKIH0K
IAotYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBL
VVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3
Q29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxD
b29raWU+JiByYXdDb29raWVzKQogewogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKLSAgICBSZXRh
aW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBj
dXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVT
dG9yYWdlKCk7Ci0gICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwogCiAgICAgUmV0YWluUHRyPENG
VVJMUmVmPiB1cmxDRihBZG9wdENGLCB1cmwuY3JlYXRlQ0ZVUkwoKSk7CiAKICAgICBib29sIHNl
bmRTZWN1cmVDb29raWVzID0gdXJsLnByb3RvY29sSXMoImh0dHBzIik7Ci0gICAgUmV0YWluUHRy
PENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVTdG9yYWdlQ29weUNv
b2tpZXNGb3JVUkwoY29va2llU3RvcmFnZS5nZXQoKSwgdXJsQ0YuZ2V0KCksIHNlbmRTZWN1cmVD
b29raWVzKSk7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBD
RkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdl
KCkuZ2V0KCksIHVybENGLmdldCgpLCBzZW5kU2VjdXJlQ29va2llcykpOwogCiAgICAgQ0ZJbmRl
eCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChjb29raWVzQ0YuZ2V0KCkpOwogICAgIHJhd0Nvb2tp
ZXMucmVzZXJ2ZUNhcGFjaXR5KGNvdW50KTsKQEAgLTE5MCwxMCArMTc1LDkgQEAgYm9vbCBnZXRS
YXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjbwogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lKQog
ewotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0g
Y29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENG
SFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7CisgICAgUmV0
YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBzZXNzaW9uLmNv
b2tpZVN0b3JhZ2UoKTsKIAogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsQ0YoQWRvcHRDRiwg
dXJsLmNyZWF0ZUNGVVJMKCkpOwogCkBAIC0yMTAsMTIgKzE5NCw5IEBAIHZvaWQgZGVsZXRlQ29v
a2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb24KICAgICB9CiB9CiAKLXZvaWQgZ2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIEhhc2hTZXQ8U3RyaW5nPiYg
aG9zdG5hbWVzKQordm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQogewotICAgIFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1
cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0
b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZB
cnJheVJlZj4gY29va2llc0NGKEFkb3B0Q0YsIENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2ll
cyhjb29raWVTdG9yYWdlLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tp
ZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXMoc2Vzc2lvbi5jb29r
aWVTdG9yYWdlKCkuZ2V0KCkpKTsKICAgICBpZiAoIWNvb2tpZXNDRikKICAgICAgICAgcmV0dXJu
OwogCkBAIC0yMjcsMTAgKzIwOCw5IEBAIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0
d29ya2luZ0MKICAgICB9CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdv
cmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQordm9pZCBkZWxl
dGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBTdHJpbmcmIGhvc3RuYW1lKQogewotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdl
UmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdl
KGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29v
a2llU3RvcmFnZSk7CisgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tp
ZVN0b3JhZ2UgPSBzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKTsKIAogICAgIFJldGFpblB0cjxDRkFy
cmF5UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVz
KGNvb2tpZVN0b3JhZ2UuZ2V0KCkpKTsKICAgICBpZiAoIWNvb2tpZXNDRikKQEAgLTI0NSwxMiAr
MjI1LDkgQEAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZwogICAgIH0K
IH0KIAotdm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQor
dm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKIHsK
LSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNv
bnRleHQgPyBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhU
VFBDb29raWVTdG9yYWdlKCk7Ci0gICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwotCi0gICAgQ0ZI
VFRQQ29va2llU3RvcmFnZURlbGV0ZUFsbENvb2tpZXMoY29va2llU3RvcmFnZS5nZXQoKSk7Cisg
ICAgQ0ZIVFRQQ29va2llU3RvcmFnZURlbGV0ZUFsbENvb2tpZXMoc2Vzc2lvbi5jb29raWVTdG9y
YWdlKCkuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdl
Q0ZOZXQuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkg
KzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb29raWVTdG9yYWdlLmgi
CiAKLSNpbmNsdWRlICJDb29raWVTdG9yYWdlQ0ZOZXQuaCIKLQotI2luY2x1ZGUgIlJlc291cmNl
SGFuZGxlLmgiCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTQ4LDU2ICs0Niw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFBMQVRGT1JNKFdJTikKIAotc3RhdGljIFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiYgY29va2llU3RvcmFnZU92ZXJyaWRlKCkKLXsK
LSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVm
PiwgY29va2llU3RvcmFnZSwgKCkpOwotICAgIHJldHVybiBjb29raWVTdG9yYWdlOwotfQotCi0j
ZW5kaWYKLQotUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGN1cnJlbnRDRkhUVFBD
b29raWVTdG9yYWdlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQotewotI2lmIFBMQVRGT1JN
KFdJTikKLSAgICBpZiAoUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiBvdmVycmlk
ZSA9IGNvb2tpZVN0b3JhZ2VPdmVycmlkZSgpKQotICAgICAgICByZXR1cm4gb3ZlcnJpZGU7Ci0j
ZW5kaWYKLQotICAgIGlmIChDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHNlc3Npb24gPSBjb250ZXh0
LT5zdG9yYWdlU2Vzc2lvbigpKQotICAgICAgICByZXR1cm4gUmV0YWluUHRyPENGSFRUUENvb2tp
ZVN0b3JhZ2VSZWY+KEFkb3B0Q0YsIHdrQ29weUhUVFBDb29raWVTdG9yYWdlKHNlc3Npb24pKTsK
LQotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgcmV0dXJuIHdrR2V0RGVmYXVsdEhUVFBDb29raWVT
dG9yYWdlKCk7Ci0jZWxzZQotICAgIC8vIFdoZW4gdXNpbmcgTlNVUkxDb25uZWN0aW9uLCB3ZSBh
bHNvIHVzZSBpdHMgc2hhcmVkIGNvb2tpZSBzdG9yYWdlLgotICAgIHJldHVybiAwOwotI2VuZGlm
Ci19Ci0KLVJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBkZWZhdWx0Q0ZIVFRQQ29v
a2llU3RvcmFnZSgpCi17Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIGlmIChSZXRhaW5QdHI8Q0ZI
VFRQQ29va2llU3RvcmFnZVJlZj4mIG92ZXJyaWRlID0gY29va2llU3RvcmFnZU92ZXJyaWRlKCkp
Ci0gICAgICAgIHJldHVybiBvdmVycmlkZTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+ZGVmYXVsdENvb2tpZVN0b3JhZ2UoKTsK
LX0KLQotI2lmIFBMQVRGT1JNKFdJTikKLQotdm9pZCBvdmVycmlkZUNvb2tpZVN0b3JhZ2UoQ0ZI
VFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKQotewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7Ci0gICAgLy8gRklYTUU6IFdoeSBkb24ndCB3ZSByZXRhaW4gaXQ/IFRoZSBvbmx5
IGNhbGxlciBpcyBhbiBBUEkgbWV0aG9kIHRoYXQgdGFrZXMgY29va2llIHN0b3JhZ2UgYXMgYSBy
YXcgYXJndW1lbnQuCi0gICAgY29va2llU3RvcmFnZU92ZXJyaWRlKCkuYWRvcHRDRihjb29raWVT
dG9yYWdlKTsKLX0KLQotQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBvdmVycmlkZW5Db29raWVTdG9y
YWdlKCkKLXsKLSAgICByZXR1cm4gY29va2llU3RvcmFnZU92ZXJyaWRlKCkuZ2V0KCk7Ci19Ci0K
IHN0YXRpYyB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkT25NYWluVGhyZWFkKHZvaWQqKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC0xMzAsNyArNzgsNyBAQCB2b2lkIHN0YXJ0
T2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpCiAgICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBjb29r
aWVTdG9yYWdlT2JzZXJ2ZXJSdW5Mb29wKCk7CiAgICAgQVNTRVJUKHJ1bkxvb3ApOwogCi0gICAg
UmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBkZWZhdWx0
Q0ZIVFRQQ29va2llU3RvcmFnZSgpOworICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdl
UmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFn
ZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCk7CiAgICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwog
CiAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNjaGVkdWxlV2l0aFJ1bkxvb3AoY29va2llU3RvcmFn
ZS5nZXQoKSwgcnVuTG9vcCwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKQEAgLTE0NCw3ICs5Miw3
IEBAIHZvaWQgc3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKQogICAgIENGUnVuTG9vcFJlZiBy
dW5Mb29wID0gY29va2llU3RvcmFnZU9ic2VydmVyUnVuTG9vcCgpOwogICAgIEFTU0VSVChydW5M
b29wKTsKIAotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9y
YWdlID0gZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKKyAgICBSZXRhaW5QdHI8Q0ZIVFRQ
Q29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpOwogICAgIEFTU0VSVChjb29r
aWVTdG9yYWdlKTsKIAogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VSZW1vdmVPYnNlcnZlcihjb29r
aWVTdG9yYWdlLmdldCgpLCBydW5Mb29wLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUsIG5vdGlmeUNv
b2tpZXNDaGFuZ2VkLCAwKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvQ29va2llU3RvcmFnZUNGTmV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuaAkocmV2aXNpb24gMTM4NDA3KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBDb29r
aWVTdG9yYWdlQ0ZOZXRfaAotI2RlZmluZSBDb29raWVTdG9yYWdlQ0ZOZXRfaAotCi0jaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgotCi10eXBlZGVmIHN0cnVjdCBPcGFxdWVDRkhUVFBDb29raWVT
dG9yYWdlKiAgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBOZXR3b3JraW5nQ29udGV4dDsKLQotUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWY+IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKE5ldHdvcmtpbmdDb250ZXh0Kik7IC8v
IFdpbGwgYmUgbnVsbCB3aGVuIHVzaW5nIHNoYXJlZCBOU0hUVFBDb29raWVTdG9yYWdlLgotUmV0
YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdl
KCk7IC8vIERvZXNuJ3QgdGFrZSBjdXJyZW50IHNlc3Npb24gaW50byBhY2NvdW50LgotCi0jaWYg
UExBVEZPUk0oV0lOKQotLy8gTmVlZGVkIGZvciBXZWJLaXQxIEFQSSBvbmx5Lgotdm9pZCBvdmVy
cmlkZUNvb2tpZVN0b3JhZ2UoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZik7Ci1DRkhUVFBDb29raWVT
dG9yYWdlUmVmIG92ZXJyaWRlbkNvb2tpZVN0b3JhZ2UoKTsKLSNlbmRpZgotCi19Ci0KLSNlbmRp
ZiAvLyBDb29raWVTdG9yYWdlQ0ZOZXRfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25D
Rk5ldC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisKKyNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNl
LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitOZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbihDRlVSTFN0b3Jh
Z2VTZXNzaW9uUmVmIHBsYXRmb3JtU2Vzc2lvbikKKyAgICA6IG1fcGxhdGZvcm1TZXNzaW9uKHBs
YXRmb3JtU2Vzc2lvbikKKyAgICAsIG1faXNQcml2YXRlKGZhbHNlKQoreworfQorCitzdGF0aWMg
T3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4mIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Np
b24oKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbj4sIHNlc3Npb24sICgpKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKK30KKwordm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKQoreworICAgIC8v
IFNldCBhIHByaXZhdGUgc2Vzc2lvbiBmb3IgdGVzdGluZyB0byBhdm9pZCBpbnRlcmZlcmluZyB3
aXRoIGdsb2JhbCBjb29raWVzLiBUaGlzIHNob3VsZCBiZSBkaWZmZXJlbnQgZnJvbSBwcml2YXRl
IGJyb3dzaW5nIHNlc3Npb24uCisgICAgLy8gRklYTUU6IEl0IGxvb2tzIGxpa2UgY3JlYXRpbmcg
YSBuZXcgc2Vzc2lvbiB3aXRoIHRoZSBzYW1lIGlkZW50aWZpZXIgbWF5IGJlIGp1c3QgY3JlYXRp
bmcgYSByZWZlcmVuY2UgdG8gdGhlIHNhbWUgc3RvcmFnZS4gU2VlIDxyZGFyOi8vcHJvYmxlbS8x
MTU3MTQ1MD4gYW5kIDxyZGFyOi8vcHJvYmxlbS8xMjM4NDM4MD4uCisjaWYgUExBVEZPUk0oTUFD
KQorICAgIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSA9IGFkb3B0UHRyKG5ldyBOZXR3
b3JrU3RvcmFnZVNlc3Npb24od2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTVFIoIlBy
aXZhdGUgV2ViS2l0IFNlc3Npb24iKSkpKTsKKyNlbHNlCisgICAgZGVmYXVsdE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbigpID0gYWRvcHRQdHIobmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbih3a0NyZWF0
ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlNUUigiUHJpdmF0ZSBXZWJLaXQgU2Vzc2lvbiIpLCBk
ZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCktPnBsYXRmb3JtU2Vzc2lvbigpKSkpOworI2Vu
ZGlmCit9CisKKyNpZiBQTEFURk9STShXSU4pCitzdGF0aWMgUmV0YWluUHRyPENGSFRUUENvb2tp
ZVN0b3JhZ2VSZWY+JiBjb29raWVTdG9yYWdlT3ZlcnJpZGUoKQoreworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+LCBjb29raWVTdG9yYWdl
LCAoKSk7CisgICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2U7Cit9CisKK3ZvaWQgb3ZlcnJpZGVDb29r
aWVTdG9yYWdlKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSkKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIC8vIEZJWE1FOiBXaHkgZG9uJ3Qgd2UgcmV0YWlu
IGl0PyBUaGUgb25seSBjYWxsZXIgaXMgYW4gQVBJIG1ldGhvZCB0aGF0IHRha2VzIGNvb2tpZSBz
dG9yYWdlIGFzIGEgcmF3IGFyZ3VtZW50LgorICAgIGNvb2tpZVN0b3JhZ2VPdmVycmlkZSgpLmFk
b3B0Q0YoY29va2llU3RvcmFnZSk7Cit9CisKK0NGSFRUUENvb2tpZVN0b3JhZ2VSZWYgb3ZlcnJp
ZGVuQ29va2llU3RvcmFnZSgpCit7CisgICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2VPdmVycmlkZSgp
LmdldCgpOworfQorI2VuZGlmCisKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKQoreworICAgIHJldHVybiAqZGVmYXVs
dE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOworfQorCitQYXNzT3duUHRyPE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckJhc2UpCit7CisgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBjZklkZW50aWZpZXIgPSBTdHJpbmcoaWRlbnRpZmllckJhc2UgKyAiLlByaXZhdGVC
cm93c2luZyIpLmNyZWF0ZUNGU3RyaW5nKCk7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgT3du
UHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gc2Vzc2lvbiA9IGFkb3B0UHRyKG5ldyBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24od2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVy
LmdldCgpKSkpOworI2Vsc2UKKyAgICBPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBzZXNz
aW9uID0gYWRvcHRQdHIobmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbih3a0NyZWF0ZVByaXZhdGVT
dG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCksIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNl
c3Npb24oKS0+cGxhdGZvcm1TZXNzaW9uKCkpKSk7CisjZW5kaWYKKyAgICBzZXNzaW9uLT5tX2lz
UHJpdmF0ZSA9IHRydWU7CisKKyAgICByZXR1cm4gc2Vzc2lvbi5yZWxlYXNlKCk7Cit9CisKK1Jl
dGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZVN0b3JhZ2UoKSBjb25zdAoreworI2lmIFBMQVRGT1JNKFdJTikKKyAgICBpZiAoUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiBvdmVycmlkZSA9IGNvb2tpZVN0b3JhZ2VPdmVy
cmlkZSgpKQorICAgICAgICByZXR1cm4gb3ZlcnJpZGU7CisjZW5kaWYKKworICAgIGlmIChtX3Bs
YXRmb3JtU2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9y
YWdlUmVmPihBZG9wdENGLCB3a0NvcHlIVFRQQ29va2llU3RvcmFnZShtX3BsYXRmb3JtU2Vzc2lv
bi5nZXQoKSkpOworCisjaWYgVVNFKENGTkVUV09SSykKKyAgICByZXR1cm4gd2tHZXREZWZhdWx0
SFRUUENvb2tpZVN0b3JhZ2UoKTsKKyNlbHNlCisgICAgLy8gV2hlbiB1c2luZyBOU1VSTENvbm5l
Y3Rpb24sIHdlIGFsc28gdXNlIGl0cyBzaGFyZWQgY29va2llIHN0b3JhZ2UuCisgICAgcmV0dXJu
IDA7CisjZW5kaWYKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCShyZXZpc2lvbiAx
Mzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbkNGLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aCIKLSNpbmNsdWRlICJDb29raWVTdG9yYWdlQ0ZOZXQuaCIKICNpbmNsdWRlICJDcmVkZW50aWFs
U3RvcmFnZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAi
Rm9ybURhdGFTdHJlYW1DRk5ldC5oIgpAQCAtMzgsNiArMzcsNyBAQAogI2luY2x1ZGUgIkxvYWRl
clJ1bkxvb3BDRi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJl
Z2lzdHJ5LmgiCisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZXNv
dXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZVJlc3BvbnNlLmgiCkBAIC0xNjUsNyArMTY1LDcgQEAgc3RhdGljIENGVVJMUmVx
dWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQwogICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBuZXdNZXRob2QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdE1ldGhv
ZChjZlJlcXVlc3QpKTsKICAgICAgICAgICAgIGlmIChDRlN0cmluZ0NvbXBhcmVXaXRoT3B0aW9u
cyhsYXN0SFRUUE1ldGhvZC5nZXQoKSwgbmV3TWV0aG9kLmdldCgpLCBDRlJhbmdlTWFrZSgwLCBD
RlN0cmluZ0dldExlbmd0aChsYXN0SFRUUE1ldGhvZC5nZXQoKSkpLCBrQ0ZDb21wYXJlQ2FzZUlu
c2Vuc2l0aXZlKSkgewogICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRk11dGFibGVVUkxSZXF1
ZXN0UmVmPiBtdXRhYmxlUmVxdWVzdChBZG9wdENGLCBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxl
Q29weSgwLCBjZlJlcXVlc3QpKTsKLSAgICAgICAgICAgICAgICB3a1NldFJlcXVlc3RTdG9yYWdl
U2Vzc2lvbihoYW5kbGUtPnN0b3JhZ2VTZXNzaW9uKCksIG11dGFibGVSZXF1ZXN0LmdldCgpKTsK
KyAgICAgICAgICAgICAgICB3a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbihoYW5kbGUtPnN0b3Jh
Z2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCksIG11dGFibGVSZXF1ZXN0LmdldCgpKTsKICAg
ICAgICAgICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWVzdE1ldGhvZChtdXRhYmxlUmVx
dWVzdC5nZXQoKSwgbGFzdEhUVFBNZXRob2QuZ2V0KCkpOwogCiAgICAgICAgICAgICAgICAgRm9y
bURhdGEqIGJvZHkgPSBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLmh0dHBCb2R5KCk7CkBAIC0zOTks
NyArMzk5LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llUAogewog
ICAgIC8vIElmIGEgVVJMIGFscmVhZHkgaGFzIGNvb2tpZXMsIHRoZW4gd2UnbGwgcmVsYXggdGhl
IDNyZCBwYXJ0eSBjb29raWUgcG9saWN5IGFuZCBhY2NlcHQgbmV3IGNvb2tpZXMuCiAKLSAgICBS
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY2ZDb29raWVTdG9yYWdlID0gY3VycmVu
dENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCk7CisgICAgUmV0YWluUHRyPENGSFRUUENvb2tp
ZVN0b3JhZ2VSZWY+IGNmQ29va2llU3RvcmFnZSA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCku
Y29va2llU3RvcmFnZSgpOwogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kgY29v
a2llQWNjZXB0UG9saWN5ID0gQ0ZIVFRQQ29va2llU3RvcmFnZUdldENvb2tpZUFjY2VwdFBvbGlj
eShjZkNvb2tpZVN0b3JhZ2UuZ2V0KCkpOwogCiAgICAgaWYgKGNvb2tpZUFjY2VwdFBvbGljeSAh
PSBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21h
aW4pCkBAIC01MDYsNyArNTA2LDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoTmV0d29y
a2luZ0NvbgogICAgIGlmICghY29udGV4dC0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBkLT5tX3N0b3JhZ2VTZXNzaW9uID0gY29udGV4dC0+c3RvcmFnZVNlc3Npb24o
KTsKKyAgICBkLT5tX3N0b3JhZ2VTZXNzaW9uID0gY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5w
bGF0Zm9ybVNlc3Npb24oKTsKIAogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Ug
PSAhY2xpZW50KCkgfHwgY2xpZW50KCktPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKHRoaXMp
OwogCkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNl
U3luY2hybwogCiAgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBhZG9wdFJlZihu
ZXcgUmVzb3VyY2VIYW5kbGUocmVxdWVzdCwgY2xpZW50LmdldCgpLCBmYWxzZSAvKmRlZmVyc0xv
YWRpbmcqLywgdHJ1ZSAvKnNob3VsZENvbnRlbnRTbmlmZiovKSk7CiAKLSAgICBoYW5kbGUtPmQt
Pm1fc3RvcmFnZVNlc3Npb24gPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpOworICAgIGhhbmRs
ZS0+ZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZv
cm1TZXNzaW9uKCk7CiAKICAgICBpZiAoaGFuZGxlLT5kLT5tX3NjaGVkdWxlZEZhaWx1cmVUeXBl
ICE9IE5vRmFpbHVyZSkgewogICAgICAgICBlcnJvciA9IGNvbnRleHQtPmJsb2NrZWRFcnJvcihy
ZXF1ZXN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0v
Q29va2llSmFyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMzg0
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL0Nvb2tpZUph
ckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNTUgKzQxLDU1IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNv
b2tpZXMsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpCiB7Ci0gICAg
aWYgKCFjb250ZXh0KQorICAgIGlmICghc2Vzc2lvbi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBXZWJLaXQ6OldlYkNvb2tpZUphciogY29va2llSmFyID0gY29udGV4dC0+Y29va2ll
SmFyKCk7CisgICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9IHNlc3Npb24uY29u
dGV4dCgpLT5jb29raWVKYXIoKTsKICAgICBpZiAoY29va2llSmFyKQogICAgICAgICBjb29raWVK
YXItPnNldENvb2tpZSh1cmwsIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb29raWVTdHIpOwogfQog
Ci1TdHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3Qg
S1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29r
aWVzRm9yRE9NKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBpZiAoIWNvbnRleHQp
CisgICAgaWYgKCFzZXNzaW9uLmNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
ICAgIFN0cmluZyByZXN1bHQ7Ci0gICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9
IGNvbnRleHQtPmNvb2tpZUphcigpOworICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVK
YXIgPSBzZXNzaW9uLmNvbnRleHQoKS0+Y29va2llSmFyKCk7CiAgICAgaWYgKGNvb2tpZUphcikK
ICAgICAgICAgcmVzdWx0ID0gY29va2llSmFyLT5jb29raWVzKHVybCwgZmlyc3RQYXJ0eUZvckNv
b2tpZXMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgaWYgKCFj
b250ZXh0KQorICAgIGlmICghc2Vzc2lvbi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKICAgICBTdHJpbmcgcmVzdWx0OwotICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29r
aWVKYXIgPSBjb250ZXh0LT5jb29raWVKYXIoKTsKKyAgICBXZWJLaXQ6OldlYkNvb2tpZUphciog
Y29va2llSmFyID0gc2Vzc2lvbi5jb250ZXh0KCktPmNvb2tpZUphcigpOwogICAgIGlmIChjb29r
aWVKYXIpCiAgICAgICAgIHJlc3VsdCA9IGNvb2tpZUphci0+Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUodXJsLCBmaXJzdFBhcnR5Rm9yQ29va2llcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29u
c3QgS1VSTCYgY29va2llVVJMLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcykKK2Jv
b2wgY29va2llc0VuYWJsZWQoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiBjb29raWVVUkwsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzKQogewogICAg
IGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgaWYgKCFjb250ZXh0KQorICAgIGlmICghc2Vzc2lv
bi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgV2ViS2l0OjpXZWJDb29r
aWVKYXIqIGNvb2tpZUphciA9IGNvbnRleHQtPmNvb2tpZUphcigpOworICAgIFdlYktpdDo6V2Vi
Q29va2llSmFyKiBjb29raWVKYXIgPSBzZXNzaW9uLmNvbnRleHQoKS0+Y29va2llSmFyKCk7CiAg
ICAgaWYgKGNvb2tpZUphcikKICAgICAgICAgcmVzdWx0ID0gY29va2llSmFyLT5jb29raWVzRW5h
YmxlZChjb29raWVVUkwsIGZpcnN0UGFydHlGb3JDb29raWVzKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEtVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxD
b29raWU+JiByYXdDb29raWVzKQorYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtV
UkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmF3Q29va2llcy5j
bGVhcigpOwotICAgIGlmICghY29udGV4dCkKKyAgICBpZiAoIXNlc3Npb24uY29udGV4dCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgV2ViS2l0OjpXZWJWZWN0b3I8V2ViS2l0OjpXZWJD
b29raWU+IHdlYkNvb2tpZXM7Ci0gICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9
IGNvbnRleHQtPmNvb2tpZUphcigpOworICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVK
YXIgPSBzZXNzaW9uLmNvbnRleHQoKS0+Y29va2llSmFyKCk7CiAgICAgaWYgKGNvb2tpZUphcikK
ICAgICAgICAgY29va2llSmFyLT5yYXdDb29raWVzKHVybCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMs
IHdlYkNvb2tpZXMpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB3ZWJDb29raWVzLnNp
emUoKTsgKytpKSB7CkBAIC0xMDAsMjYgKzEwMCwyNiBAQCBib29sIGdldFJhd0Nvb2tpZXMoTmV0
d29ya2luZ0NvbnRleHQqIGNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgZGVsZXRlQ29v
a2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgY29va2llTmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7
Ci0gICAgaWYgKCFjb250ZXh0KQorICAgIGlmICghc2Vzc2lvbi5jb250ZXh0KCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBXZWJLaXQ6OldlYkNvb2tpZUphciogY29va2llSmFyID0gY29udGV4dC0+
Y29va2llSmFyKCk7CisgICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9IHNlc3Np
b24uY29udGV4dCgpLT5jb29raWVKYXIoKTsKICAgICBpZiAoY29va2llSmFyKQogICAgICAgICBj
b29raWVKYXItPmRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUpOwogfQogCi12b2lkIGdldEhv
c3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiAvKmNvbnRleHQqLywgSGFzaFNl
dDxTdHJpbmc+JiAvKmhvc3RuYW1lcyovKQordm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBIYXNoU2V0PFN0cmluZz4mIC8qaG9zdG5hbWVzKi8pCiB7
CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxldGVDb29r
aWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZ0NvbnRleHQqIC8qY29udGV4dCovLCBjb25zdCBTdHJp
bmcmIC8qaG9zdG5hbWUqLykKK3ZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYgLypob3N0bmFtZSovKQogewogICAgIC8vIEZJ
WE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRlQWxsQ29va2llcyhOZXR3
b3JraW5nQ29udGV4dCogLypjb250ZXh0Ki8pCit2b2lkIGRlbGV0ZUFsbENvb2tpZXMoTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJikKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9SZXNvdXJj
ZUhhbmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jaHJvbWl1bS9SZXNvdXJjZUhhbmRsZS5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3VyY2VIYW5kbGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKIAorI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhh
bmRsZUludGVybmFsLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1
cmwuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDUwICsyNyw1
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiBjb29raWVKYXI7CiAKLXZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQordm9p
ZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwg
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGNvb2tpZUphci5z
ZXQodXJsLnN0cmluZygpLCB2YWx1ZSk7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKE5ldHdv
cmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29r
aWVzRm9yRE9NKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJM
JiB1cmwpCiB7CiAgICAgcmV0dXJuIGNvb2tpZUphci5nZXQodXJsLnN0cmluZygpKTsKIH0KIAot
U3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQorU3Ry
aW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgLy8g
RklYTUU6IGluY2x1ZGUgSHR0cE9ubHkgY29va2llLgogICAgIHJldHVybiBjb29raWVKYXIuZ2V0
KHVybC5zdHJpbmcoKSk7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVy
bCovKQorYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBL
VVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKIHsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLywgVmVjdG9y
PENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8s
IFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGlt
cGxlbWVudGVkCiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIHJldHVybiBmYWxzZTsgLy8g
cmV0dXJuIHRydWUgd2hlbiBpbXBsZW1lbnRlZAogfQogCi12b2lkIGRlbGV0ZUNvb2tpZShOZXR3
b3JraW5nQ29udGV4dCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQordm9pZCBkZWxldGVD
b29raWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYp
CiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBnZXRIb3N0
bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCosIEhhc2hTZXQ8U3RyaW5nPiYgaG9z
dG5hbWVzKQordm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKIHsKICAgICAvLyBGSVhNRTogTm90IHll
dCBpbXBsZW1lbnRlZAogfQogCi12b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShOZXR3b3Jr
aW5nQ29udGV4dCosIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZShOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1l
KQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRl
QWxsQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCopCit2b2lkIGRlbGV0ZUFsbENvb2tpZXMoTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJikKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRl
ZAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNl
SGFuZGxlQ3VybC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5k
bGUuaCIKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiTmV0
d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZU1hbmFn
ZXIuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUph
ck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9Db29raWVKYXJNYWMubW0JKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEs
OSArMzEsOCBAQAogI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJDb29raWUu
aCIKICNpbXBvcnQgIkNvb2tpZVN0b3JhZ2UuaCIKLSNpbXBvcnQgIkNvb2tpZVN0b3JhZ2VDRk5l
dC5oIgogI2ltcG9ydCAiS1VSTC5oIgotI2ltcG9ydCAiTmV0d29ya2luZ0NvbnRleHQuaCIKKyNp
bXBvcnQgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUlu
dGVyZmFjZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MiwzMSArNjEsMjkgQEAgc3Rh
dGljIFJldGFpblB0cjxOU0FycmF5PiBmaWx0ZXJDb29raWVzKAogICAgIHJldHVybiBmaWx0ZXJl
ZENvb2tpZXM7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JE
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiwgY29u
c3QgS1VSTCYgdXJsKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAg
IFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4
dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENv
b2tpZVN0b3JhZ2UoKTsKLSAgICBOU0FycmF5ICpjb29raWVzID0gd2tIVFRQQ29va2llc0ZvclVS
TChjb29raWVTdG9yYWdlLmdldCgpLCB1cmwpOworICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hU
VFBDb29raWVzRm9yVVJMKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCB1cmwpOwogICAg
IHJldHVybiBbW05TSFRUUENvb2tpZSByZXF1ZXN0SGVhZGVyRmllbGRzV2l0aENvb2tpZXM6Zmls
dGVyQ29va2llcyhjb29raWVzKS5nZXQoKV0gb2JqZWN0Rm9yS2V5OkAiQ29va2llIl07CiAKICAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAot
U3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQorU3Ry
aW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVy
bCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBSZXRhaW5QdHI8
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBjdXJyZW50
Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdl
KCk7Ci0gICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXNGb3JVUkwoY29va2llU3Rv
cmFnZS5nZXQoKSwgdXJsKTsKKyAgICBOU0FycmF5ICpjb29raWVzID0gd2tIVFRQQ29va2llc0Zv
clVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsKTsKICAgICByZXR1cm4gW1tO
U0hUVFBDb29raWUgcmVxdWVzdEhlYWRlckZpZWxkc1dpdGhDb29raWVzOmNvb2tpZXNdIG9iamVj
dEZvcktleTpAIkNvb2tpZSJdOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKICAg
ICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLXZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikKIHsKICAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKQEAgLTEwMywzMSArMTAwLDI4IEBAIHZvaWQgc2V0Q29v
a2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQKICAgICBSZXRhaW5QdHI8TlNBcnJheT4gZmls
dGVyZWRDb29raWVzID0gZmlsdGVyQ29va2llcyhbTlNIVFRQQ29va2llIGNvb2tpZXNXaXRoUmVz
cG9uc2VIZWFkZXJGaWVsZHM6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDpjb29r
aWVTdHJpbmcgZm9yS2V5OkAiU2V0LUNvb2tpZSJdIGZvclVSTDpjb29raWVVUkxdKTsKICAgICBB
U1NFUlQoW2ZpbHRlcmVkQ29va2llcy5nZXQoKSBjb3VudF0gPD0gMSk7CiAKLSAgICBSZXRhaW5Q
dHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBjdXJy
ZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVTdG9y
YWdlKCk7Ci0gICAgd2tTZXRIVFRQQ29va2llc0ZvclVSTChjb29raWVTdG9yYWdlLmdldCgpLCBm
aWx0ZXJlZENvb2tpZXMuZ2V0KCksIGNvb2tpZVVSTCwgZmlyc3RQYXJ0eSk7CisgICAgd2tTZXRI
VFRQQ29va2llc0ZvclVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgZmlsdGVyZWRD
b29raWVzLmdldCgpLCBjb29raWVVUkwsIGZpcnN0UGFydHkpOwogCiAgICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKIH0KIAotYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJs
Ki8pCitib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCiB7
CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRU
UENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwot
ICAgIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSBjb29raWVBY2NlcHRQb2xpY3kgPSBzdGF0aWNf
Y2FzdDxOU0hUVFBDb29raWVBY2NlcHRQb2xpY3k+KHdrR2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShjb29raWVTdG9yYWdlLmdldCgpKSk7CisgICAgTlNIVFRQQ29va2llQWNjZXB0UG9saWN5IGNv
b2tpZUFjY2VwdFBvbGljeSA9IHN0YXRpY19jYXN0PE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeT4o
d2tHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgp
KSk7CiAgICAgcmV0dXJuIGNvb2tpZUFjY2VwdFBvbGljeSA9PSBOU0hUVFBDb29raWVBY2NlcHRQ
b2xpY3lBbHdheXMgfHwgY29va2llQWNjZXB0UG9saWN5ID09IE5TSFRUUENvb2tpZUFjY2VwdFBv
bGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgZ2V0UmF3Q29va2llcyhOZXR3
b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0
IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIGdldFJhd0Nvb2tp
ZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZp
cnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykK
IHsKICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOwogCi0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3Jh
Z2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZh
dWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hUVFBD
b29raWVzRm9yVVJMKGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHVybCk7CisgICAgTlNBcnJheSAqY29v
a2llcyA9IHdrSFRUUENvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCks
IHVybCk7CiAgICAgTlNVSW50ZWdlciBjb3VudCA9IFtjb29raWVzIGNvdW50XTsKICAgICByYXdD
b29raWVzLnJlc2VydmVDYXBhY2l0eShjb3VudCk7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAw
OyBpIDwgY291bnQ7ICsraSkgewpAQCAtMTQxLDEyICsxMzUsMTIgQEAgYm9vbCBnZXRSYXdDb29r
aWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjbwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIGRl
bGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBj
b29raWVOYW1lKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAogICAgIE5T
VVJMICpjb29raWVVUkwgPSB1cmw7Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2Uo
Y29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOworICAgIFJldGFpblB0cjxD
RkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gc2Vzc2lvbi5jb29raWVTdG9y
YWdlKCk7CiAgICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXNGb3JVUkwoY29va2ll
U3RvcmFnZS5nZXQoKSwgY29va2llVVJMKTsKIAogICAgIE5TU3RyaW5nICpjb29raWVOYW1lU3Ry
aW5nID0gY29va2llTmFtZTsKQEAgLTE2MSwxMiArMTU1LDExIEBAIHZvaWQgZGVsZXRlQ29va2ll
KE5ldHdvcmtpbmdDb250ZXh0KiBjb24KICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwog
fQogCi12b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250
ZXh0LCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKK3ZvaWQgZ2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBIYXNoU2V0PFN0cmlu
Zz4mIGhvc3RuYW1lcykKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAg
ICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRl
eHQgPyBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBD
b29raWVTdG9yYWdlKCk7Ci0gICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXMoY29v
a2llU3RvcmFnZS5nZXQoKSk7CisgICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXMo
c2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCkpOwogICAgIAogICAgIGZvciAoTlNIVFRQQ29v
a2llKiBjb29raWUgaW4gY29va2llcykKICAgICAgICAgaG9zdG5hbWVzLmFkZChbY29va2llIGRv
bWFpbl0pOwpAQCAtMTc0LDExICsxNjcsMTEgQEAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2ll
cyhOZXR3b3JraW5nQwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKLXZvaWQg
ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIGhvc3RuYW1lKQordm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQog
ewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIFJldGFpblB0cjxDRkhU
VFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhU
VFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsK
KyAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IHNl
c3Npb24uY29va2llU3RvcmFnZSgpOwogICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hUVFBDb29r
aWVzKGNvb2tpZVN0b3JhZ2UuZ2V0KCkpOwogICAgIGlmICghY29va2llcykKICAgICAgICAgcmV0
dXJuOwpAQCAtMTkxLDEwICsxODQsOSBAQCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShO
ZXR3b3JraW5nCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAotdm9pZCBkZWxl
dGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQordm9pZCBkZWxldGVBbGxD
b29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKIHsKLSAgICBSZXRh
aW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBj
dXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVT
dG9yYWdlKCk7Ci0gICAgd2tEZWxldGVBbGxIVFRQQ29va2llcyhjb29raWVTdG9yYWdlLmdldCgp
KTsKKyAgICB3a0RlbGV0ZUFsbEhUVFBDb29raWVzKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdl
dCgpKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
Q29va2llU3RvcmFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9Db29raWVTdG9yYWdlTWFjLm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVTdG9yYWdlTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw2IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJDb29raWVTdG9yYWdlLmgiCi0jaW5jbHVkZSAiQ29va2llU3RvcmFnZUNGTmV0Lmgi
CiAKICNpbXBvcnQgIlJlc291cmNlSGFuZGxlLmgiCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCShy
ZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9S
ZXNvdXJjZUhhbmRsZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNiBAQAogI2lt
cG9ydCAiQmxvYlJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBv
cnQgIkNvb2tpZVN0b3JhZ2UuaCIKLSNpbXBvcnQgIkNvb2tpZVN0b3JhZ2VDRk5ldC5oIgogI2lt
cG9ydCAiQ3JlZGVudGlhbFN0b3JhZ2UuaCIKICNpbXBvcnQgIkNhY2hlZFJlc291cmNlTG9hZGVy
LmgiCiAjaW1wb3J0ICJFbXB0eVByb3RvY29sRGVmaW5pdGlvbnMuaCIKQEAgLTQyLDYgKzQxLDcg
QEAKICNpbXBvcnQgIkZyYW1lTG9hZGVyLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0
ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW1wb3J0ICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2lt
cG9ydCAiUGFnZS5oIgogI2ltcG9ydCAiUmVzb3VyY2VFcnJvci5oIgogI2ltcG9ydCAiUmVzb3Vy
Y2VSZXNwb25zZS5oIgpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHN0YXRpYyBib29sIHNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZVAKIHsKICAgICAvLyBJZiBhIFVSTCBhbHJlYWR5IGhhcyBjb29raWVz
LCB0aGVuIHdlJ2xsIHJlbGF4IHRoZSAzcmQgcGFydHkgY29va2llIHBvbGljeSBhbmQgYWNjZXB0
IG5ldyBjb29raWVzLgogCi0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNm
Q29va2llU3RvcmFnZSA9IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpOworICAg
IFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjZkNvb2tpZVN0b3JhZ2UgPSBjb250
ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKTsKICAgICBOU0hUVFBDb29raWVB
Y2NlcHRQb2xpY3kgY29va2llQWNjZXB0UG9saWN5ID0gc3RhdGljX2Nhc3Q8TlNIVFRQQ29va2ll
QWNjZXB0UG9saWN5Pih3a0dldEhUVFBDb29raWVBY2NlcHRQb2xpY3koY2ZDb29raWVTdG9yYWdl
LmdldCgpKSk7CiAKICAgICBpZiAoY29va2llQWNjZXB0UG9saWN5ICE9IE5TSFRUUENvb2tpZUFj
Y2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluKQpAQCAtMjMwLDcgKzIzMCw3IEBA
IGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KE5ldHdvcmtpbmdDb24KICAgICBpZiAoIWNvbnRl
eHQtPmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZC0+bV9zdG9yYWdl
U2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCk7CisgICAgZC0+bV9zdG9yYWdlU2Vz
c2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCk7CiAKICAg
ICBBU1NFUlQoIWQtPm1fcHJveHkpOwogICAgIGQtPm1fcHJveHkuYWRvcHROUyh3a0NyZWF0ZU5T
VVJMQ29ubmVjdGlvbkRlbGVnYXRlUHJveHkoKSk7CkBAIC0zOTYsNyArMzk2LDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hybwogCiAgICAgUmVmUHRyPFJlc291cmNl
SGFuZGxlPiBoYW5kbGUgPSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5kbGUocmVxdWVzdCwgY2xp
ZW50LmdldCgpLCBmYWxzZSAvKmRlZmVyc0xvYWRpbmcqLywgdHJ1ZSAvKnNob3VsZENvbnRlbnRT
bmlmZiovKSk7CiAKLSAgICBoYW5kbGUtPmQtPm1fc3RvcmFnZVNlc3Npb24gPSBjb250ZXh0LT5z
dG9yYWdlU2Vzc2lvbigpOworICAgIGhhbmRsZS0+ZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRl
eHQtPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCk7CiAKICAgICBpZiAoY29udGV4
dCAmJiBoYW5kbGUtPmQtPm1fc2NoZWR1bGVkRmFpbHVyZVR5cGUgIT0gTm9GYWlsdXJlKSB7CiAg
ICAgICAgIGVycm9yID0gY29udGV4dC0+YmxvY2tlZEVycm9yKHJlcXVlc3QpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Db29raWVKYXJRdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Db29raWVKYXJRdC5jcHAJ
KHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQv
Q29va2llSmFyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxNSArNDYsMTUgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdGF0aWMgU2hhcmVkQ29va2llSmFyUXQqIHNfc2hhcmVkQ29va2ll
SmFyUXQgPSAwOwogCi12b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgdmFsdWUpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHZhbHVlKQogewotICAgIFFOZXR3b3JrQ29va2llSmFyKiBqYXIgPSBjb250ZXh0
ID8gY29udGV4dC0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBTaGFyZWRD
b29raWVKYXJRdDo6c2hhcmVkKCk7CisgICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IHNlc3Np
b24uY29udGV4dCgpID8gc2Vzc2lvbi5jb250ZXh0KCktPm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCkt
PmNvb2tpZUphcigpIDogU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOwogICAgIGlmICghamFy
KQogICAgICAgICByZXR1cm47CiAKICAgICBRVXJsIHVybEZvckNvb2tpZXModXJsKTsKICAgICBR
VXJsIGZpcnN0UGFydHlVcmwoZmlyc3RQYXJ0eSk7Ci0gICAgaWYgKCF0aGlyZFBhcnR5Q29va2ll
UG9saWN5UGVybWl0cyhjb250ZXh0LCB1cmxGb3JDb29raWVzLCBmaXJzdFBhcnR5VXJsKSkKKyAg
ICBpZiAoIXRoaXJkUGFydHlDb29raWVQb2xpY3lQZXJtaXRzKHNlc3Npb24uY29udGV4dCgpLCB1
cmxGb3JDb29raWVzLCBmaXJzdFBhcnR5VXJsKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUUxp
c3Q8UU5ldHdvcmtDb29raWU+IGNvb2tpZXMgPSBRTmV0d29ya0Nvb2tpZTo6cGFyc2VDb29raWVz
KFFTdHJpbmcodmFsdWUpLnRvTGF0aW4xKCkpOwpAQCAtNjksMTUgKzY5LDE1IEBAIHZvaWQgc2V0
Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQKICAgICBqYXItPnNldENvb2tpZXNGcm9t
VXJsKGNvb2tpZXMsIHVybEZvckNvb2tpZXMpOwogfQogCi1TdHJpbmcgY29va2llc0ZvckRPTShO
ZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAg
UU5ldHdvcmtDb29raWVKYXIqIGphciA9IGNvbnRleHQgPyBjb250ZXh0LT5uZXR3b3JrQWNjZXNz
TWFuYWdlcigpLT5jb29raWVKYXIoKSA6IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKKyAg
ICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gc2Vzc2lvbi5jb250ZXh0KCkgPyBzZXNzaW9uLmNv
bnRleHQoKS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBTaGFyZWRDb29r
aWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgaWYgKCFqYXIpCiAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKIAogICAgIFFVcmwgdXJsRm9yQ29va2llcyh1cmwpOwogICAgIFFVcmwgZmlyc3RQYXJ0eVVy
bChmaXJzdFBhcnR5KTsKLSAgICBpZiAoIXRoaXJkUGFydHlDb29raWVQb2xpY3lQZXJtaXRzKGNv
bnRleHQsIHVybEZvckNvb2tpZXMsIGZpcnN0UGFydHlVcmwpKQorICAgIGlmICghdGhpcmRQYXJ0
eUNvb2tpZVBvbGljeVBlcm1pdHMoc2Vzc2lvbi5jb250ZXh0KCksIHVybEZvckNvb2tpZXMsIGZp
cnN0UGFydHlVcmwpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBRTGlzdDxRTmV0
d29ya0Nvb2tpZT4gY29va2llcyA9IGphci0+Y29va2llc0ZvclVybCh1cmxGb3JDb29raWVzKTsK
QEAgLTk0LDkgKzk0LDkgQEAgU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQq
IAogICAgIHJldHVybiByZXN1bHRDb29raWVzLmpvaW4oUUxhdGluMVN0cmluZygiOyAiKSk7CiB9
CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkK
K1N0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwp
CiB7Ci0gICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IGNvbnRleHQgPyBjb250ZXh0LT5uZXR3
b3JrQWNjZXNzTWFuYWdlcigpLT5jb29raWVKYXIoKSA6IFNoYXJlZENvb2tpZUphclF0OjpzaGFy
ZWQoKTsKKyAgICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gc2Vzc2lvbi5jb250ZXh0KCkgPyBz
ZXNzaW9uLmNvbnRleHQoKS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBT
aGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgaWYgKCFqYXIpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKIApAQCAtMTExLDQzICsxMTEsNDMgQEAgU3RyaW5nIGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKE5ldAogICAgIHJldHVybiByZXN1bHRDb29raWVzLmpvaW4oUUxhdGlu
MVN0cmluZygiOyAiKSk7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVy
bCovKQorYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQogewotICAg
IFFOZXR3b3JrQ29va2llSmFyKiBqYXIgPSBjb250ZXh0ID8gY29udGV4dC0+bmV0d29ya0FjY2Vz
c01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7Cisg
ICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IHNlc3Npb24uY29udGV4dCgpID8gc2Vzc2lvbi5j
b250ZXh0KCktPm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCktPmNvb2tpZUphcigpIDogU2hhcmVkQ29v
a2llSmFyUXQ6OnNoYXJlZCgpOwogICAgIHJldHVybiAhIWphcjsKIH0KIAotYm9vbCBnZXRSYXdD
b29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFy
dHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiti
b29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLywgVmVjdG9yPENvb2tpZT4m
IHJhd0Nvb2tpZXMpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKICAgICBy
YXdDb29raWVzLmNsZWFyKCk7CiAgICAgcmV0dXJuIGZhbHNlOyAvLyByZXR1cm4gdHJ1ZSB3aGVu
IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0Kiwg
Y29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCit2b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKIHsKICAgICAvLyBGSVhN
RTogTm90IHlldCBpbXBsZW1lbnRlZAogfQogCi12b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVz
KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykK
K3ZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGNv
bnRleHQsICFjb250ZXh0KTsgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBmb3IgY29va2llIGphcnMg
b3RoZXIgdGhhbiB0aGUgc2hhcmVkIG9uZS4KKyAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb24sICFz
ZXNzaW9uLmNvbnRleHQoKSk7IC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9yIGNvb2tpZSBqYXJz
IG90aGVyIHRoYW4gdGhlIHNoYXJlZCBvbmUuCiAgICAgU2hhcmVkQ29va2llSmFyUXQqIGphciA9
IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKICAgICBpZiAoamFyKQogICAgICAgICBqYXIt
PmdldEhvc3RuYW1lc1dpdGhDb29raWVzKGhvc3RuYW1lcyk7CiB9CiAKLXZvaWQgZGVsZXRlQ29v
a2llc0Zvckhvc3RuYW1lKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKQordm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewotICAgIEFTU0VSVF9V
TlVTRUQoY29udGV4dCwgIWNvbnRleHQpOyAvLyBOb3QgeWV0IGltcGxlbWVudGVkIGZvciBjb29r
aWUgamFycyBvdGhlciB0aGFuIHRoZSBzaGFyZWQgb25lLgorICAgIEFTU0VSVF9VTlVTRUQoc2Vz
c2lvbiwgIXNlc3Npb24uY29udGV4dCgpKTsgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBmb3IgY29v
a2llIGphcnMgb3RoZXIgdGhhbiB0aGUgc2hhcmVkIG9uZS4KICAgICBTaGFyZWRDb29raWVKYXJR
dCogamFyID0gU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOwogICAgIGlmIChqYXIpCiAgICAg
ICAgIGphci0+ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGhvc3RuYW1lKTsKIH0KIAotdm9pZCBk
ZWxldGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQordm9pZCBkZWxldGVB
bGxDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKIHsKLSAgICBBU1NFUlRf
VU5VU0VEKGNvbnRleHQsICFjb250ZXh0KTsgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBmb3IgY29v
a2llIGphcnMgb3RoZXIgdGhhbiB0aGUgc2hhcmVkIG9uZS4KKyAgICBBU1NFUlRfVU5VU0VEKHNl
c3Npb24sICFzZXNzaW9uLmNvbnRleHQoKSk7IC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9yIGNv
b2tpZSBqYXJzIG90aGVyIHRoYW4gdGhlIHNoYXJlZCBvbmUuCiAgICAgU2hhcmVkQ29va2llSmFy
UXQqIGphciA9IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKICAgICBpZiAoamFyKQogICAg
ICAgICBqYXItPmRlbGV0ZUFsbENvb2tpZXMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAJKHJldmlzaW9u
IDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVK
YXJTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsMTEgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdGF0aWMgU291cENvb2tpZUphciogY29va2llSmFyRm9yQ29udGV4dChO
ZXR3b3JraW5nQ29udGV4dCogY29udGV4dCkKK3N0YXRpYyBTb3VwQ29va2llSmFyKiBjb29raWVK
YXJGb3JTZXNzaW9uKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKIHsKLSAgICByZXR1
cm4gU09VUF9DT09LSUVfSkFSKHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShjb250ZXh0LT5zb3Vw
U2Vzc2lvbigpLCBTT1VQX1RZUEVfQ09PS0lFX0pBUikpOworICAgIGlmICghc2Vzc2lvbi5jb250
ZXh0KCkpCisgICAgICAgIHJldHVybiBzb3VwQ29va2llSmFyKCk7CisgICAgcmV0dXJuIFNPVVBf
Q09PS0lFX0pBUihzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUoc2Vzc2lvbi5jb250ZXh0KCktPnNv
dXBTZXNzaW9uKCksIFNPVVBfVFlQRV9DT09LSUVfSkFSKSk7CiB9CiAKIHN0YXRpYyBHUmVmUHRy
PFNvdXBDb29raWVKYXI+JiBkZWZhdWx0Q29va2llSmFyKCkKQEAgLTczLDkgKzc1LDkgQEAgc3Rh
dGljIGlubGluZSBib29sIGh0dHBPbmx5Q29va2llRXhpc3RzKAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZh
bHVlKQordm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB2YWx1ZSkKIHsKLSAgICBTb3VwQ29va2llSmFyKiBqYXIgPSBjb250ZXh0ID8gY29va2llSmFy
Rm9yQ29udGV4dChjb250ZXh0KSA6IHNvdXBDb29raWVKYXIoKTsKKyAgICBTb3VwQ29va2llSmFy
KiBqYXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Npb24pOwogICAgIGlmICghamFyKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTEwNyw5ICsxMDksOSBAQCB2b2lkIHNldENvb2tpZXNGcm9tRE9N
KE5ldHdvcmtpbmdDb250ZXh0CiAgICAgc291cF9jb29raWVzX2ZyZWUoZXhpc3RpbmdDb29raWVz
KTsKIH0KIAotc3RhdGljIFN0cmluZyBjb29raWVzRm9yQ29udGV4dChOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBib29sIGZvckhUVFBIZWFkZXIpCitzdGF0aWMg
U3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgS1VSTCYgdXJsLCBib29sIGZvckhUVFBIZWFkZXIpCiB7Ci0gICAgU291cENvb2tpZUph
ciogamFyID0gY29udGV4dCA/IGNvb2tpZUphckZvckNvbnRleHQoY29udGV4dCkgOiBzb3VwQ29v
a2llSmFyKCk7CisgICAgU291cENvb2tpZUphciogamFyID0gY29va2llSmFyRm9yU2Vzc2lvbihz
ZXNzaW9uKTsKICAgICBpZiAoIWphcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCkBAIC0x
MTgsMjUgKzEyMCwyNSBAQCBzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JDb250ZXh0KE5ldHdvcmtp
CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoY29va2llcy5nZXQoKSk7CiB9CiAKLVN0cmlu
ZyBjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiwg
Y29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVy
biBjb29raWVzRm9yQ29udGV4dChjb250ZXh0LCB1cmwsIGZhbHNlKTsKKyAgICByZXR1cm4gY29v
a2llc0ZvclNlc3Npb24oc2Vzc2lvbiwgdXJsLCBmYWxzZSk7CiB9CiAKLVN0cmluZyBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3Qg
S1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIGNv
b2tpZXNGb3JDb250ZXh0KGNvbnRleHQsIHVybCwgdHJ1ZSk7CisgICAgcmV0dXJuIGNvb2tpZXNG
b3JTZXNzaW9uKHNlc3Npb24sIHVybCwgdHJ1ZSk7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQo
TmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBj
b25zdCBLVVJMJiAvKnVybCovKQorYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAv
KnVybCovKQogewotICAgIHJldHVybiAhIWNvb2tpZUphckZvckNvbnRleHQoY29udGV4dCk7Cisg
ICAgcmV0dXJuICEhY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKIH0KIAotYm9vbCBnZXRS
YXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0
UGFydHkqLywgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jv
b2wgZ2V0UmF3Q29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdD
b29raWVzKQogewogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKLSAgICBTb3VwQ29va2llSmFyKiBq
YXIgPSBjb250ZXh0ID8gY29va2llSmFyRm9yQ29udGV4dChjb250ZXh0KSA6IHNvdXBDb29raWVK
YXIoKTsKKyAgICBTb3VwQ29va2llSmFyKiBqYXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Np
b24pOwogICAgIGlmICghamFyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE1Nyw5ICsx
NTksOSBAQCBib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3ZvaWQgZGVsZXRlQ29v
a2llKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgU291cENvb2tpZUphciogamFyID0gY29udGV4dCA/IGNv
b2tpZUphckZvckNvbnRleHQoY29udGV4dCkgOiBzb3VwQ29va2llSmFyKCk7CisgICAgU291cENv
b2tpZUphciogamFyID0gY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKICAgICBpZiAoIWph
cikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNzgsOSArMTgwLDkgQEAgdm9pZCBkZWxldGVDb29r
aWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbgogICAgIH0KIH0KIAotdm9pZCBnZXRIb3N0bmFtZXNX
aXRoQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgSGFzaFNldDxTdHJpbmc+JiBo
b3N0bmFtZXMpCit2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7Ci0gICAgU291cENv
b2tpZUphciogY29va2llSmFyID0gY29udGV4dCA/IGNvb2tpZUphckZvckNvbnRleHQoY29udGV4
dCkgOiBzb3VwQ29va2llSmFyKCk7CisgICAgU291cENvb2tpZUphciogY29va2llSmFyID0gY29v
a2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKICAgICBHT3duUHRyPEdTTGlzdD4gY29va2llcyhz
b3VwX2Nvb2tpZV9qYXJfYWxsX2Nvb2tpZXMoY29va2llSmFyKSk7CiAgICAgZm9yIChHU0xpc3Qq
IGl0ZW0gPSBjb29raWVzLmdldCgpOyBpdGVtOyBpdGVtID0gZ19zbGlzdF9uZXh0KGl0ZW0pKSB7
CiAgICAgICAgIEdPd25QdHI8U291cENvb2tpZT4gY29va2llKHN0YXRpY19jYXN0PFNvdXBDb29r
aWUqPihpdGVtLT5kYXRhKSk7CkBAIC0xOTAsMTAgKzE5MiwxMCBAQCB2b2lkIGdldEhvc3RuYW1l
c1dpdGhDb29raWVzKE5ldHdvcmtpbmdDCiAgICAgfQogfQogCi12b2lkIGRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBob3N0
bmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKICAgICBDU3RyaW5nIGhvc3RO
YW1lU3RyaW5nID0gaG9zdG5hbWUudXRmOCgpOwotICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUph
ciA9IGNvbnRleHQgPyBjb29raWVKYXJGb3JDb250ZXh0KGNvbnRleHQpIDogc291cENvb2tpZUph
cigpOworICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphciA9IGNvb2tpZUphckZvclNlc3Npb24o
c2Vzc2lvbik7CiAgICAgR093blB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29raWVfamFyX2Fs
bF9jb29raWVzKGNvb2tpZUphcikpOwogICAgIGZvciAoR1NMaXN0KiBpdGVtID0gY29va2llcy5n
ZXQoKTsgaXRlbTsgaXRlbSA9IGdfc2xpc3RfbmV4dChpdGVtKSkgewogICAgICAgICBTb3VwQ29v
a2llKiBjb29raWUgPSBzdGF0aWNfY2FzdDxTb3VwQ29va2llKj4oaXRlbS0+ZGF0YSk7CkBAIC0y
MDMsOSArMjA1LDkgQEAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZwog
ICAgIH0KIH0KIAotdm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250
ZXh0KQordm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
bikKIHsKLSAgICBTb3VwQ29va2llSmFyKiBjb29raWVKYXIgPSBjb250ZXh0ID8gY29va2llSmFy
Rm9yQ29udGV4dChjb250ZXh0KSA6IHNvdXBDb29raWVKYXIoKTsKKyAgICBTb3VwQ29va2llSmFy
KiBjb29raWVKYXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Npb24pOwogICAgIEdPd25QdHI8
R1NMaXN0PiBjb29raWVzKHNvdXBfY29va2llX2phcl9hbGxfY29va2llcyhjb29raWVKYXIpKTsK
ICAgICBmb3IgKEdTTGlzdCogaXRlbSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3Ns
aXN0X25leHQoaXRlbSkpIHsKICAgICAgICAgU291cENvb2tpZSogY29va2llID0gc3RhdGljX2Nh
c3Q8U291cENvb2tpZSo+KGl0ZW0tPmRhdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAJ
KHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBA
CiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQu
aCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUVycm9yLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3dpbi9Db29raWVKYXJXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHAJKHJldmlzaW9uIDEzODQwNykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNvb2tpZS5oIgogI2lu
Y2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgPFdpbmlu
ZXQuaD4KQEAgLTM1LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIHNl
dENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYsIGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyBGSVhNRTogRGVhbCB3aXRoIGZpcnN0UGFydHkgYXJn
dW1lbnQuCiAgICAgU3RyaW5nIHN0ciA9IHVybC5zdHJpbmcoKTsKQEAgLTQzLDcgKzQ0LDcgQEAg
dm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dAogICAgIEludGVybmV0U2V0
Q29va2llKHN0ci5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCAwLCB2YWwuY2hhcmFj
dGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSk7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKE5l
dHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBj
b29raWVzRm9yRE9NKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBL
VVJMJiB1cmwpCiB7CiAgICAgLy8gRklYTUU6IERlYWwgd2l0aCBmaXJzdFBhcnR5IGFyZ3VtZW50
LgogCkBAIC02NCw0MCArNjUsNDAgQEAgU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2luZ0Nv
bnRleHQqLAogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KGJ1ZmZlcik7CiB9CiAKLVN0cmluZyBj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewogICAgIC8vIEZJWE1FOiBp
bmNsdWRlIEh0dHBPbmx5IGNvb2tpZQotICAgIHJldHVybiBjb29raWVzRm9yRE9NKGNvbnRleHQs
IGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JET00oc2Vzc2lvbi5jb250
ZXh0KCksIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBL
VVJMJiAvKnVybCovKQorYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCov
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJM
JiAvKnVybCovLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2ll
cyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0
eSovLCBjb25zdCBLVVJMJiAvKnVybCovLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsK
ICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogICAgIHJhd0Nvb2tpZXMuY2xlYXIo
KTsKICAgICByZXR1cm4gZmFsc2U7IC8vIHJldHVybiB0cnVlIHdoZW4gaW1wbGVtZW50ZWQKIH0K
IAotdm9pZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiwgY29u
c3QgU3RyaW5nJikKK3ZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxl
bWVudGVkCiB9CiAKLXZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya2luZ0NvbnRl
eHQqLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKK3ZvaWQgZ2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMp
CiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxldGVD
b29raWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBTdHJpbmcmIGhvc3Ru
YW1lKQordm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBs
ZW1lbnRlZAogfQogCi12b2lkIGRlbGV0ZUFsbENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqKQor
dm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpCiB7CiAgICAgLy8g
RklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvd2luL1Jlc291cmNlSGFuZGxlV2luLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUhhbmRsZVdpbi5jcHAJKHJl
dmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jl
c291cmNlSGFuZGxlV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgIkRhdGFVUkwuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
NCwxNiArMTQ0LDkgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Uwog
ICAgIG1fc2VyaWFsTG9hZGluZ0VuYWJsZWQgPSBlbmFibGVkOwogfQogCi1zdGF0aWMgUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQqIG5ldHdvcmtpbmdDb250ZXh0KGJvb2wgcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCkKK3N0YXRpYyBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKGJv
b2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKIHsKLSAgICAvLyBUaGlzIG5ldHdvcmtpbmcgY29u
dGV4dCBpcyBvbmx5IG5lZWRlZCB0byBnZXQgc3RvcmFnZSBzZXNzaW9uIGZyb20uCi0gICAgaWYg
KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKLSAgICAgICAgc3RhdGljIFJlbW90ZU5ldHdvcmtp
bmdDb250ZXh0KiBjb250ZXh0ID0gUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShmYWxz
ZSwgZmFsc2UsIHRydWUpLmxlYWtSZWYoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQ7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgc3RhdGljIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0
ID0gUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShmYWxzZSwgZmFsc2UsIGZhbHNlKS5s
ZWFrUmVmKCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0OwotICAgIH0KKyAgICByZXR1cm4gcHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCA/IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpwcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCkgOiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vz
c2lvbigpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERv
d25sb2FkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgdWludDY0X3QgZG93bmxvYWRJRCwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpAQCAtMTY0LDMyICsxNTcsMzIgQEAgdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcgogCiB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcmIHJl
c3VsdCkKIHsKLSAgICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVzRm9yRE9NKG5ldHdvcmtpbmdD
b250ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJl
c3VsdCA9IFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGNvb2tpZVN0cmluZykKIHsKLSAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShuZXR3
b3JraW5nQ29udGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsLCBj
b29raWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHN0b3JhZ2VTZXNz
aW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmlu
Zyk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFi
bGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsLCBib29sJiByZXN1bHQpCiB7Ci0gICAgcmVzdWx0ID0gV2ViQ29yZTo6
Y29va2llc0VuYWJsZWQobmV0d29ya2luZ0NvbnRleHQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCks
IGZpcnN0UGFydHksIHVybCk7CisgICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQo
c3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCk7
CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcmIHJlc3VsdCkKIHsKLSAgICByZXN1
bHQgPSBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShuZXR3b3JraW5nQ29u
dGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXN1
bHQgPSBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzdG9yYWdlU2Vzc2lv
bihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAogdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyhib29sIHByaXZhdGVC
cm93c2luZ0VuYWJsZWQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwg
VmVjdG9yPENvb2tpZT4mIHJlc3VsdCkKIHsKLSAgICBXZWJDb3JlOjpnZXRSYXdDb29raWVzKG5l
dHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmws
IHJlc3VsdCk7CisgICAgV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzdG9yYWdlU2Vzc2lvbihwcml2
YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsLCByZXN1bHQpOwogfQogCiB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUoYm9vbCBwcml2YXRl
QnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFt
ZSkKIHsKLSAgICBXZWJDb3JlOjpkZWxldGVDb29raWUobmV0d29ya2luZ0NvbnRleHQocHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCksIHVybCwgY29va2llTmFtZSk7CisgICAgV2ViQ29yZTo6ZGVsZXRl
Q29va2llKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCB1cmwsIGNvb2tp
ZU5hbWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29u
dGV4dC5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiAr
NDIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbigpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7
CiAKKyAgICBzdGF0aWMgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBwcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCk7IC8vIENhbiBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBzZXNzaW9uIGV4
aXN0cy4KKwogcHJpdmF0ZToKICAgICBSZW1vdGVOZXR3b3JraW5nQ29udGV4dChib29sIG5lZWRz
U2l0ZVNwZWNpZmljUXVpcmtzLCBib29sIGxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQs
IGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CiAKQEAgLTQ5LDggKzUxLDcgQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgYm9vbCBuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBsb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVk
KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGluUHJpdmF0ZUJyb3dzaW5nTW9k
ZSgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBz
dG9yYWdlU2Vzc2lvbigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IE9WRVJSSURFOwogICAg
IHZpcnR1YWwgTlNPcGVyYXRpb25RdWV1ZSAqc2NoZWR1bGVkT3BlcmF0aW9uUXVldWUoKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0IE9WRVJSSURFOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFj
L1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0JKHdv
cmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgcHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb247CitzdGF0aWMgT3duUHRyPE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbj4mIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkKK3sKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoT3duUHRyPE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbj4sIHNlc3Npb24sICgpKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKK30KIAog
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0KGJvb2wgbmVl
ZHNTaXRlU3BlY2lmaWNRdWlya3MsIGJvb2wgbG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxl
ZCwgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogICAgIDogbV9uZWVkc1NpdGVTcGVjaWZp
Y1F1aXJrcyhuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcykKQEAgLTYzLDE5ICs2OCwyMCBAQCBib29s
IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpsb2NhbEZpbGVDCiAgICAgcmV0dXJuIG1fbG9jYWxG
aWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZDsKIH0KIAotYm9vbCBSZW1vdGVOZXR3b3JraW5nQ29u
dGV4dDo6aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QKK05ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9wcml2YXRlQnJvd3NpbmdFbmFibGVkOworICAgIGlmIChtX3ByaXZhdGVCcm93
c2luZ0VuYWJsZWQpIHsKKyAgICAgICAgQVNTRVJUKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNz
aW9uKCkpOworICAgICAgICByZXR1cm4gKnByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCk7
CisgICAgfQorCisgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3Jh
Z2VTZXNzaW9uKCk7CiB9CiAKLUNGVVJMU3RvcmFnZVNlc3Npb25SZWYgUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewotICAg
IGlmIChpblByaXZhdGVCcm93c2luZ01vZGUoKSkgewotICAgICAgICBBU1NFUlQocHJpdmF0ZUJy
b3dzaW5nU3RvcmFnZVNlc3Npb24pOwotICAgICAgICByZXR1cm4gcHJpdmF0ZUJyb3dzaW5nU3Rv
cmFnZVNlc3Npb247Ci0gICAgfQotICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IFJldHVy
biBhIGRlZmF1bHQgc2Vzc2lvbiB0aGF0J3MgdXNlZCBmb3IgdGVzdGluZy4KLSAgICByZXR1cm4g
MDsKKyAgICBBU1NFUlQocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSk7CisgICAgcmV0
dXJuICpwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpOwogfQogCiBOU09wZXJhdGlvblF1
ZXVlICpSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6c2NoZWR1bGVkT3BlcmF0aW9uUXVldWUoKSBj
b25zdApAQCAtMTA4LDIzICsxMTQsMTggQEAgdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6
c2V0UHJpdmF0ZQogCiB2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlm
IChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbikKKyAgICBpZiAocHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFwcml2YXRl
QnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkuaXNOdWxsKCkpOwogICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVudGlmaWVyID0gU3RyaW5nKHByaXZhdGVCcm93c2lu
Z1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKSArICIuUHJpdmF0ZUJyb3dzaW5nIikuY3Jl
YXRlQ0ZTdHJpbmcoKTsKIAotICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uID0gV0tD
cmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpKTsKKyAgICBwcml2
YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVh
dGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRl
bnRpZmllckJhc2UoKSk7CiB9CiAKIHZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ry
b3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKLSAgICBpZiAoIXByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDRlJlbGVhc2UocHJpdmF0ZUJy
b3dzaW5nU3RvcmFnZVNlc3Npb24pOwotICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9u
ID0gMDsKKyAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpID0gbnVsbHB0cjsKIH0K
IAogfQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xz
L21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1h
bmFnZXJNYWMubW0JKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9O
ZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIKICNpbXBvcnQgPFdlYkNvcmUvS1VSTC5o
PgorI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTA0Myw3ICsx
MDQzLDYgQEAKIAkJRTFCNzg0NzMxNjNGMjUzRTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtpbmdD
b250ZXh0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTFCNzg0NzIxNjNGMjUzRTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tICov
OyB9OwogCQlFMUNDMUI5MDEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUNDMUI4RTEyRDdFQURGMDA2
MjU4MzggLyogUHJpbnRJbmZvLmggKi87IH07CiAJCUUxQ0MxQjkxMTJEN0VBREYwMDYyNTgzOCAv
KiBQcmludEluZm9NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMUNDMUI4RjEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvTWFjLm1tICovOyB9
OwotCQlFMUQyMjk3MTE2NTJEQzUyMDBCQUE0QkQgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFEMjI5
NkUxNjUyREI5QzAwQkFBNEJEIC8qIFdlYlBsYXRmb3JtU3RyYXRlZ2llc01hYy5tbSAqLzsgfTsK
IAkJRTFFREZEQTYxNjI4ODY4RTAwMzlFQ0RBIC8qIE1haW5NYWNQcm9jZXNzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNkZBMzEwMTFFMzkyMUUw
MERCMTM3MSAvKiBNYWluTWFjUHJvY2Vzcy5jcHAgKi87IH07CiAJCUUxRURGREE3MTYyODg2OTYw
MDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRURGRDlCMTYyODdEMEIwMDM5RUNEQSAv
KiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbSAqLzsgfTsKIAkJRTFFREZEQTgxNjI4ODY5
OTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVERkRBMjE2Mjg4MzhDMDAzOUVDREEgLyog
U2hhcmVkV29ya2VyUHJvY2Vzc01hYy5tbSAqLzsgfTsKQEAgLTIzNDQsNyArMjM0Myw2IEBACiAJ
CUUxQjc4NDcyMTYzRjI1M0UwMDA3QjY5MiAvKiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZU5ldHdvcmtpbmdD
b250ZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUNDMUI4RTEyRDdFQURG
MDA2MjU4MzggLyogUHJpbnRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFByaW50SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUNDMUI4RjEyRDdF
QURGMDA2MjU4MzggLyogUHJpbnRJbmZvTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gUHJpbnRJbmZvTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlFMUQyMjk2RTE2NTJEQjlDMDBCQUE0QkQgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUVERkQ5ODE2
Mjg3QkQxMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01haW4uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzc01haW4uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFFREZEOUIxNjI4N0QwQjAwMzlFQ0RBIC8qIFNoYXJlZFdv
cmtlclByb2Nlc3NNYWluTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzc01haW5NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUxRURGRDlEMTYyODdGMTkwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb2Nlc3Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM3MzMsNyArMzczMSw2IEBACiAJCQkJ
QkMxMTFBREYxMTJGNUJDMjAwMzM3QkFCIC8qIFdlYkVycm9yc01hYy5tbSAqLywKIAkJCQk5Mzkx
RjI4MzEyMUIzOEY1MDBFQkY3RTggLyogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oICovLAog
CQkJCTkzOTFGMjg0MTIxQjM4RjUwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
Lm1tICovLAotCQkJCUUxRDIyOTZFMTY1MkRCOUMwMEJBQTRCRCAvKiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXNNYWMubW0gKi8sCiAJCQkJQkNDNDNBQzYxMjdCOTlERTAwMzE3RjE2IC8qIFdlYlBvcHVw
TWVudU1hYy5tbSAqLywKIAkJCQlCQ0M1NzE1OTExNUFEQUVGMDAxQ0NBRjkgLyogV2ViU3lzdGVt
SW50ZXJmYWNlLmggKi8sCiAJCQkJQkNDNTcxNUExMTVBREFFRjAwMUNDQUY5IC8qIFdlYlN5c3Rl
bUludGVyZmFjZS5tbSAqLywKQEAgLTU5NzgsNyArNTk3NSw2IEBACiAJCQkJNTEyMTc0NjAxNjRD
MjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxMjE3NDY0MTY0QzIxMzcwMDM3QTVDMSAvKiBXZWJSZXNvdXJjZUJ1ZmZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQUYxQUM2QjE2NTE3NTlFMDBDMTdEN0YgLyogUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24ubW0gaW4gU291cmNlcyAqLywKLQkJCQlFMUQyMjk3MTE2NTJEQzUyMDBCQUE0
QkQgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFB
M0Q3NUIxNjUxQjQ0RjAwODcxM0QwIC8qIFJlbW90ZUxheWVyVHJlZUhvc3QubW0gaW4gU291cmNl
cyAqLywKIAkJCQkxQUEzRDc2MTE2NTFCN0QzMDA4NzEzRDAgLyogUmVtb3RlTGF5ZXJUcmVlSG9z
dE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUZEMThCNTE2NTFGQkFE
MDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAxMzg0
MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTWVtb3J5
U3RhdGlzdGljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdp
blByZWZsaWdodFJlc3VsdENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Gb250Q2FjaGUuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAJKHJldmlzaW9uIDEz
ODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIldlYkNv
b2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29va2llU3RvcmFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvb2tpZUphci5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTU1LDcgKzU2LDcgQEAgdm9pZCBXZWJD
b29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNXaXRoQwogewogICAgIEhhc2hTZXQ8U3RyaW5nPiBo
b3N0bmFtZXM7CiAKLSAgICBXZWJDb3JlOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcygwLCBob3N0
bmFtZXMpOworICAgIFdlYkNvcmU6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIGhvc3RuYW1lcyk7CiAKICAgICBW
ZWN0b3I8U3RyaW5nPiBob3N0bmFtZUxpc3Q7CiAgICAgY29weVRvVmVjdG9yKGhvc3RuYW1lcywg
aG9zdG5hbWVMaXN0KTsKQEAgLTY1LDEyICs2NiwxMiBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6
OmdldEhvc3RuYW1lc1dpdGhDCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2ll
c0Zvckhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7Ci0gICAgV2ViQ29yZTo6ZGVs
ZXRlQ29va2llc0Zvckhvc3RuYW1lKDAsIGhvc3RuYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxldGVD
b29raWVzRm9ySG9zdG5hbWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKSwgaG9zdG5hbWUpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFs
bENvb2tpZXMoKQogewotICAgIFdlYkNvcmU6OmRlbGV0ZUFsbENvb2tpZXMoMCk7CisgICAgV2Vi
Q29yZTo6ZGVsZXRlQWxsQ29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9y
YWdlU2Vzc2lvbigpKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzdGFydE9ic2Vydmlu
Z0Nvb2tpZUNoYW5nZXMoKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9h
ZHMvbWFjL0Rvd25sb2FkTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQkocmV2aXNpb24gMTM4NDA3KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBv
cnQgIkRvd25sb2FkLmgiCiAKKyNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25NYWMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUu
aD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzAzLDcgKzMwMyw4IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnN3
aXRjaE5ldHdvcmtMb2FkZXIKIHsKICNpZiAoUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JL
KSkgJiYgIVBMQVRGT1JNKFdJTikKICAgICAvLyBGSVhNRSAoTmV0d29ya1Byb2Nlc3MpOiBEbyB0
aGlzIGluIG5ldHdvcmsgcHJvY2VzcywgdG9vLgotICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKKyAgICBJbml0V2ViQ29yZVN5c3RlbUlu
dGVyZmFjZSgpOworICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5n
U2Vzc2lvbigpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTM4
NDA3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIldlYkNv
cmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlci5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJldmlz
aW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBA
QAogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0xvYWRlclN0cmF0ZWd5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9O
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1BsYXRmb3JtQ29va2llSmFyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybVBhc3RlYm9hcmQuaD4KQEAgLTExMyw5MCArMTE0LDgzIEBAIHZvaWQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpub3RpZnlDb29raWUKICAgICBXZWJDb29raWVNYW5hZ2VyOjpzaGFyZWQoKS5k
aXNwYXRjaENvb2tpZXNEaWRDaGFuZ2UoKTsKIH0KIAotI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNF
KENGTkVUV09SSykKLVJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmRlZmF1bHRDb29raWVTdG9yYWdlKCkKLXsKLSAgICByZXR1cm4gMDsKLX0K
LSNlbmRpZgotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKE5l
dHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJiB1cmwpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsKQogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAg
aWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAg
IFN0cmluZyByZXN1bHQ7Ci0gICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29y
a0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00oY29udGV4dCAmJiBjb250ZXh0LT5p
blByaXZhdGVCcm93c2luZ01vZGUoKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShyZXN1bHQpLCAw
KSkKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigp
LT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Q29va2llc0ZvckRPTShzZXNzaW9uLmlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigp
LCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OkNvb2tpZXNGb3JET006OlJlcGx5KHJlc3VsdCksIDApKQogICAgICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICNlbmRpZgogCi0gICAg
cmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsK
KyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1
cmwpOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0Zyb21ET00o
TmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgY29va2llU3RyaW5nKQogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAg
ICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAg
ICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENvb2tp
ZXNGcm9tRE9NKGNvbnRleHQgJiYgY29udGV4dC0+aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCksIGZp
cnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKSwgMCk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNo
YXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24u
aXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5n
KSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKIAotICAgIFdlYkNvcmU6OnNl
dENvb2tpZXNGcm9tRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsK
KyAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmws
IGNvb2tpZVN0cmluZyk7CiB9CiAKLWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVz
RW5hYmxlZChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNF
bmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NF
U1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7
CiAgICAgICAgIGJvb2wgcmVzdWx0OwotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgp
Lm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZChjb250ZXh0ICYmIGNv
bnRleHQtPmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkOjpSZXBseShy
ZXN1bHQpLCAwKSkKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29u
bmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJsZWQoc2Vzc2lvbi5pc1ByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZDo6UmVwbHkocmVzdWx0KSwgMCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogI2VuZGlm
CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoY29udGV4dCwgZmlyc3RQYXJ0
eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmly
c3RQYXJ0eSwgdXJsKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYg
dXJsKQogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6
OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIFN0cmluZyByZXN1bHQ7
Ci0gICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+
Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnRleHQgJiYgY29udGV4dC0+
aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWU6
OlJlcGx5KHJlc3VsdCksIDApKQorICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5l
dHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShz
ZXNzaW9uLmlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlOjpSZXBseShyZXN1bHQpLCAwKSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBX
ZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb250ZXh0LCBmaXJzdFBhcnR5
LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Z2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2ll
cykKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKICNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1By
b2Nlc3MoKSkgewotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25u
ZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzKGNvbnRleHQgJiYgY29udGV4dC0+aW5Qcml2
YXRlQnJvd3NpbmdNb2RlKCksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDAp
KQorICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCkt
PmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpHZXRSYXdDb29raWVzKHNlc3Npb24uaXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCks
IGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYKIAotICAgIHJl
dHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwgcmF3
Q29va2llcyk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmly
c3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7CiAjaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQ
cm9jZXNzKCkpIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rp
b24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6RGVsZXRlQ29va2llKGNvbnRleHQgJiYgY29udGV4dC0+aW5Qcml2YXRlQnJvd3Np
bmdNb2RlKCksIHVybCwgY29va2llTmFtZSksIDApOworICAgICAgICBXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVDb29raWUoc2Vzc2lvbi5pc1ByaXZh
dGVCcm93c2luZ1Nlc3Npb24oKSwgdXJsLCBjb29raWVOYW1lKSwgMCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAjZW5kaWYKIAotICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShjb250ZXh0LCB1
cmwsIGNvb2tpZU5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1cmws
IGNvb2tpZU5hbWUpOwogfQogCiAvLyBEYXRhYmFzZVN0cmF0ZWd5CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU3LDE1ICs1NywxMiBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6
Q29va2llc1N0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkKCkg
T1ZFUlJJREU7Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQotICAgIHZpcnR1
YWwgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGRlZmF1bHRDb29raWVTdG9yYWdl
KCkgT1ZFUlJJREU7Ci0jZW5kaWYKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKFdl
YkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRD
b29raWVzRnJvbURPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKSBP
VkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoV2ViQ29yZTo6TmV0d29y
a2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpLVVJMJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRl
Q29va2llKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYs
IGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JE
T00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNvb2tp
ZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdl
YkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29s
IGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRh
YmFzZVN0cmF0ZWd5CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDEzODQwNykKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTAgKzM0LDggQEAgcHVibGlj
OgogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNz
aW9uSWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIHZvaWQgc3dpdGNo
VG9OZXdUZXN0aW5nU2Vzc2lvbigpOwogICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbigpOwotICAgIHN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGRlZmF1bHRTdG9yYWdl
U2Vzc2lvbigpOwogICAgIHN0YXRpYyB2b2lkIHNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENv
bnRleHRzKEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOwogCiBwcml2YXRlOgpAQCAtNDgsOCArNDYs
NyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtz
KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGxvY2FsRmlsZUNvbnRlbnRTbmlm
ZmluZ0VuYWJsZWQoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgaW5Qcml2YXRl
QnJvd3NpbmdNb2RlKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBDRlVSTFN0b3JhZ2VT
ZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpTY2hlZHVsZVBhaXJIYXNoU2V0KiBzY2hlZHVs
ZWRSdW5Mb29wUGFpcnMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYp
IGNvbnN0IE9WRVJSSURFOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAj
aW1wb3J0ICJXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgiCiAKLSNpbXBvcnQgPFdlYkNvcmUv
Q29va2llU3RvcmFnZUNGTmV0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyQ2xpZW50
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VF
cnJvci5oPgpAQCAtMzIsOCArMzEsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBkZWZhdWx0
Q0ZTdG9yYWdlU2Vzc2lvbjsKLXN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHByaXZhdGVC
cm93c2luZ1N0b3JhZ2VTZXNzaW9uOworc3RhdGljIE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Np
b24+JiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpCit7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiwgc2Vzc2lvbiwgKCkpOworICAg
IHJldHVybiBzZXNzaW9uOworfQogCiBib29sIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6Om5l
ZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkgY29uc3QKIHsKQEAgLTY3LDI2ICs2OSwxNyBAQCB2b2lk
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldFByaXZhCiAgICAgcHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpID0gaWRlbnRpZmllcjsKIH0KIAotdm9pZCBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkKLXsK
LSAgICAvLyBTZXQgYSBwcml2YXRlIHNlc3Npb24gZm9yIHRlc3RpbmcgdG8gYXZvaWQgaW50ZXJm
ZXJpbmcgd2l0aCBnbG9iYWwgY29va2llcy4gVGhpcyBzaG91bGQgYmUgZGlmZmVyZW50IGZyb20g
cHJpdmF0ZSBicm93c2luZyBzZXNzaW9uLgotICAgIGlmIChkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lv
bikKLSAgICAgICAgQ0ZSZWxlYXNlKGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uKTsKLSAgICBkZWZh
dWx0Q0ZTdG9yYWdlU2Vzc2lvbiA9IFdLQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU1RS
KCJQcml2YXRlIFdlYktpdCBTZXNzaW9uIikpOwotfQotCiB2b2lkIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewogICAgIC8vIEZJWE1F
IChOZXR3b3JrUHJvY2Vzcyk6IERvbid0IGNyZWF0ZSBhbiB1bm5lY2Vzc2FyeSBzZXNzaW9uIHdo
ZW4gdXNpbmcgbmV0d29yayBwcm9jZXNzLgogCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pCisgICAgaWYgKHByaXZhdGVC
cm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBi
YXNlID0gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpLmlzTnVs
bCgpID8gU3RyaW5nKFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0pIDog
cHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpOwotICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVudGlmaWVyID0gU3RyaW5nKGJhc2UgKyAiLlByaXZhdGVC
cm93c2luZyIpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgU3RyaW5nIGlkZW50aWZpZXJCYXNlID0g
cHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpID8g
U3RyaW5nKFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0pIDogcHJpdmF0
ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpOwogCi0gICAgcHJpdmF0ZUJy
b3dzaW5nU3RvcmFnZVNlc3Npb24gPSBXS0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihjZklk
ZW50aWZpZXIuZ2V0KCkpOworICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkgPSBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oaWRlbnRp
ZmllckJhc2UpOwogfQogCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKQEAgLTk0LDM5ICs4NywyOCBAQCB2b2lkIFdlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQCiAgICAgaWYgKCFwcml2YXRlQnJvd3NpbmdTdG9y
YWdlU2Vzc2lvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ0ZSZWxlYXNlKHByaXZhdGVCcm93
c2luZ1N0b3JhZ2VTZXNzaW9uKTsKLSAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbiA9
IDA7Ci19Ci0KLUNGVVJMU3RvcmFnZVNlc3Npb25SZWYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkKLXsKLSAgICByZXR1cm4gZGVmYXVsdENGU3RvcmFn
ZVNlc3Npb247Ci19Ci0KLWJvb2wgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6aW5Qcml2YXRl
QnJvd3NpbmdNb2RlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZnJhbWUoKSAmJiBmcmFtZSgpLT5z
ZXR0aW5ncygpICYmIGZyYW1lKCktPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQo
KTsKKyAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpID0gbnVsbHB0cjsKIH0KIAot
Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdl
U2Vzc2lvbigpIGNvbnN0CitOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICBpZiAoaW5Qcml2YXRlQnJv
d3NpbmdNb2RlKCkpIHsKLSAgICAgICAgQVNTRVJUKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNz
aW9uKTsKLSAgICAgICAgcmV0dXJuIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uOworICAg
IGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlID0gZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5n
cygpICYmIGZyYW1lKCktPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAg
ICBpZiAoaW5Qcml2YXRlQnJvd3NpbmdNb2RlKSB7CisgICAgICAgIEFTU0VSVChwcml2YXRlQnJv
d3NpbmdTdG9yYWdlU2Vzc2lvbigpKTsKKyAgICAgICAgcmV0dXJuICpwcml2YXRlQnJvd3NpbmdT
dG9yYWdlU2Vzc2lvbigpOwogICAgIH0KLSAgICByZXR1cm4gZGVmYXVsdENGU3RvcmFnZVNlc3Np
b247CisgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCk7CiB9CiAKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNj
ZXB0UG9saWN5Rm9yQWxsQ29udGV4dHMoSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCiB7
CiAgICAgW1tOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXSBzZXRD
b29raWVBY2NlcHRQb2xpY3k6c3RhdGljX2Nhc3Q8TlNIVFRQQ29va2llQWNjZXB0UG9saWN5Pihw
b2xpY3kpXTsKIAotICAgIGlmIChSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29v
a2llU3RvcmFnZSA9IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCkpCisgICAgaWYgKFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCkpCiAgICAg
ICAgIFdLU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBwb2xp
Y3kpOwogCi0gICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKSB7Ci0gICAgICAg
IFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBwcml2YXRlQnJvd3NpbmdDb29raWVT
dG9yYWdlID0gYWRvcHRDRihXS0NvcHlIVFRQQ29va2llU3RvcmFnZShwcml2YXRlQnJvd3NpbmdT
dG9yYWdlU2Vzc2lvbikpOwotICAgICAgICBXS1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocHJp
dmF0ZUJyb3dzaW5nQ29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKKyAgICBpZiAocHJpdmF0
ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSkgeworICAgICAgICBXS1NldEhUVFBDb29raWVBY2Nl
cHRQb2xpY3kocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKS0+Y29va2llU3RvcmFnZSgp
LmdldCgpLCBwb2xpY3kpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dl
YlBsYXRmb3JtU3RyYXRlZ2llc01hYy5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCi0KLSNp
bmNsdWRlICJXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSA8V2ViS2l0U3lz
dGVtSW50ZXJmYWNlLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6ZGVmYXVsdENvb2tpZVN0b3JhZ2UoKQotewotICAgIGlmIChDRlVSTFN0b3Jh
Z2VTZXNzaW9uUmVmIHNlc3Npb24gPSBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZWZhdWx0
U3RvcmFnZVNlc3Npb24oKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoV0tDb3B5SFRUUENvb2tp
ZVN0b3JhZ2Uoc2Vzc2lvbikpOwotCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICByZXR1cm4gV0tH
ZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UoKTsKLSNlbHNlCi0gICAgLy8gV2hlbiB1c2luZyBO
U1VSTENvbm5lY3Rpb24sIHdlIGFsc28gdXNlIGl0cyBzaGFyZWQgY29va2llIHN0b3JhZ2UuCi0g
ICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHJldmlz
aW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L0pTRWxlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNSYW5nZS5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTWFpblJlc291cmNlTG9hZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JraW5n
Q29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm9kZVRyYXZlcnNhbC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRG9jdW1lbnQuaD4KQEAg
LTI0OCw3ICsyNDksNyBAQCB2b2lkIFdlYkZyYW1lOjpzdGFydERvd25sb2FkKGNvbnN0IFdlYkNv
CiAKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFy
ZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBib29sIHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQgPSBtX2NvcmVGcmFtZS0+bG9hZGVyKCktPm5ldHdvcmtpbmdDb250ZXh0KCktPmlu
UHJpdmF0ZUJyb3dzaW5nTW9kZSgpOworICAgICAgICBib29sIHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQgPSBtX2NvcmVGcmFtZS0+bG9hZGVyKCktPm5ldHdvcmtpbmdDb250ZXh0KCktPnN0b3JhZ2VT
ZXNzaW9uKCkuaXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CiAgICAgICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlN0YXJ0RG93bmxvYWQocHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCwgcG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCksIDApOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9XZWJQYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00OSw2ICs0OSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvSFRNTENvbnZlcnRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9LZXlib2Fy
ZEV2ZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtpbmdDb250ZXh0Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1LZXlib2FyZEV2ZW50
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CkBAIC02NzgsNyArNjc5LDcg
QEAgYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVSTAogICAgIE5TTXV0YWJs
ZVVSTFJlcXVlc3QqIHJlcXVlc3QgPSBbW05TTXV0YWJsZVVSTFJlcXVlc3QgYWxsb2NdIGluaXRX
aXRoVVJMOnVybF07CiAgICAgW3JlcXVlc3Qgc2V0VmFsdWU6KE5TU3RyaW5nKil1c2VyQWdlbnQo
KSBmb3JIVFRQSGVhZGVyRmllbGQ6QCJVc2VyLUFnZW50Il07CiAgICAgTlNDYWNoZWRVUkxSZXNw
b25zZSAqY2FjaGVkUmVzcG9uc2U7Ci0gICAgaWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3Rv
cmFnZVNlc3Npb24gPSBjb3JlUGFnZSgpLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPm5ldHdvcmtp
bmdDb250ZXh0KCktPnN0b3JhZ2VTZXNzaW9uKCkpCisgICAgaWYgKENGVVJMU3RvcmFnZVNlc3Np
b25SZWYgc3RvcmFnZVNlc3Npb24gPSBjb3JlUGFnZSgpLT5tYWluRnJhbWUoKS0+bG9hZGVyKCkt
Pm5ldHdvcmtpbmdDb250ZXh0KCktPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCkp
CiAgICAgICAgIGNhY2hlZFJlc3BvbnNlID0gV0tDYWNoZWRSZXNwb25zZUZvclJlcXVlc3Qoc3Rv
cmFnZVNlc3Npb24sIHJlcXVlc3QpOwogICAgIGVsc2UKICAgICAgICAgY2FjaGVkUmVzcG9uc2Ug
PSBbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIGNhY2hlZFJlc3BvbnNlRm9yUmVxdWVzdDpy
ZXF1ZXN0XTsKQEAgLTY5Miw3ICs2OTMsNyBAQCBzdGF0aWMgTlNDYWNoZWRVUkxSZXNwb25zZSAq
Y2FjaGVkUmVzcG9uCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZVVSTFJlcXVlc3Q+IHJlcXVlc3Qo
QWRvcHROUywgW1tOU011dGFibGVVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDp1cmxdKTsK
ICAgICBbcmVxdWVzdC5nZXQoKSBzZXRWYWx1ZTooTlNTdHJpbmcgKil3ZWJQYWdlLT51c2VyQWdl
bnQoKSBmb3JIVFRQSGVhZGVyRmllbGQ6QCJVc2VyLUFnZW50Il07CiAKLSAgICBpZiAoQ0ZVUkxT
dG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbiA9IHdlYlBhZ2UtPmNvcmVQYWdlKCktPm1h
aW5GcmFtZSgpLT5sb2FkZXIoKS0+bmV0d29ya2luZ0NvbnRleHQoKS0+c3RvcmFnZVNlc3Npb24o
KSkKKyAgICBpZiAoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbiA9IHdlYlBh
Z2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+bmV0d29ya2luZ0NvbnRleHQo
KS0+c3RvcmFnZVNlc3Npb24oKS5wbGF0Zm9ybVNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuIFdL
Q2FjaGVkUmVzcG9uc2VGb3JSZXF1ZXN0KHN0b3JhZ2VTZXNzaW9uLCByZXF1ZXN0LmdldCgpKTsK
IAogICAgIHJldHVybiBbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIGNhY2hlZFJlc3BvbnNl
Rm9yUmVxdWVzdDpyZXF1ZXN0LmdldCgpXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcAkocmV2
aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZv
cm1TdHJhdGVnaWVzRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsMzQgKzg2LDM0IEBAIHZv
aWQgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpub3RpZnlDb29raWUKIHsKIH0KIAotU3RyaW5nIFBs
YXRmb3JtU3RyYXRlZ2llc0VmbDo6Y29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29u
dGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBs
YXRmb3JtU3RyYXRlZ2llc0VmbDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkK
IHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShjb250ZXh0LCBmaXJzdFBhcnR5
LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0
UGFydHksIHVybCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpzZXRDb29raWVz
RnJvbURPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgUGxh
dGZvcm1TdHJhdGVnaWVzRWZsOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7Ci0gICAgV2ViQ29yZTo6c2V0Q29va2ll
c0Zyb21ET00oY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOworICAgIFdl
YkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2ll
U3RyaW5nKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNvb2tpZXNFbmFibGVk
KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJiB1cmwpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y29va2llc0VuYWJsZWQo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFi
bGVkKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tp
ZXNFbmFibGVkKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLVN0cmluZyBQbGF0Zm9y
bVN0cmF0ZWdpZXNFZmw6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdD
b250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwp
CitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmly
c3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmdldFJhd0Nv
b2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHks
IGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIFBsYXRm
b3JtU3RyYXRlZ2llc0VmbDo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVj
dG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nv
b2tpZXMoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKKyAgICByZXR1cm4g
V2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tp
ZXMpOwogfQogCi12b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6ZGVsZXRlQ29va2llKE5ldHdv
cmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29v
a2llTmFtZSkKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpkZWxldGVDb29raWUoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgY29va2llTmFtZSkKIHsKLSAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoY29udGV4dCwg
dXJsLCBjb29raWVOYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc2Vzc2lvbiwgdXJs
LCBjb29raWVOYW1lKTsKIH0KIAogdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OnJlZnJlc2hQ
bHVnaW5zKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3Jt
U3RyYXRlZ2llc0VmbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaAkod29y
a2luZyBjb3B5KQpAQCAtNDcsMTIgKzQ3LDEyIEBAIHByaXZhdGU6CiAKICAgICAvLyBXZWJDb3Jl
OjpDb29raWVzU3RyYXRlZ3kKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQo
KTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKFdlYkNvcmU6Ok5ldHdvcmtpbmdD
b250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
S1VSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShXZWJDb3JlOjpOZXR3
b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wgY29va2llc0Vu
YWJsZWQoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0g
ICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2ll
KFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0
IFN0cmluZyYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJv
bURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7
CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVh
bCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYs
IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tp
ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5
CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgpJbmRleDogU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdp
ZXNHdGsuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCwz
NCArODAsMzQgQEAgdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6Om5vdGlmeUNvb2tpZQogewog
fQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjb29raWVzRm9yRE9NKE5ldHdvcmtp
bmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1
cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjb29raWVzRm9yRE9NKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYgdXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKGNvbnRl
eHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00o
c2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNH
dGs6OnNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3Ry
aW5nKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKLSAgICBXZWJD
b3JlOjpzZXRDb29raWVzRnJvbURPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0
cmluZyk7CisgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbiwgZmlyc3RQYXJ0
eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQogCi1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6
Y29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpj
b29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6Y29va2llc0VuYWJsZWQoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4g
V2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAot
U3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNv
bnN0IEtVUkwmIHVybCkKK1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVybiBX
ZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb250ZXh0LCBmaXJzdFBhcnR5
LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1ib29sIFBsYXRmb3JtU3RyYXRlZ2ll
c0d0azo6Z2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2ll
cykKK2Jvb2wgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6Z2V0UmF3Q29va2llcyhjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMp
OworICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHNlc3Npb24sIGZpcnN0UGFydHks
IHVybCwgcmF3Q29va2llcyk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpkZWxl
dGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmRlbGV0
ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIFdlYkNvcmU6OmRlbGV0ZUNv
b2tpZShjb250ZXh0LCB1cmwsIGNvb2tpZU5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tp
ZShzZXNzaW9uLCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCiAvLyBQbHVnaW5TdHJhdGVneQpJbmRl
eDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3Rr
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZv
cm1TdHJhdGVnaWVzR3RrLmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NiwxMiArNDYsMTIgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJh
dGVneQogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDb29raWVzQ2hhbmdlZCgpOwotICAgIHZpcnR1
YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAg
dmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0
KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYs
IGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChXZWJDb3Jl
OjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIGJv
b2wgZ2V0UmF3Q29va2llcyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNv
cmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29y
ZTo6Q29va2llPiYpOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6TmV0
d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7Cisg
ICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFs
IGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYp
OworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3
Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBT
dHJpbmcmKTsKIAogICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kKICAgICAvLyAtIFVz
aW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNp
b24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2ICsxMDgsNyBAQAogI2ltcG9y
dCA8V2ViQ29yZS9Nb3VzZUV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUGx1Z2luVmlld0Jhc2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUHJvdGVjdGlv
blNwYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIu
aD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTMgKzI3LDggQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQoZnJhbWUpKTsKICAgICB9
CiAKLSAgICBzdGF0aWMgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50
aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyB2b2lkIHN3aXRjaFRvTmV3VGVz
dGluZ1Nlc3Npb24oKTsKICAgICBzdGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKCk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsK
LSAgICBzdGF0aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBkZWZhdWx0U3RvcmFnZVNlc3Npb24o
KTsKLQotICAgIHN0YXRpYyB2b2lkIHNldENvb2tpZUFjY2VwdFBvbGljeUZvclRlc3RpbmdDb250
ZXh0KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAKIHByaXZhdGU6CiAgICAgV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dChXZWJDb3JlOjpGcmFtZSogZnJhbWUpCkBAIC00Myw4ICszOCw3IEBA
IHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSBj
b25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgbG9jYWxGaWxlQ29udGVudFNuaWZmaW5n
RW5hYmxlZCgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBpblByaXZhdGVCcm93
c2luZ01vZGUoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIENGVVJMU3RvcmFnZVNlc3Np
b25SZWYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjaGVkdWxlUGFpckhhc2hTZXQqIHNjaGVkdWxlZFJ1
bkxvb3BQYWlycygpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29u
c3QgT1ZFUlJJREU7CiB9OwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZpc2lv
biAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAjaW1w
b3J0ICJXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgiCiAKICNpbXBvcnQgPFdlYkNvcmUvRnJh
bWVMb2FkZXJDbGllbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VF
cnJvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgpAQCAtMjgsOCArMjksMTEgQEAK
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uOwotc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25S
ZWYgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb247CitzdGF0aWMgT3duUHRyPE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbj4mIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+LCBzZXNzaW9u
LCAoKSk7CisgICAgcmV0dXJuIHNlc3Npb247Cit9CiAKIGJvb2wgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6bmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSBjb25zdAogewpAQCAtNTEsNjkgKzU1
LDI3IEBAIFJlc291cmNlRXJyb3IgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDoKICAgICByZXR1
cm4gZnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgpLT5ibG9ja2VkRXJyb3IocmVxdWVzdCk7CiB9
CiAKLXN0YXRpYyBTdHJpbmcmIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmll
ckJhc2UoKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIGJhc2UsICgpKTsKLSAgICByZXR1cm4gYmFzZTsKLX0KLQotdm9pZCBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lv
bklkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKLXsKLSAgICBwcml2YXRl
QnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkgPSBpZGVudGlmaWVyOwotfQot
Ci12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Np
b24oKQotewotICAgIC8vIFNldCBhIHByaXZhdGUgc2Vzc2lvbiBmb3IgdGVzdGluZyB0byBhdm9p
ZCBpbnRlcmZlcmluZyB3aXRoIGdsb2JhbCBjb29raWVzLiBUaGlzIHNob3VsZCBiZSBkaWZmZXJl
bnQgZnJvbSBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb24uCi0gICAgaWYgKGRlZmF1bHRDRlN0b3Jh
Z2VTZXNzaW9uKQotICAgICAgICBDRlJlbGVhc2UoZGVmYXVsdENGU3RvcmFnZVNlc3Npb24pOwot
ICAgIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uID0gV0tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Np
b24oQ0ZTVFIoIlByaXZhdGUgV2ViS2l0IFNlc3Npb24iKSk7Ci19Ci0KIHZvaWQgV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNl
c3Npb24pCisgICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFN0cmluZyBiYXNlID0gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b25JZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpID8gU3RyaW5nKFtbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gYnVuZGxlSWRlbnRpZmllcl0pIDogcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVu
dGlmaWVyQmFzZSgpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVudGlmaWVyID0g
U3RyaW5nKGJhc2UgKyAiLlByaXZhdGVCcm93c2luZyIpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0KLSAg
ICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbiA9IFdLQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VT
ZXNzaW9uKGNmSWRlbnRpZmllci5nZXQoKSk7CisgICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNl
c3Npb24oKSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbihbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKIH0KIAogdm9p
ZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bigpCiB7Ci0gICAgaWYgKCFwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbikKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgQ0ZSZWxlYXNlKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKTsK
LSAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbiA9IDA7Ci19Ci0KLUNGVVJMU3RvcmFn
ZVNlc3Npb25SZWYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCkKLXsKLSAgICByZXR1cm4gZGVmYXVsdENGU3RvcmFnZVNlc3Npb247CisgICAgcHJpdmF0
ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSA9IG51bGxwdHI7CiB9CiAKLWJvb2wgV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dDo6aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QKK05ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24o
KSBjb25zdAogewotICAgIHJldHVybiBmcmFtZSgpICYmIGZyYW1lKCktPnNldHRpbmdzKCkgJiYg
ZnJhbWUoKS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwotfQotCi1DRlVS
TFN0b3JhZ2VTZXNzaW9uUmVmIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNz
aW9uKCkgY29uc3QKLXsKLSAgICBpZiAoaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkpIHsKLSAgICAg
ICAgQVNTRVJUKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKTsKLSAgICAgICAgcmV0dXJu
IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uOworICAgIGJvb2wgaW5Qcml2YXRlQnJvd3Np
bmdNb2RlID0gZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpICYmIGZyYW1lKCktPnNldHRp
bmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBpZiAoaW5Qcml2YXRlQnJvd3Np
bmdNb2RlKSB7CisgICAgICAgIEFTU0VSVChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigp
KTsKKyAgICAgICAgcmV0dXJuICpwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpOwogICAg
IH0KLSAgICByZXR1cm4gZGVmYXVsdENGU3RvcmFnZVNlc3Npb247CisgICAgcmV0dXJuIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKLXZvaWQgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yVGVzdGluZ0Nv
bnRleHQoTlNIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSkKLXsKLSAgICBBU1NFUlQoZGVm
YXVsdENGU3RvcmFnZVNlc3Npb24pOwotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdl
UmVmPiBkZWZhdWx0Q29va2llU3RvcmFnZSA9IGFkb3B0Q0YoV0tDb3B5SFRUUENvb2tpZVN0b3Jh
Z2UoZGVmYXVsdENGU3RvcmFnZVNlc3Npb24pKTsKLSAgICBXS1NldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3koZGVmYXVsdENvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7Ci19CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDEz
ICs1MywxMiBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5CiAg
ICAgdmlydHVhbCB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkKCkgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gZGVmYXVsdENvb2tpZVN0b3Jh
Z2UoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKFdlYkNvcmU6
Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVz
RnJvbURPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoV2ViQ29yZTo6TmV0d29ya2luZ0Nv
bnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpL
VVJMJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBib29sIGdldFJhd0Nvb2tpZXMoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4mKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2ll
KFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0
IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJM
JiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFi
bGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGdldFJh
d0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0
cmF0ZWd5CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgpJbmRleDogU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04
Nyw0NyArODcsMzQgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Om5vdGlmeUNvb2tpZQog
ewogfQogCi1SZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpkZWZhdWx0Q29va2llU3RvcmFnZSgpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIGlmIChDRlVS
TFN0b3JhZ2VTZXNzaW9uUmVmIHNlc3Npb24gPSBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpk
ZWZhdWx0U3RvcmFnZVNlc3Npb24oKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoV0tDb3B5SFRU
UENvb2tpZVN0b3JhZ2Uoc2Vzc2lvbikpOwotCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICByZXR1
cm4gV0tHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UoKTsKLSNlbHNlCi0gICAgLy8gV2hlbiB1
c2luZyBOU1VSTENvbm5lY3Rpb24sIHdlIGFsc28gdXNlIGl0cyBzaGFyZWQgY29va2llIHN0b3Jh
Z2UuCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQotewotICAgIHJldHVybiBXZWJDb3JlOjpj
b29raWVzRm9yRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNv
cmU6OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0
cmluZykKIHsKLSAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShjb250ZXh0LCBmaXJzdFBh
cnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CisgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00o
c2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQogCi1ib29sIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsK
LSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoY29udGV4dCwgZmlyc3RQYXJ0eSwg
dXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQ
YXJ0eSwgdXJsKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJs
KQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1ib29s
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCog
Y29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8
Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdD
b29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykK
IHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhjb250ZXh0LCBmaXJzdFBhcnR5
LCB1cmwsIHJhd0Nvb2tpZXMpOworICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHNl
c3Npb24sIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7CiB9CiAKLXZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewotICAg
IFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShjb250ZXh0LCB1cmwsIGNvb2tpZU5hbWUpOworICAgIFdl
YkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCiB2b2lk
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVmcmVzaFBsdWdpbnMoKQpJbmRleDogU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiAxMzg0MDcpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC00MCw3ICs0MCw3IEBACiAjaW1wb3J0ICJXZWJOU0RpY3Rpb25hcnlFeHRyYXMuaCIK
ICNpbXBvcnQgIldlYk5TVVJMRXh0cmFzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2VDRk5ldC5oPgor
I2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNv
cmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtMTI4
NiwxMiArMTI4NiwxMyBAQCArICh2b2lkKV9zZXRJQkNyZWF0b3JJRDooTlNTdHJpbmcgKilzdHJp
CiAKICsgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uCiB7Ci0g
ICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigp
OworICAgIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKCkKKyAgICBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKIH0KIAogKyAodm9pZClfc2V0Q3Vy
cmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVB
Y2NlcHRQb2xpY3kpcG9saWN5CiB7Ci0gICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0
Q29va2llQWNjZXB0UG9saWN5Rm9yVGVzdGluZ0NvbnRleHQocG9saWN5KTsKKyAgICBXS1NldEhU
VFBDb29raWVBY2NlcHRQb2xpY3koTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFn
ZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHBvbGljeSk7CiB9CiAKIC0gKEJPT0wp
aXNET01QYXN0ZUFsbG93ZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0J
KHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjAxNiw3ICsyMDE2LDcgQEAgLSAoTlNDYWNoZWRVUkxSZXNw
b25zZSAqKV9jYWNoZWRSZXNwb25zZQogICAgIGlmICghX3ByaXZhdGUtPnBhZ2UpCiAgICAgICAg
IHJldHVybiBuaWw7CiAKLSAgICBpZiAoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vz
c2lvbiA9IF9wcml2YXRlLT5wYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPm5ldHdvcmtpbmdD
b250ZXh0KCktPnN0b3JhZ2VTZXNzaW9uKCkpCisgICAgaWYgKENGVVJMU3RvcmFnZVNlc3Npb25S
ZWYgc3RvcmFnZVNlc3Npb24gPSBfcHJpdmF0ZS0+cGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigp
LT5uZXR3b3JraW5nQ29udGV4dCgpLT5zdG9yYWdlU2Vzc2lvbigpLnBsYXRmb3JtU2Vzc2lvbigp
KQogICAgICAgICBjYWNoZWRSZXNwb25zZSA9IFdLQ2FjaGVkUmVzcG9uc2VGb3JSZXF1ZXN0KHN0
b3JhZ2VTZXNzaW9uLCByZXF1ZXN0LmdldCgpKTsKICAgICBlbHNlCiAgICAgICAgIGNhY2hlZFJl
c3BvbnNlID0gW1tOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXSBjYWNoZWRSZXNwb25zZUZvclJl
cXVlc3Q6cmVxdWVzdC5nZXQoKV07CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmNwcAkocmV2aXNpb24gMTM4
NDA3KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdp
ZXNRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDM0ICs5OSwzNCBAQCB2b2lkIFBsYXRmb3Jt
U3RyYXRlZ2llc1F0Ojpub3RpZnlDb29raWVzCiB7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVN0cmF0
ZWdpZXNRdDo6Y29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3Qg
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRl
Z2llc1F0Ojpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVy
biBXZWJDb3JlOjpjb29raWVzRm9yRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAg
cmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsK
IH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6c2V0Q29va2llc0Zyb21ET00oTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2ll
c1F0OjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBjb29raWVTdHJpbmcpCiB7Ci0gICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oY29udGV4
dCwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNldENvb2tp
ZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAot
Ym9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK2Jv
b2wgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYg
dXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChjb250ZXh0LCBmaXJz
dFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzZXNzaW9u
LCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1T
dHJhdGVnaWVzUXQ6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQog
Ci1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZl
Y3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Z2V0
UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tp
ZXMpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoY29udGV4dCwgZmlyc3RQ
YXJ0eSwgdXJsLCByYXdDb29raWVzKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2ll
cyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12b2lkIFBsYXRm
b3JtU3RyYXRlZ2llc1F0OjpkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBQbGF0Zm9y
bVN0cmF0ZWdpZXNRdDo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0g
ICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKGNvbnRleHQsIHVybCwgY29va2llTmFtZSk7CisgICAg
V2ViQ29yZTo6ZGVsZXRlQ29va2llKHNlc3Npb24sIHVybCwgY29va2llTmFtZSk7CiB9CiAKIHZv
aWQgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OnJlZnJlc2hQbHVnaW5zKCkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0
LmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
UGxhdGZvcm1TdHJhdGVnaWVzUXQuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsMTIgKzU4LDEyIEBA
IHByaXZhdGU6CiAgICAgCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5CiAgICAgdmly
dHVhbCB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29v
a2llc0ZvckRPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0Q29va2llc0Zyb21ET00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5n
Jik7Ci0gICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKFdlYkNvcmU6Ok5ldHdvcmtpbmdD
b250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
S1VSTCYpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29r
aWVzKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7
Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4
dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFN0
cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVz
RW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVh
bCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYp
OworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwogCiAg
ICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQogICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBp
bXBsZW1lbnRhdGlvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvb2tpZU1hbmFnZXJD
Rk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29va2llTWFuYWdl
ckNGTmV0LmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29v
a2llTWFuYWdlckNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogI2lu
Y2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIKIAogI2luY2x1ZGUgPENGTmV0d29yay9DRkhUVFBD
b29raWVzUHJpdi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llU3RvcmFnZUNGTmV0Lmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAxMzg0MDcp
CisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0
LDcgKzE1NCw2IEBACiAjaWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZV
UkxDYWNoZVByaXYuaD4KICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxQcm90b2NvbFByaXYuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2VDRk5ldC5oPgogI2luY2x1ZGUgPFdlYktp
dFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4gCiAjZW5kaWYKIApJbmRl
eDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw2IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJD
bGllbnQuaCIKICNpZiBVU0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUgPENGTmV0d29yay9DRkhUVFBD
b29raWVzUHJpdi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llU3RvcmFnZUNGTmV0Lmg+CiAj
ZW5kaWYKICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaWYgVVNFKENGTkVUV09SSykK
QEAgLTMzLDggKzMyLDExIEBACiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogI2lmIFVTRShD
Rk5FVFdPUkspCi1zdGF0aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBkZWZhdWx0Q0ZTdG9yYWdl
U2Vzc2lvbjsKLXN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uOworc3RhdGljIE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBwcml2
YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChP
d25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiwgc2Vzc2lvbiwgKCkpOworICAgIHJldHVybiBz
ZXNzaW9uOworfQogI2VuZGlmCiAKIFBhc3NSZWZQdHI8V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dD4gV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQpCkBAIC02OSw3NSArNzEsNDMgQEAgdm9pZCBXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjpzZXRQcml2YQogICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9u
SWRlbnRpZmllckJhc2UoKSA9IGlkZW50aWZpZXI7CiB9CiAKLXZvaWQgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpCi17Ci0jaWYgVVNFKENGTkVU
V09SSykKLSAgICAvLyBTZXQgYSBwcml2YXRlIHNlc3Npb24gZm9yIHRlc3RpbmcgdG8gYXZvaWQg
aW50ZXJmZXJpbmcgd2l0aCBnbG9iYWwgY29va2llcy4gVGhpcyBzaG91bGQgYmUgZGlmZmVyZW50
IGZyb20gcHJpdmF0ZSBicm93c2luZyBzZXNzaW9uLgotICAgIGRlZmF1bHRDRlN0b3JhZ2VTZXNz
aW9uID0gd2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTVFIoIlByaXZhdGUgV2ViS2l0
IFNlc3Npb24iKSwgZGVmYXVsdENGU3RvcmFnZVNlc3Npb24pOwotI2VuZGlmCi19Ci0KIHZvaWQg
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICNpZiBVU0UoQ0ZORVRXT1JLKQotICAg
IGlmIChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbikKKyAgICBpZiAocHJpdmF0ZUJyb3dz
aW5nU3RvcmFnZVNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGJhc2Ug
PSBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkuaXNOdWxsKCkg
PyBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZCdW5kbGVHZXRWYWx1ZUZv
ckluZm9EaWN0aW9uYXJ5S2V5KENGQnVuZGxlR2V0TWFpbkJ1bmRsZSgpLCBrQ0ZCdW5kbGVJZGVu
dGlmaWVyS2V5KSkpIDogcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFz
ZSgpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVudGlmaWVyID0gU3RyaW5nKGJh
c2UgKyAiLlByaXZhdGVCcm93c2luZyIpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgU3RyaW5nIGlk
ZW50aWZpZXJCYXNlID0gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFz
ZSgpLmlzTnVsbCgpID8gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQnVu
ZGxlR2V0VmFsdWVGb3JJbmZvRGljdGlvbmFyeUtleShDRkJ1bmRsZUdldE1haW5CdW5kbGUoKSwg
a0NGQnVuZGxlSWRlbnRpZmllcktleSkpKSA6IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9u
SWRlbnRpZmllckJhc2UoKTsKIAotICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uID0g
d2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpLCBkZWZhdWx0
Q0ZTdG9yYWdlU2Vzc2lvbik7CisgICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSA9
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihpZGVu
dGlmaWVyQmFzZSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
OjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7CiAjaWYgVVNFKENGTkVUV09SSykK
LSAgICBpZiAoIXByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKQotICAgICAgICByZXR1cm47
Ci0KLSAgICBDRlJlbGVhc2UocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pOwotICAgIHBy
aXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uID0gMDsKKyAgICBwcml2YXRlQnJvd3NpbmdTdG9y
YWdlU2Vzc2lvbigpID0gbnVsbHB0cjsKICNlbmRpZgogfQogCiAjaWYgVVNFKENGTkVUV09SSykK
LUNGVVJMU3RvcmFnZVNlc3Npb25SZWYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVmYXVs
dFN0b3JhZ2VTZXNzaW9uKCkKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIHJldHVybiBkZWZhdWx0
Q0ZTdG9yYWdlU2Vzc2lvbjsKLX0KLQotYm9vbCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpp
blByaXZhdGVCcm93c2luZ01vZGUoKSBjb25zdAotewotICAgIHJldHVybiBmcmFtZSgpICYmIGZy
YW1lKCktPnNldHRpbmdzKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCgpOwotfQotCi1DRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKLXsKLSAgICBib29sIHByaXZhdGVCcm93
c2luZ0VuYWJsZWQgPSBpblByaXZhdGVCcm93c2luZ01vZGUoKTsKLSAgICBpZiAocHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCkgewotICAgICAgICBBU1NFUlQocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNl
c3Npb24pOwotICAgICAgICByZXR1cm4gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb247Cisg
ICAgYm9vbCBpblByaXZhdGVCcm93c2luZ01vZGUgPSBmcmFtZSgpICYmIGZyYW1lKCktPnNldHRp
bmdzKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwor
ICAgIGlmIChpblByaXZhdGVCcm93c2luZ01vZGUpIHsKKyAgICAgICAgQVNTRVJUKHByaXZhdGVC
cm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpOworICAgICAgICByZXR1cm4gKnByaXZhdGVCcm93c2lu
Z1N0b3JhZ2VTZXNzaW9uKCk7CiAgICAgfQotICAgIHJldHVybiBkZWZhdWx0Q0ZTdG9yYWdlU2Vz
c2lvbjsKLX0KLQotdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29raWVBY2Nl
cHRQb2xpY3lGb3JUZXN0aW5nQ29udGV4dChDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5
IHBvbGljeSkKLXsKLSAgICBBU1NFUlQoZGVmYXVsdENGU3RvcmFnZVNlc3Npb24pOwotICAgIFJl
dGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBkZWZhdWx0Q29va2llU3RvcmFnZSA9IGFk
b3B0Q0Yod2tDb3B5SFRUUENvb2tpZVN0b3JhZ2UoZGVmYXVsdENGU3RvcmFnZVNlc3Npb24pKTsK
LSAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGRlZmF1bHRDb29r
aWVTdG9yYWdlLmdldCgpLCBwb2xpY3kpOworICAgIHJldHVybiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQogCiB2b2lkIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKENGSFRUUENvb2tp
ZVN0b3JhZ2VBY2NlcHRQb2xpY3kgcG9saWN5KQogewotICAgIGlmIChSZXRhaW5QdHI8Q0ZIVFRQ
Q29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGRlZmF1bHRDRkhUVFBDb29raWVTdG9y
YWdlKCkpCisgICAgaWYgKFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVT
dG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5j
b29raWVTdG9yYWdlKCkpCiAgICAgICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2Nl
cHRQb2xpY3koY29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKIAotICAgIGlmIChwcml2YXRl
QnJvd3NpbmdTdG9yYWdlU2Vzc2lvbikgewotICAgICAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2ll
U3RvcmFnZVJlZj4gcHJpdmF0ZUJyb3dzaW5nQ29va2llU3RvcmFnZSA9IGFkb3B0Q0Yod2tDb3B5
SFRUUENvb2tpZVN0b3JhZ2UocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pKTsKLSAgICAg
ICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShwcml2YXRlQnJvd3Np
bmdDb29raWVTdG9yYWdlLmdldCgpLCBwb2xpY3kpOwotICAgIH0KKyAgICBpZiAocHJpdmF0ZUJy
b3dzaW5nU3RvcmFnZVNlc3Npb24oKSkKKyAgICAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENv
b2tpZUFjY2VwdFBvbGljeShwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpLT5jb29raWVT
dG9yYWdlKCkuZ2V0KCksIHBvbGljeSk7CiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0LmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjks
MTQgKzI5LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0PiBjcmVhdGUoV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBXVEY6OlN0cmluZyYg
dXNlckFnZW50KTsKIAogICAgIHN0YXRpYyB2b2lkIHNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VT
ZXNzaW9uSWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIHZvaWQgc3dp
dGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOwogICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbigpOwogCiAjaWYgVVNFKENGTkVUV09SSykKLSAgICBzdGF0aWMgQ0ZVUkxTdG9yYWdl
U2Vzc2lvblJlZiBkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKLQotICAgIHN0YXRpYyB2b2lkIHNl
dENvb2tpZUFjY2VwdFBvbGljeUZvclRlc3RpbmdDb250ZXh0KENGSFRUUENvb2tpZVN0b3JhZ2VB
Y2NlcHRQb2xpY3kpOwogICAgIHN0YXRpYyB2b2lkIHNldENvb2tpZUFjY2VwdFBvbGljeUZvckFs
bENvbnRleHRzKENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kpOwogI2VuZGlmCiAKQEAg
LTUwLDggKzQ2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHVzZXJBZ2Vu
dCgpIGNvbnN0OwogICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgcmVmZXJyZXIoKSBjb25zdDsKICNp
ZiBVU0UoQ0ZORVRXT1JLKQotICAgIHZpcnR1YWwgYm9vbCBpblByaXZhdGVCcm93c2luZ01vZGUo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Np
b24oKSBjb25zdDsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c3RvcmFnZVNlc3Npb24oKSBjb25zdDsKICNlbmRpZgogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikg
Y29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysg
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODYsNDQgKzg2LDM0IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpub3RpZnlDb29raWUKIHsKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi1SZXRhaW5Q
dHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWZhdWx0
Q29va2llU3RvcmFnZSgpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9y
RE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIGlmIChDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmIHNlc3Npb24gPSBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0Yod2tDb3B5SFRUUENvb2tpZVN0b3JhZ2Uo
c2Vzc2lvbikpOwotCi0gICAgcmV0dXJuIHdrR2V0RGVmYXVsdEhUVFBDb29raWVTdG9yYWdlKCk7
Ci19Ci0jZW5kaWYKLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRP
TShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYgdXJsKQotewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKGNvbnRl
eHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00o
c2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3Ry
aW5nKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKLSAgICBXZWJD
b3JlOjpzZXRDb29raWVzRnJvbURPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0
cmluZyk7CisgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbiwgZmlyc3RQYXJ0
eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6Y29va2llc0VuYWJsZWQoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4g
V2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAot
U3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNv
bnN0IEtVUkwmIHVybCkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVybiBX
ZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb250ZXh0LCBmaXJzdFBhcnR5
LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Z2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2ll
cykKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6Z2V0UmF3Q29va2llcyhjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMp
OworICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHNlc3Npb24sIGZpcnN0UGFydHks
IHVybCwgcmF3Q29va2llcyk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxl
dGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0
ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIFdlYkNvcmU6OmRlbGV0ZUNv
b2tpZShjb250ZXh0LCB1cmwsIGNvb2tpZU5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tp
ZShzZXNzaW9uLCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6cmVmcmVzaFBsdWdpbnMoKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHJldmlzaW9uIDEz
ODQwNykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxNSArNTIsMTIgQEAgcHJpdmF0ZToKIAog
ICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneQogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlD
b29raWVzQ2hhbmdlZCgpOwotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBSZXRhaW5Q
dHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gZGVmYXVsdENvb2tpZVN0b3JhZ2UoKTsKLSNlbmRp
ZgotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oV2ViQ29yZTo6TmV0d29ya2luZ0Nv
bnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpL
VVJMJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKFdlYkNvcmU6Ok5ldHdv
cmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5h
YmxlZChXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNv
bnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCos
IGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBW
ZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUo
V2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3Qg
U3RyaW5nJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9t
RE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsK
KyAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNv
cmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFs
IGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2ll
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktV
UkwmLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kK
ICAgICAvLyAtIFVzaW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3Ry
YXRlZ2llc1dpbkNFLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC93aW5j
ZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgzLDM0ICs4MywzNCBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpub3Rp
ZnlDb29rCiB7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y29va2llc0Zv
ckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjb29raWVz
Rm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29r
aWVzRm9yRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6
OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBQbGF0
Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6c2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpzZXRD
b29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVT
dHJpbmcpCiB7Ci0gICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oY29udGV4dCwgZmlyc3RQ
YXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9N
KHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBQbGF0
Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgUGxh
dGZvcm1TdHJhdGVnaWVzV2luQ0U6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJs
KQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChjb250ZXh0LCBmaXJzdFBh
cnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzZXNzaW9uLCBm
aXJzdFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1T
dHJhdGVnaWVzV2luQ0U6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwog
fQogCi1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpnZXRSYXdDb29raWVzKE5ldHdvcmtp
bmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1
cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNX
aW5DRTo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4m
IHJhd0Nvb2tpZXMpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoY29udGV4
dCwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Z2V0
UmF3Q29va2llcyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12
b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQor
dm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNv
b2tpZU5hbWUpCiB7Ci0gICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKGNvbnRleHQsIHVybCwgY29v
a2llTmFtZSk7CisgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHNlc3Npb24sIHVybCwgY29va2ll
TmFtZSk7CiB9CiAKIHZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OnJlZnJlc2hQbHVnaW5z
KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJh
dGVnaWVzV2luQ0UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVT
dXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNv
dXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0Uu
aAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTIgKzUxLDEyIEBAIHByaXZhdGU6CiAKICAgICAvLyBX
ZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0No
YW5nZWQoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKFdlYkNvcmU6Ok5ldHdv
cmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShXZWJDb3Jl
OjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wgY29v
a2llc0VuYWJsZWQoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBTdHJp
bmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRl
eHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJM
Jik7Ci0gICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoV2ViQ29yZTo6TmV0d29ya2luZ0Nv
bnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpL
VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRl
Q29va2llKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYs
IGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29r
aWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3Ry
aW5nJik7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAg
dmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0
cmF0ZWd5CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgo=
</data>
<flag name="commit-queue"
          id="197903"
          type_id="3"
          status="-"
          setter="gtk-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180594</attachid>
            <date>2012-12-21 22:55:36 -0800</date>
            <delta_ts>2012-12-21 22:57:34 -0800</delta_ts>
            <desc>patch for EWS</desc>
            <filename>StorageSession.txt</filename>
            <type>text/plain</type>
            <size>115709</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjAyOCw2ICsyMDI4LDcgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRUUFZhbGlkYXRpb24u
Y3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcAogICAgIHBsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCisgICAgcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29u
dGVudFR5cGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuY3BwCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNTc2MCw2ICs1NzYwLDcgQEAgd2ViY29y
ZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Byb3h5U2VydmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0YXRlTm90aWZpZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdGF0ZU5vdGlmaWVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9u
IDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAg
LTEwNjEsNiArMTA2MSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRU
UFZhbGlkYXRpb24uY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwIFwK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCBcCisgICAgcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcCBcCiAgICAgcGxhdGZv
cm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsv
UHJvdGVjdGlvblNwYWNlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5j
cHAgXApAQCAtMjI3Myw2ICsyMjc0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0
d29yay9IVFRQVmFsaWRhdGlvbi5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBTdGF0dXND
b2Rlcy5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmluZy5oIFwKKyAgICBwbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIFwKICAgICBwbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtpbmdDb250ZXh0LmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
YXRlTm90aWZpZXIuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5o
IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjA3LDcgKzIwNyw3IEBA
IF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yRDFFdgogX19aTjdXZWJDb3JlMTJjYWNoZVN0b3Jh
Z2VFdgogX19aTjdXZWJDb3JlMTJjcmVhdGVNYXJrdXBFUEtOU180Tm9kZUVOU18xM0VDaGlsZHJl
bk9ubHlFUE4zV1RGNlZlY3RvcklQUzBfTG0wRUVFTlNfMTNFQWJzb2x1dGVVUkxzRVBOUzVfSU5T
XzEzUXVhbGlmaWVkTmFtZUVMbTBFRUUKIF9fWk43V2ViQ29yZTEyY3JlYXRlTWFya3VwRVBLTlNf
NVJhbmdlRVBOM1dURjZWZWN0b3JJUE5TXzROb2RlRUxtMEVFRU5TXzIzRUFubm90YXRlRm9ySW50
ZXJjaGFuZ2VFYk5TXzEzRUFic29sdXRlVVJMc0UKLV9fWk43V2ViQ29yZTEyZGVsZXRlQ29va2ll
RVBOU18xN05ldHdvcmtpbmdDb250ZXh0RVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdFCitfX1pO
N1dlYkNvcmUxMmRlbGV0ZUNvb2tpZUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNf
NEtVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMmdjQ29udHJvbGxlckV2CiBfX1pO
N1dlYkNvcmUxMmljb25EYXRhYmFzZUV2CiBfX1pON1dlYkNvcmUxMnRvVWludDhBcnJheUVOM0pT
QzdKU1ZhbHVlRQpAQCAtMjM2LDEwICsyMzYsMTAgQEAgX19aTjdXZWJDb3JlMTNSZXNvdXJjZUVy
cm9yQzFFUDdOU0Vycm9yCiBfX1pON1dlYkNvcmUxM1Jlc291cmNlRXJyb3JDMUVQOV9fQ0ZFcnJv
cgogX19aTjdXZWJDb3JlMTNTdHlsZWRFbGVtZW50MjJzZXRJbmxpbmVTdHlsZVByb3BlcnR5RU5T
XzEzQ1NTUHJvcGVydHlJREVSS04zV1RGNlN0cmluZ0ViCiBfX1pON1dlYkNvcmUxM1N0eWxlZEVs
ZW1lbnQyMnNldElubGluZVN0eWxlUHJvcGVydHlFTlNfMTNDU1NQcm9wZXJ0eUlERWROU18xN0NT
U1ByaW1pdGl2ZVZhbHVlOVVuaXRUeXBlc0ViCi1fX1pON1dlYkNvcmUxM2Nvb2tpZXNGb3JET01F
UE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VSTEVTNF8KK19fWk43V2ViQ29yZTEzY29v
a2llc0ZvckRPTUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfNEtVUkxFUzVfCiBf
X1pON1dlYkNvcmUxM2NyZWF0ZVdyYXBwZXJFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUds
b2JhbE9iamVjdEVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUxM2RpcmVjdG9yeU5hbWVFUktOM1dU
RjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxM2dldFJhd0Nvb2tpZXNFUE5TXzE3TmV0d29ya2luZ0Nv
bnRleHRFUktOU180S1VSTEVTNF9STjNXVEY2VmVjdG9ySU5TXzZDb29raWVFTG0wRUVFCitfX1pO
N1dlYkNvcmUxM2dldFJhd0Nvb2tpZXNFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05T
XzRLVVJMRVM1X1JOM1dURjZWZWN0b3JJTlNfNkNvb2tpZUVMbTBFRUUKIF9fWk43V2ViQ29yZTEz
dG9BcnJheUJ1ZmZlckVOM0pTQzdKU1ZhbHVlRQogX19aTjdXZWJDb3JlMTN0b0hUTUxFbGVtZW50
RVBOU18yMUZvcm1Bc3NvY2lhdGVkRWxlbWVudEUKIF9fWk43V2ViQ29yZTEzdG9KU0RPTVdpbmRv
d0VOM0pTQzdKU1ZhbHVlRQpAQCAtMjU0LDYgKzI1NCwxMCBAQCBfX1pON1dlYkNvcmUxNERvY3Vt
ZW50TG9hZGVyMTNhdHRhY2hUb0ZyCiBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTVkZXRh
Y2hGcm9tRnJhbWVFdgogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjE4YWRkQXJjaGl2ZVJl
c291cmNlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzE1QXJjaGl2ZVJlc291cmNlRUVFCiBfX1pON1dl
YkNvcmUxNFJlc291cmNlTG9hZGVyMzJkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUVS
S05TXzIzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VFCitfX1pON1dlYkNvcmUxNGNvb2tpZXNFbmFi
bGVkRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU180S1VSTEVTNV8KK19fWk43V2Vi
Q29yZTE3c2V0Q29va2llc0Zyb21ET01FUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05T
XzRLVVJMRVM1X1JLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMjFOZXR3b3JrU3RvcmFnZVNl
c3Npb24yMWRlZmF1bHRTdG9yYWdlU2Vzc2lvbkV2CitfX1pON1dlYkNvcmUyMU5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjI1c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbkV2CiBfX1pON1dlYkNvcmUyMVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTExZGVzZXJpYWxpemVFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMxXzE0
SlNHbG9iYWxPYmplY3RFUE4zV1RGNlZlY3RvcklOUzZfNlJlZlB0cklOU18xMU1lc3NhZ2VQb3J0
RUVFTG0xRUVFTlNfMjJTZXJpYWxpemF0aW9uRXJyb3JNb2RlRQogX19aTjdXZWJDb3JlMjFTZXJp
YWxpemVkU2NyaXB0VmFsdWU2Y3JlYXRlRVBOM0pTQzlFeGVjU3RhdGVFTlMxXzdKU1ZhbHVlRVBO
M1dURjZWZWN0b3JJTlM1XzZSZWZQdHJJTlNfMTFNZXNzYWdlUG9ydEVFRUxtMUVFRVBOUzZfSU5T
N19JTlM1XzExQXJyYXlCdWZmZXJFRUVMbTFFRUVOU18yMlNlcmlhbGl6YXRpb25FcnJvck1vZGVF
CiBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTZjcmVhdGVFUktOM1dURjZTdHJp
bmdFCkBAIC0yODQsNyArMjg4LDYgQEAgX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjlzZWxl
Y3RBbGxFdgogX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbkMxRVBOU181RnJhbWVFCiBfX1pO
N1dlYkNvcmUxNExvYWRlclN0cmF0ZWd5MjFyZXNvdXJjZUxvYWRTY2hlZHVsZXJFdgogX19aTjdX
ZWJDb3JlMTRQbHVnaW5Eb2N1bWVudDEwcGx1Z2luTm9kZUV2Ci1fX1pON1dlYkNvcmUxNGNvb2tp
ZXNFbmFibGVkRVBOU18xN05ldHdvcmtpbmdDb250ZXh0RVJLTlNfNEtVUkxFUzRfCiBfX1pOSzdX
ZWJDb3JlNUZyYW1lMjV0cmFja2VkUmVwYWludFJlY3RzQXNUZXh0RXYKIF9fWk43V2ViQ29yZTlG
cmFtZVZpZXcxN3NldFRyYWNrc1JlcGFpbnRzRWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMHJl
c2V0VHJhY2tlZFJlcGFpbnRzRXYKQEAgLTQ4OCw3ICs0OTEsNyBAQCBfX1pON1dlYkNvcmUxNlZp
c2libGVTZWxlY3Rpb25DMUVSS05TXzE1CiBfX1pON1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb25D
MUVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRWIKIF9fWk43V2ViQ29yZTE2Y3JlYXRlRnVsbE1hcmt1
cEVQS05TXzROb2RlRQogX19aTjdXZWJDb3JlMTZjcmVhdGVGdWxsTWFya3VwRVBLTlNfNVJhbmdl
RQotX19aTjdXZWJDb3JlMTZkZWxldGVBbGxDb29raWVzRVBOU18xN05ldHdvcmtpbmdDb250ZXh0
RQorX19aTjdXZWJDb3JlMTZkZWxldGVBbGxDb29raWVzRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNl
c3Npb25FCiBfX1pON1dlYkNvcmUxNmVuY2xvc2luZ0ludFJlY3RFUktOU185RmxvYXRSZWN0RQog
X19aTjdXZWJDb3JlMTZpc0VuZE9mUGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNf
MjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCiBfX1pON1dlYkNvcmUxNmlzVXNlclZpc2li
bGVVUkxFUDhOU1N0cmluZwpAQCAtNTExLDcgKzUxNCw2IEBAIF9fWk43V2ViQ29yZTE3U3VicmVz
b3VyY2VMb2FkZXI2Y3JlYXRlRVAKIF9fWk43V2ViQ29yZTE3Vmlld3BvcnRBcmd1bWVudHMxOWRl
cHJlY2F0ZWRUYXJnZXREUElFCiBfX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0dXJlRVBOU18x
N0pTRE9NR2xvYmFsT2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNsYXNzSW5mb0UKIF9f
Wk43V2ViQ29yZTE3b3BlblRlbXBvcmFyeUZpbGVFUktOM1dURjZTdHJpbmdFUmkKLV9fWk43V2Vi
Q29yZTE3c2V0Q29va2llc0Zyb21ET01FUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VS
TEVTNF9SS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE3dXNlclZpc2libGVTdHJpbmdFUDVO
U1VSTAogX19aTjdXZWJDb3JlMThET01XaW5kb3dFeHRlbnNpb25DMUVQTlNfNUZyYW1lRVBOU18x
NURPTVdyYXBwZXJXb3JsZEUKIF9fWk43V2ViQ29yZTE4SFRNTENvbnRlbnRFbGVtZW50NmNyZWF0
ZUVQTlNfOERvY3VtZW50RQpAQCAtNTk1LDYgKzU5Nyw3IEBAIF9fWk43V2ViQ29yZTIwcHJvdG9j
b2xJc0phdmFTY3JpcHRFUktOM1cKIF9fWk43V2ViQ29yZTIwU3BhY2VTcGxpdFN0cmluZ0RhdGFE
MUV2CiBfX1pON1dlYkNvcmUyMUJhY2tGb3J3YXJkQ29udHJvbGxlcjExaXRlbUF0SW5kZXhFaQog
X19aTjdXZWJDb3JlMjFNZW1vcnlQcmVzc3VyZUhhbmRsZXI3aW5zdGFsbEV2CitfX1pON1dlYkNv
cmUyMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjI4Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkVS
S04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIxUGxhdGZvcm1LZXlib2FyZEV2ZW50MjRkaXNh
bWJpZ3VhdGVLZXlEb3duRXZlbnRFTlNfMTNQbGF0Zm9ybUV2ZW50NFR5cGVFYgogX19aTjdXZWJD
b3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIxOXN0YXJ0UmVzb3VyY2VMb2FkZXJFUE5TXzE0UmVz
b3VyY2VMb2FkZXJFCiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjIwc2VydmVQ
ZW5kaW5nUmVxdWVzdHNFTlNfMjBSZXNvdXJjZUxvYWRQcmlvcml0eUUKQEAgLTY1MCw3ICs2NTMs
NyBAQCBfX1pON1dlYkNvcmUyM2NyZWF0ZUZyYWdtZW50RnJvbU5vZGVzRVBOCiBfX1pON1dlYkNv
cmUyM2RhdGFGb3JVUkxDb21wb25lbnRUeXBlRVA1TlNVUkxsCiBfX1pON1dlYkNvcmUyM2RlY29k
ZUhvc3ROYW1lV2l0aFJhbmdlRVA4TlNTdHJpbmc4X05TUmFuZ2UKIF9fWk43V2ViQ29yZTIzZW5j
b2RlSG9zdE5hbWVXaXRoUmFuZ2VFUDhOU1N0cmluZzhfTlNSYW5nZQotX19aTjdXZWJDb3JlMjNn
ZXRIb3N0bmFtZXNXaXRoQ29va2llc0VQTlNfMTdOZXR3b3JraW5nQ29udGV4dEVSTjNXVEY3SGFz
aFNldElOUzJfNlN0cmluZ0VOUzJfMTBTdHJpbmdIYXNoRU5TMl8xMEhhc2hUcmFpdHNJUzRfRUVF
RQorX19aTjdXZWJDb3JlMjNnZXRIb3N0bmFtZXNXaXRoQ29va2llc0VSS05TXzIxTmV0d29ya1N0
b3JhZ2VTZXNzaW9uRVJOM1dURjdIYXNoU2V0SU5TM182U3RyaW5nRU5TM18xMFN0cmluZ0hhc2hF
TlMzXzEwSGFzaFRyYWl0c0lTNV9FRUVFCiBfX1pON1dlYkNvcmUyNEJpbmFyeVByb3BlcnR5TGlz
dFdyaXRlcjE3d3JpdGVQcm9wZXJ0eUxpc3RFdgogX19aTjdXZWJDb3JlMjRDYWNoZWRSZXNvdXJj
ZUhhbmRsZUJhc2UxMXNldFJlc291cmNlRVBOU18xNENhY2hlZFJlc291cmNlRQogX19aTjdXZWJD
b3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIxMGZpcnN0Q2hpbGRFdgpAQCAtNjY5LDcgKzY3
Miw3IEBAIF9fWk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyQzIKIF9fWk43V2Vi
Q29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyRDJFdgogX19aTjdXZWJDb3JlMjRjcmVhdGVG
cmFnbWVudEZyb21NYXJrdXBFUE5TXzhEb2N1bWVudEVSS04zV1RGNlN0cmluZ0VTNV9OU18yN0Zy
YWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbkUKIF9fWk43V2ViQ29yZTI0ZGVjb2RlVVJMRXNjYXBl
U2VxdWVuY2VzRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMjRkZWxldGVDb29raWVzRm9y
SG9zdG5hbWVFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOM1dURjZTdHJpbmdFCitfX1pON1dl
YkNvcmUyNGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNz
aW9uRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjRmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b25FUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyNG5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdl
ZEUKIF9fWk43V2ViQ29yZTI1SGlzdG9yeVByb3BlcnR5TGlzdFdyaXRlcjExcmVsZWFzZURhdGFF
dgpAQCAtNjk2LDEwICs2OTksOSBAQCBfX1pON1dlYkNvcmUyN0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvCiBfX1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazE0c2V0T3Jp
ZW50YXRpb25FTjNXVEYxMFBhc3NSZWZQdHJJTlNfMjFEZXZpY2VPcmllbnRhdGlvbkRhdGFFRUUK
IF9fWk43V2ViQ29yZTI3RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrQzFFdgogX19aTjdXZWJD
b3JlMjdzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXNFdgotX19aTjdXZWJDb3JlMjZkZWZhdWx0
Q0ZIVFRQQ29va2llU3RvcmFnZUV2CiBfX1pON1dlYkNvcmUyOGVuY29kZVdpdGhVUkxFc2NhcGVT
ZXF1ZW5jZXNFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyOHJlbW92ZUxhbmd1YWdlQ2hh
bmdlT2JzZXJ2ZXJFUHYKLV9fWk43V2ViQ29yZTI5Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWVFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VSTEVTNF8KK19fWk43V2ViQ29yZTI5
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWVFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lv
bkVSS05TXzRLVVJMRVM1XwogX19aTjdXZWJDb3JlMjlpc0NoYXJhY3RlclNtYXJ0UmVwbGFjZUV4
ZW1wdEVpYgogX19aTjdXZWJDb3JlMzBob3N0TmFtZU5lZWRzRGVjb2RpbmdXaXRoUmFuZ2VFUDhO
U1N0cmluZzhfTlNSYW5nZQogX19aTjdXZWJDb3JlMzBob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRo
UmFuZ2VFUDhOU1N0cmluZzhfTlNSYW5nZQpAQCAtMTMzMCw2ICsxMzMyLDcgQEAgX19aTks3V2Vi
Q29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U2aXNIVAogX19aTks3V2ViQ29yZTIwUmVzb3VyY2VS
ZXNwb25zZUJhc2U4bWltZVR5cGVFdgogX19aTks3V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9s
bGVyMTJmb3J3YXJkQ291bnRFdgogX19aTks3V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9sbGVy
OWJhY2tDb3VudEV2CitfX1pOSzdXZWJDb3JlMjFOZXR3b3JrU3RvcmFnZVNlc3Npb24xM2Nvb2tp
ZVN0b3JhZ2VFdgogX19aTks3V2ViQ29yZTIxUmVuZGVyTGF5ZXJDb21wb3NpdG9yMTFzY3JvbGxM
YXllckV2CiBfX1pOSzdXZWJDb3JlMjFSZW5kZXJMYXllckNvbXBvc2l0b3IxNXJvb3RSZW5kZXJM
YXllckV2CiBfX1pOSzdXZWJDb3JlMjFVc2VyQ29udGVudFVSTFBhdHRlcm43bWF0Y2hlc0VSS05T
XzRLVVJMRQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC00MzY3LDYgKzQzNjcsNyBA
QAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmNwcCcsCkBAIC00Mzg2LDcg
KzQzODcsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRp
b25DRi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZO
ZXQuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VD
Rk5ldC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9y
YWdlQ0ZOZXQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9jZi9Eb3dubG9hZEJ1bmRsZS5o
JywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzI2MjEsNiArMzI2MjEsMTAgQEAKIAkJCQkJ
PgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3Jt
XG5ldHdvcmtcTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJ
CQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXE5ldHdvcmtp
bmdDb250ZXh0LmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBAIC0zMjg0NCwxMCArMzI4NDgsNiBA
QAogCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJCQkJPC9GaWxlPgogCQkJCQk8RmlsZQot
CQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXENvb2tpZVN0b3JhZ2VD
Rk5ldC5oIgotCQkJCQkJPgotCQkJCQk8L0ZpbGU+Ci0JCQkJCTxGaWxlCiAJCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAi
CiAJCQkJCQk+CiAJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTMyOTQwLDYgKzMyOTQwLDEw
IEBACiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAi
CisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKIAkJCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGxhdGZvcm1cbmV0d29ya1xjZlxQcm94eVNlcnZlckNGTmV0LmNwcCIKIAkJCQkJCT4KIAkJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDM3LDcgKzIwMzcsNiBAQAogCQk3RUU2ODQ2MTEyRDI2RTM4MDBFNzk0MTUgLyogQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdFRTY4NDRFMTJEMjZFMzgwMEU3OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdFRTY4NDYyMTJEMjZFMzgwMEU3OTQxNSAvKiBDb29raWVKYXJDRk5ldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ0RjEyRDI2RTM4
MDBFNzk0MTUgLyogQ29va2llSmFyQ0ZOZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2MzEyRDI2RTM4
MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDUwMTJEMjZFMzgwMEU3OTQxNSAvKiBDb29r
aWVTdG9yYWdlQ0ZOZXQuY3BwICovOyB9OwotCQk3RUU2ODQ2NDEyRDI2RTM4MDBFNzk0MTUgLyog
Q29va2llU3RvcmFnZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VF
Njg0NjUxMkQyNkUzODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NTIxMkQyNkUz
ODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2
NjEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1MzEyRDI2RTM4MDBFNzk0
MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgKi87IH07CiAJCTdFRTY4NDY3MTJEMjZFMzgw
MEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1NDEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURh
dGFTdHJlYW1DRk5ldC5oICovOyB9OwpAQCAtNjA5NSw2ICs2MDk0LDggQEAKIAkJRTEzNEY1QUIx
MkVFMzQzRjAwNEVDNThEIC8qIEludFJlY3RIYXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTM0RjVBQTEyRUUzNDNGMDA0RUM1OEQgLyogSW50UmVj
dEhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMTM5ODY2MzE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTM5ODY2MTE1NDc4NDc0MDAx
RTNGNjUgLyogU3R5bGVSZXNvbHZlci5jcHAgKi87IH07CiAJCUUxMzk4NjY0MTU0Nzg0NzQwMDFF
M0Y2NSAvKiBTdHlsZVJlc29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTM5ODY2MjE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5o
ICovOyB9OworCQlFMTNFRjM0NDE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTNF
RjM0MjE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTEzRUYzNDkxNjg1MEM0
NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxM0VGMzQ3MTY4NTBDNDcwMDM0Qzgz
RiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgKi87IH07CiAJCUUxM0YwMUYxMTI3
MEUxOTAwMERGQkE3MSAvKiBDb29raWVTdG9yYWdlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEzRjAxRjAxMjcwRTE5MDAwREZCQTcxIC8qIENv
b2tpZVN0b3JhZ2VNYWMubW0gKi87IH07CiAJCUUxNDI0QzhBMTY0QjNCNEUwMEYzMkQ0MCAvKiBQ
bGF0Zm9ybUNvb2tpZUphci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTE0MjRDODkxNjRCM0I0RTAwRjMyRDQwIC8qIFBsYXRmb3JtQ29va2llSmFyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTE0MjRD
OTAxNjRCNDYwQjAwRjMyRDQwIC8qIENvb2tpZUphck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNDI0QzhGMTY0QjQ2MEIwMEYzMkQ0MCAvKiBD
b29raWVKYXJNYWMubW0gKi87IH07CkBAIC05MzcwLDcgKzkzNzEsNiBAQAogCQk3RUU2ODQ0RTEy
RDI2RTM4MDBFNzk0MTUgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NEYxMkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZUph
ckNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvb2tpZUph
ckNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTAxMkQyNkUz
ODAwRTc5NDE1IC8qIENvb2tpZVN0b3JhZ2VDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDb29raWVTdG9yYWdlQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNG
TmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tpZVN0b3JhZ2VDRk5l
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1MjEyRDI2RTM4MDBFNzk0
MTUgLyogQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTMxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybURhdGFT
dHJlYW1DRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDU0MTJE
MjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZvcm1EYXRhU3RyZWFtQ0ZOZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEzNTc2LDYgKzEzNTc2LDggQEAKIAkJRTEzNEY1QUExMkVFMzQzRjAwNEVD
NThEIC8qIEludFJlY3RIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
dFJlY3RIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMzk4NjYxMTU0Nzg0
NzQwMDFFM0Y2NSAvKiBTdHlsZVJlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0eWxlUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMTM5ODY2MjE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZVJlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUxM0VGMzQyMTY4NEVDRjQwMDM0QzgzRiAvKiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxM0VGMzQ3MTY4NTBD
NDcwMDM0QzgzRiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxM0YwMUVBMTI3MEUxMEQwMERGQkE3MSAv
KiBDb29raWVTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tp
ZVN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEzRjAxRjAxMjcwRTE5
MDAwREZCQTcxIC8qIENvb2tpZVN0b3JhZ2VNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBDb29raWVTdG9yYWdlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMTQyNEM4OTE2NEIzQjRFMDBGMzJENDAgLyogUGxhdGZvcm1Db29raWVKYXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxhdGZvcm1Db29raWVKYXIuaDsg
cGF0aCA9IG5ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE1ODMzLDYgKzE1ODM1LDcgQEAKIAkJCQkzN0REQ0Q5MjEzODQ0RkQ1MDAwOEI3
OTMgLyogTUlNRUhlYWRlci5jcHAgKi8sCiAJCQkJMzdERENEOTMxMzg0NEZENTAwMDhCNzkzIC8q
IE1JTUVIZWFkZXIuaCAqLywKIAkJCQk2MjhEMjE0QjEyMTMxRUQxMDA1NURDRkMgLyogTmV0d29y
a2luZ0NvbnRleHQuaCAqLywKKwkJCQlFMTNFRjM0MjE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmggKi8sCiAJCQkJMUE3RkE2MUEwRERBM0JCRTAwMjhGOEE1IC8qIE5l
dHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCAqLywKIAkJCQkxQTdGQTYxODBEREEzQjNBMDAyOEY4QTUg
LyogTmV0d29ya1N0YXRlTm90aWZpZXIuaCAqLywKIAkJCQk0NDc5NTgwMjE2NDNCNDdCMDAxRTBB
N0YgLyogUGFyc2VkQ29udGVudFR5cGUuY3BwICovLApAQCAtMjA0MDMsMTMgKzIwNDA2LDEzIEBA
CiAJCQkJN0VFNjg0NEUxMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmggKi8sCiAJCQkJN0VFNjg0NEYxMkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZUphckNGTmV0LmNw
cCAqLywKIAkJCQk3RUU2ODQ1MDEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0
LmNwcCAqLywKLQkJCQk3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNG
TmV0LmggKi8sCiAJCQkJN0VFNjg0NTIxMkQyNkUzODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9y
YWdlQ0ZOZXQuY3BwICovLAogCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5l
dC5jcHAgKi8sCiAJCQkJN0VFNjg0NTMxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU0MTJEMjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0
cmVhbUNGTmV0LmggKi8sCiAJCQkJN0VFNjg0NTUxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1
bkxvb3BDRi5jcHAgKi8sCiAJCQkJN0VFNjg0NTYxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1
bkxvb3BDRi5oICovLAorCQkJCUUxM0VGMzQ3MTY4NTBDNDcwMDM0QzgzRiAvKiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb25DRk5ldC5jcHAgKi8sCiAJCQkJMUFGOEUxQzExMjU2NzNFMDAwMjMwRkY3IC8q
IFByb3h5U2VydmVyQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAv
KiBSZXNvdXJjZUVycm9yLmggKi8sCiAJCQkJN0VFNjg0NTgxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlRXJyb3JDRi5jcHAgKi8sCkBAIC0yMjg5NCw3ICsyMjg5Nyw2IEBACiAJCQkJRDhCNjE1
MkYxMDMyNDk1MTAwQzg1NTRBIC8qIENvb2tpZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzM5QjVC
NjMxMzFEQUEzMjAwRjQ4RDAyIC8qIENvb2tpZXNTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzNEMDIxMkQxMzFEQjM3QjAwNDA5MUE4IC8qIENvb2tpZVN0b3JhZ2UuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTdFRTY4NDY0MTJEMjZFMzgwMEU3OTQxNSAvKiBDb29raWVTdG9yYWdlQ0ZOZXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZFNkZENDg4MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29yZGlu
YXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZEMDQwQTE5ODlDQTAwN0ZCOEM1IC8qIENv
dW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCOTc5MEU4MjA2OTIwMEIyNTk2NSAvKiBD
b3VudGVyQ29udGVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTk4Miw2ICsyNTk4NCw3IEBACiAJ
CQkJRjM3QTU2MjMxNjc5Q0Y3QjAwQzU3MDQ2IC8qIEhlYXBHcmFwaFNlcmlhbGl6ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjg4OTBBMTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCODg5MEYxNjdEMzAxNjAwMTBDREE1
IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTEzRUYz
NDQxNjg0RUNGNDAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0yOTEwMCw2ICsyOTEwMyw3IEBACiAJCQkJMEZCODg5MEIxNjdEMkZBMTAwMTBDREE1
IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCODg5
MEUxNjdEMzAxNjAwMTBDREE1IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyMDlCNDU2QjE2Nzk2QTdFMDBFNTRFNEUgLyogSlNDcnlwdG9DdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTEzRUYzNDkxNjg1MEM0NzAwMzRDODNGIC8qIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nvb2tpZUphci5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db29raWVKYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTmV0
d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvb2tpZUphci5oIgogCiAjaWYg
VVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCkBAIC00Myw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4dChjb25z
dCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CisgICAgLy8gRklYTUU6IFJldHVybmluZyAwIG1lYW5z
IGZhbGxpbmcgYmFjayB0byBkZWZhdWx0IGNvbnRleHQuIFRoYXQncyBub3QgYSBjaG9pY2UgdGhh
dCBpcyBhcHByb3ByaWF0ZSB0byBkbyBhdCBydW50aW1lCiAgICAgaWYgKCFkb2N1bWVudCkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CkBA
IC01NCw1NyArNTYsNjggQEAgc3RhdGljIE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29u
dAogICAgIHJldHVybiBsb2FkZXItPm5ldHdvcmtpbmdDb250ZXh0KCk7CiB9CiAKKyNpZiBQTEFU
Rk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCitpbmxpbmUgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzdG9yYWdlU2Vzc2lvbihjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQgPSBuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCk7CisgICAg
cmV0dXJuIGNvbnRleHQgPyBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpIDogTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKK30KKyNkZWZpbmUgU0VTU0lPTihk
b2N1bWVudCkgc3RvcmFnZVNlc3Npb24oZG9jdW1lbnQpCisjZWxzZQorI2RlZmluZSBTRVNTSU9O
KGRvY3VtZW50KSBOZXR3b3JrU3RvcmFnZVNlc3Npb24obmV0d29ya2luZ0NvbnRleHQoZG9jdW1l
bnQpKQorI2VuZGlmCisKIFN0cmluZyBjb29raWVzKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgS1VSTCYgdXJsKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAgIHJl
dHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmNvb2tpZXNGb3JE
T00obmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgdXJsKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNT
dHJhdGVneSgpLT5jb29raWVzRm9yRE9NKFNFU1NJT04oZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsKICNlbHNlCi0gICAgcmV0dXJuIGNvb2tpZXNGb3JE
T00obmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgdXJsKTsKKyAgICByZXR1cm4gY29va2llc0ZvckRPTShTRVNTSU9OKGRvY3VtZW50
KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVybCk7CiAjZW5kaWYKIH0KIAog
dm9pZCBzZXRDb29raWVzKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykK
LSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPnNldENvb2tpZXNG
cm9tRE9NKG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlG
b3JDb29raWVzKCksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+Y29va2llc1N0cmF0ZWd5KCktPnNldENvb2tpZXNGcm9tRE9NKFNFU1NJT04oZG9jdW1lbnQp
LCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBjb29raWVTdHJpbmcpOwog
I2Vsc2UKLSAgICBzZXRDb29raWVzRnJvbURPTShuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCks
IGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZVN0cmluZyk7Cisg
ICAgc2V0Q29va2llc0Zyb21ET00oU0VTU0lPTihkb2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZVN0cmluZyk7CiAjZW5kaWYKIH0KIAogYm9vbCBj
b29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAjaWYgVVNFKFBMQVRG
T1JNX1NUUkFURUdJRVMpCi0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVz
U3RyYXRlZ3koKS0+Y29va2llc0VuYWJsZWQobmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBk
b2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgZG9jdW1lbnQtPmNvb2tpZVVSTCgpKTsK
KyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5jb29r
aWVzRW5hYmxlZChTRVNTSU9OKGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29r
aWVzKCksIGRvY3VtZW50LT5jb29raWVVUkwoKSk7CiAjZWxzZQotICAgIHJldHVybiBjb29raWVz
RW5hYmxlZChuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCBkb2N1bWVudC0+Y29va2llVVJMKCkpOworICAgIHJldHVybiBjb29raWVz
RW5hYmxlZChTRVNTSU9OKGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVz
KCksIGRvY3VtZW50LT5jb29raWVVUkwoKSk7CiAjZW5kaWYKIH0KIAogU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VS
TCYgdXJsKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAgIHJldHVybiBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFy
dHlGb3JDb29raWVzKCksIHVybCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5j
b29raWVzU3RyYXRlZ3koKS0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU0VTU0lPTihk
b2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpOwogI2Vsc2UK
LSAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUobmV0d29ya2luZ0NvbnRl
eHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsKKyAg
ICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU0VTU0lPTihkb2N1bWVudCks
IGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpOwogI2VuZGlmCiB9CiAKIGJv
b2wgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVy
bCwgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMpCiB7CiAjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJ
RVMpCi0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+
Z2V0UmF3Q29va2llcyhuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCksIGRvY3VtZW50LT5maXJz
dFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOworICAgIHJldHVybiBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmdldFJhd0Nvb2tpZXMoU0VTU0lPTihkb2N1
bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOwog
I2Vsc2UKLSAgICByZXR1cm4gZ2V0UmF3Q29va2llcyhuZXR3b3JraW5nQ29udGV4dChkb2N1bWVu
dCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOworICAg
IHJldHVybiBnZXRSYXdDb29raWVzKFNFU1NJT04oZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBjb29raWVzKTsKICNlbmRpZgogfQogCiB2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb29raWVOYW1lKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+ZGVsZXRlQ29va2llKG5l
dHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmRlbGV0ZUNvb2tpZShTRVNTSU9OKGRv
Y3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKICNlbHNlCi0gICAgZGVsZXRlQ29va2llKG5ldHdv
cmtpbmdDb250ZXh0KGRvY3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBkZWxldGVDb29r
aWUoU0VTU0lPTihkb2N1bWVudCksIHVybCwgY29va2llTmFtZSk7CiAjZW5kaWYKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxMzg0
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlSG9z
dC5oIgogI2luY2x1ZGUgIkFzeW5jRmlsZVN0cmVhbS5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gMTM4NDA3KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJDYWNoZVBvbGljeS5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJQdXJnZVByaW9yaXR5LmgiCisjaW5jbHVkZSAi
UmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0
LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAkocmV2
aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDMwICszMywyMiBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKE1B
QykgfHwgVVNFKENGTkVUV09SSykKLXR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0
b3JhZ2UqICBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgS1VSTDsKLWNsYXNzIE5ldHdvcmtpbmdDb250ZXh0OworY2xhc3MgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOwogc3RydWN0IENvb2tpZTsKIAogY2xhc3MgQ29va2llc1N0cmF0
ZWd5IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQoKSA9
IDA7CiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBS
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gZGVmYXVsdENvb2tpZVN0b3JhZ2UoKSA9
IDA7Ci0jZW5kaWYKLQotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2lu
Z0NvbnRleHQqLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmlu
ZykgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4
dCosIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmKSA9IDA7Ci0gICAgdmlydHVh
bCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOwotICAgIHZpcnR1YWwg
Ym9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+JikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiBjb29raWVOYW1lKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY29v
a2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXRS
YXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgfkNvb2tpZXNTdHJhdGVneSgpIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAkocmV2aXNpb24gMTM4
NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5k
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1
ZXN0LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOZXR3b3JrU3RvcmFnZVNlc3Np
b25faAorI2RlZmluZSBOZXR3b3JrU3RvcmFnZVNlc3Npb25faAorCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgUExBVEZP
Uk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQordHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTFN0
b3JhZ2VTZXNzaW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwordHlwZWRlZiBzdHJ1Y3QgT3Bh
cXVlQ0ZIVFRQQ29va2llU3RvcmFnZSogIENGSFRUUENvb2tpZVN0b3JhZ2VSZWY7CisjZW5kaWYK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOZXR3b3JraW5nQ29udGV4dDsKKworY2xh
c3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3
b3JrU3RvcmFnZVNlc3Npb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsK
KyAgICBzdGF0aWMgUGFzc093blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IGNyZWF0ZVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSk7CisKKyAgICBz
dGF0aWMgdm9pZCBzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7CisKKyNpZiBQTEFURk9STShN
QUMpIHx8IFVTRShDRk5FVFdPUkspCisgICAgLy8gTWF5IGJlIG51bGwsIGluIHdoaWNoIGNhc2Ug
YSBGb3VuZGF0aW9uIGRlZmF1bHQgc2hvdWxkIGJlIHVzZWQuCisgICAgQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZiBwbGF0Zm9ybVNlc3Npb24oKSB7IHJldHVybiBtX3BsYXRmb3JtU2Vzc2lvbi5nZXQo
KTsgfQorICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdl
KCkgY29uc3Q7CisgICAgYm9vbCBpc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSBjb25zdCB7IHJl
dHVybiBtX2lzUHJpdmF0ZTsgfQorI2Vsc2UKKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24oTmV0
d29ya2luZ0NvbnRleHQqKTsKKyAgICB+TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCk7CisgICAgTmV0
d29ya2luZ0NvbnRleHQqIGNvbnRleHQoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorI2lm
IFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Np
b24oQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBwbGF0Zm9ybVNlc3Npb24pOworICAgIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbigpOworICAgIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBt
X3BsYXRmb3JtU2Vzc2lvbjsKKyAgICBib29sIG1faXNQcml2YXRlOworI2Vsc2UKKyAgICBSZWZQ
dHI8TmV0d29ya2luZ0NvbnRleHQ+IG1fY29udGV4dDsKKyNlbmRpZgorfTsKKworI2lmIFBMQVRG
T1JNKFdJTikKKy8vIE5lZWRlZCBmb3IgV2ViS2l0MSBBUEkgb25seS4KK3ZvaWQgb3ZlcnJpZGVD
b29raWVTdG9yYWdlKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYpOworQ0ZIVFRQQ29va2llU3RvcmFn
ZVJlZiBvdmVycmlkZW5Db29raWVTdG9yYWdlKCk7CisjZW5kaWYKKworfQorCisjZW5kaWYgLy8g
TmV0d29ya1N0b3JhZ2VTZXNzaW9uX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uU3R1Yi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmgiCisKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCisg
ICAgOiBtX2NvbnRleHQoY29udGV4dCkKK3sKK30KKworTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjp+
TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkKK3sKK30KKworTmV0d29ya2luZ0NvbnRleHQqIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGV4
dC5nZXQoKTsKK30KKworUGFzc093blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihjb25zdCBTdHJpbmcm
KQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCitOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VT
ZXNzaW9uKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biwgc2Vzc2lvbiwgKDApKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKK30KKwordm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKQoreworfQorCit9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JraW5n
Q29udGV4dC5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDcgKzIwLDgg
QEAKICNpZm5kZWYgTmV0d29ya2luZ0NvbnRleHRfaAogI2RlZmluZSBOZXR3b3JraW5nQ29udGV4
dF9oCiAKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKIAogI2lmIFBMQVRGT1JN
KE1BQykKICNpbmNsdWRlICJTY2hlZHVsZVBhaXIuaCIKQEAgLTQwLDEwICs0MSw2IEBAIGNsYXNz
IFdlYkNvb2tpZUphcjsKIE9CSkNfQ0xBU1MgTlNPcGVyYXRpb25RdWV1ZTsKICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQotdHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
X19DRlVSTFN0b3JhZ2VTZXNzaW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwotI2VuZGlmCi0K
ICNpZiBQTEFURk9STShRVCkKIFFUX0JFR0lOX05BTUVTUEFDRQogY2xhc3MgUU9iamVjdDsKQEAg
LTY4LDYgKzY1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgLy8gRklYTUU6
IFdyYXAgV2ViQ29va2llSmFyIGludG8gYSBOZXR3b3JrU3RvcmFnZVNlc3Npb24gdG8gbWFrZSB0
aGUgY29kZSBjcm9zcy1wbGF0Zm9ybS4KICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViQ29va2llSmFy
KiBjb29raWVKYXIoKSBjb25zdCA9IDA7CiAjZW5kaWYKIApAQCAtODAsMTEgKzc4LDEyIEBAIHB1
YmxpYzoKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQotICAg
IHZpcnR1YWwgYm9vbCBpblByaXZhdGVCcm93c2luZ01vZGUoKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgPSAwOwor
CisgICAgdmlydHVhbCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29u
c3QgPSAwOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShRVCkKKyAgICAvLyBGSVhNRTogV3JhcCBR
TmV0d29ya0FjY2Vzc01hbmFnZXIgaW50byBhIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB0byBtYWtl
IHRoZSBjb2RlIGNyb3NzLXBsYXRmb3JtLgogICAgIHZpcnR1YWwgUU9iamVjdCogb3JpZ2luYXRp
bmdPYmplY3QoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBRTmV0d29ya0FjY2Vzc01hbmFnZXIq
IG5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBtaW1l
U25pZmZpbmdFbmFibGVkKCkgY29uc3QgPSAwOwpAQCAtOTgsNiArOTcsNyBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogI2lmIFVTRShTT1VQKQorICAgIC8vIEZJWE1FOiBXcmFwIFNvdXBTZXNzaW9uIGlu
dG8gYSBOZXR3b3JrU3RvcmFnZVNlc3Npb24gdG8gbWFrZSB0aGUgY29kZSBjcm9zcy1wbGF0Zm9y
bS4KICAgICB2aXJ0dWFsIFNvdXBTZXNzaW9uKiBzb3VwU2Vzc2lvbigpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQoKSBjb25zdCA9IDA7CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3Jt
Q29va2llSmFyLmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTkgKzM0
LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEtVUkw7Ci1jbGFzcyBOZXR3b3Jr
aW5nQ29udGV4dDsKK2NsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIHN0cnVjdCBDb29raWU7
CiAKIC8vIElmIG5ldHdvcmtpbmcgY29udGV4dCBpcyBudWxsLCBkZWZhdWx0IGNvb2tpZSBzdG9y
YWdlIGlzIHVzZWQuCi1TdHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCosIGNv
bnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmKTsKLXZvaWQgc2V0Q29va2llc0Zyb21E
T00oTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJik7Ci1ib29sIGNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0
KiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpOwotU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYpOwotYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250
ZXh0KiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+
Jik7Ci12b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmKTsKLXZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya2luZ0Nv
bnRleHQqLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcyk7Ci12b2lkIGRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOwot
dm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0Kik7CitTdHJpbmcgY29va2ll
c0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJik7Cit2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBjb25z
dCBTdHJpbmcmKTsKK2Jvb2wgY29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpOworU3RyaW5nIGNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmKTsKK2Jvb2wgZ2V0UmF3Q29va2llcyhj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJiwgVmVjdG9yPENvb2tpZT4mKTsKK3ZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKTsKK3ZvaWQgZ2V0
SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNl
dDxTdHJpbmc+JiBob3N0bmFtZXMpOwordm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7Cit2b2lk
IGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJik7CiAKIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBA
CiAKICNpbmNsdWRlICJCbG9iUmVnaXN0cnkuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5j
bHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVu
dC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAkocmV2
aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMyArMjYsMTMgQEAKICNpZm5kZWYgUmVz
b3VyY2VIYW5kbGVfaAogI2RlZmluZSBSZXNvdXJjZUhhbmRsZV9oCiAKLSNpbmNsdWRlICJBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgotI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAKICNpZiBVU0UoU09VUCkKK3R5cGVkZWYgc3RydWN0IF9HVGxzQ2VydGlmaWNhdGUgR1Rsc0Nl
cnRpZmljYXRlOwogdHlwZWRlZiBzdHJ1Y3QgX1NvdXBTZXNzaW9uIFNvdXBTZXNzaW9uOwogdHlw
ZWRlZiBzdHJ1Y3QgX1NvdXBSZXF1ZXN0IFNvdXBSZXF1ZXN0OwogI2VuZGlmCkBAIC03OCw2ICs3
OCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQ3JlZGVudGlhbDsK
IGNsYXNzIEZyYW1lOwogY2xhc3MgS1VSTDsKK2NsYXNzIE5ldHdvcmtpbmdDb250ZXh0OwogY2xh
c3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNl
SGFuZGxlQ2xpZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9D
b29raWVKYXJDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw5ICsyOSw4IEBACiAjaWYgVVNFKENGTkVUV09SSykKIAogI2luY2x1ZGUg
IkNvb2tpZS5oIgotI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2VDRk5ldC5oIgogI2luY2x1ZGUgIktV
UkwuaCIKLSNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIk5ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAi
U29mdExpbmtpbmcuaCIKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIVFRQQ29va2llc1ByaXYuaD4K
QEAgLTk1LDE1ICs5NCwxMiBAQCBzdGF0aWMgUmV0YWluUHRyPENGQXJyYXlSZWY+IGZpbHRlckNv
b2tpCiAgICAgcmV0dXJuIGZpbHRlcmVkQ29va2llczsKIH0KIAotdm9pZCBzZXRDb29raWVzRnJv
bURPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBzZXRDb29raWVzRnJv
bURPTShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyA8cmRh
cjovL3Byb2JsZW0vNTYzMjg4Mz4gQ0ZIVFRQQ29va2llU3RvcmFnZSBzdG9yZXMgYW4gZW1wdHkg
Y29va2llLCB3aGljaCB3b3VsZCBiZSBzZW50IGFzICJDb29raWU6ID0iLgogICAgIGlmICh2YWx1
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29r
aWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBB
U1NFUlQoY29va2llU3RvcmFnZSk7Ci0KICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybENGKEFk
b3B0Q0YsIHVybC5jcmVhdGVDRlVSTCgpKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGZpcnN0
UGFydHlGb3JDb29raWVzQ0YoQWRvcHRDRiwgZmlyc3RQYXJ0eS5jcmVhdGVDRlVSTCgpKTsKIApA
QCAtMTE5LDU0ICsxMTUsNDMgQEAgdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29u
dGV4dAogICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQ
Q29va2llQ3JlYXRlV2l0aFJlc3BvbnNlSGVhZGVyRmllbGRzKGtDRkFsbG9jYXRvckRlZmF1bHQs
CiAgICAgICAgIGhlYWRlckZpZWxkc0NGLmdldCgpLCB1cmxDRi5nZXQoKSkpOwogCi0gICAgQ0ZI
VFRQQ29va2llU3RvcmFnZVNldENvb2tpZXMoY29va2llU3RvcmFnZS5nZXQoKSwgZmlsdGVyQ29v
a2llcyhjb29raWVzQ0YuZ2V0KCkpLmdldCgpLCB1cmxDRi5nZXQoKSwgZmlyc3RQYXJ0eUZvckNv
b2tpZXNDRi5nZXQoKSk7CisgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZXMoc2Vzc2lv
bi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIGZpbHRlckNvb2tpZXMoY29va2llc0NGLmdldCgpKS5n
ZXQoKSwgdXJsQ0YuZ2V0KCksIGZpcnN0UGFydHlGb3JDb29raWVzQ0YuZ2V0KCkpOwogfQogCi1T
dHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VS
TCYsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBS
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQg
PyBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29r
aWVTdG9yYWdlKCk7Ci0gICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwotCiAgICAgUmV0YWluUHRy
PENGVVJMUmVmPiB1cmxDRihBZG9wdENGLCB1cmwuY3JlYXRlQ0ZVUkwoKSk7CiAKICAgICBib29s
IHNlY3VyZSA9IHVybC5wcm90b2NvbElzKCJodHRwcyIpOwotICAgIFJldGFpblB0cjxDRkFycmF5
UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzRm9y
VVJMKGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHVybENGLmdldCgpLCBzZWN1cmUpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZBcnJheVJlZj4gY29va2llc0NGKEFkb3B0Q0YsIENGSFRUUENvb2tpZVN0b3JhZ2VD
b3B5Q29va2llc0ZvclVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsQ0YuZ2V0
KCksIHNlY3VyZSkpOwogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGhlYWRlckNGKEFk
b3B0Q0YsIENGSFRUUENvb2tpZUNvcHlSZXF1ZXN0SGVhZGVyRmllbGRzKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGZpbHRlckNvb2tpZXMoY29va2llc0NGLmdldCgpKS5nZXQoKSkpOwogICAgIHJldHVy
biAoQ0ZTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoaGVhZGVyQ0YuZ2V0KCksIHNfY29v
a2llQ0YpOwogfQogCi1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBL
VVJMJiB1cmwpCitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3Qg
S1VSTCYgdXJsKQogewotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29r
aWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQp
IDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFn
ZSk7Ci0KICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybENGKEFkb3B0Q0YsIHVybC5jcmVhdGVD
RlVSTCgpKTsKIAogICAgIGJvb2wgc2VjdXJlID0gdXJsLnByb3RvY29sSXMoImh0dHBzIik7Ci0g
ICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVT
dG9yYWdlQ29weUNvb2tpZXNGb3JVUkwoY29va2llU3RvcmFnZS5nZXQoKSwgdXJsQ0YuZ2V0KCks
IHNlY3VyZSkpOworICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwg
Q0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzRm9yVVJMKHNlc3Npb24uY29va2llU3RvcmFn
ZSgpLmdldCgpLCB1cmxDRi5nZXQoKSwgc2VjdXJlKSk7CiAgICAgUmV0YWluUHRyPENGRGljdGlv
bmFyeVJlZj4gaGVhZGVyQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llQ29weVJlcXVlc3RIZWFkZXJG
aWVsZHMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY29va2llc0NGLmdldCgpKSk7CiAgICAgcmV0dXJu
IChDRlN0cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShoZWFkZXJDRi5nZXQoKSwgc19jb29r
aWVDRik7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQorYm9v
bCBjb29raWVzRW5hYmxlZChOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQogewotICAgIFJldGFpblB0
cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJl
bnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3Jh
Z2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7Ci0KLSAgICBDRkhUVFBDb29raWVTdG9y
YWdlQWNjZXB0UG9saWN5IHBvbGljeSA9IENGSFRUUENvb2tpZVN0b3JhZ2VHZXRDb29raWVBY2Nl
cHRQb2xpY3koY29va2llU3RvcmFnZS5nZXQoKSk7CisgICAgQ0ZIVFRQQ29va2llU3RvcmFnZUFj
Y2VwdFBvbGljeSBwb2xpY3kgPSBDRkhUVFBDb29raWVTdG9yYWdlR2V0Q29va2llQWNjZXB0UG9s
aWN5KHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpKTsKICAgICByZXR1cm4gcG9saWN5ID09
IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFp
biB8fCBwb2xpY3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeUFsd2F5czsKIH0K
IAotYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBL
VVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3
Q29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxD
b29raWU+JiByYXdDb29raWVzKQogewogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKLSAgICBSZXRh
aW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBj
dXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVT
dG9yYWdlKCk7Ci0gICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwogCiAgICAgUmV0YWluUHRyPENG
VVJMUmVmPiB1cmxDRihBZG9wdENGLCB1cmwuY3JlYXRlQ0ZVUkwoKSk7CiAKICAgICBib29sIHNl
bmRTZWN1cmVDb29raWVzID0gdXJsLnByb3RvY29sSXMoImh0dHBzIik7Ci0gICAgUmV0YWluUHRy
PENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVTdG9yYWdlQ29weUNv
b2tpZXNGb3JVUkwoY29va2llU3RvcmFnZS5nZXQoKSwgdXJsQ0YuZ2V0KCksIHNlbmRTZWN1cmVD
b29raWVzKSk7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBD
RkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdl
KCkuZ2V0KCksIHVybENGLmdldCgpLCBzZW5kU2VjdXJlQ29va2llcykpOwogCiAgICAgQ0ZJbmRl
eCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChjb29raWVzQ0YuZ2V0KCkpOwogICAgIHJhd0Nvb2tp
ZXMucmVzZXJ2ZUNhcGFjaXR5KGNvdW50KTsKQEAgLTE5MCwxMCArMTc1LDkgQEAgYm9vbCBnZXRS
YXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjbwogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lKQog
ewotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0g
Y29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENG
SFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7CisgICAgUmV0
YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBzZXNzaW9uLmNv
b2tpZVN0b3JhZ2UoKTsKIAogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsQ0YoQWRvcHRDRiwg
dXJsLmNyZWF0ZUNGVVJMKCkpOwogCkBAIC0yMTAsMTIgKzE5NCw5IEBAIHZvaWQgZGVsZXRlQ29v
a2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb24KICAgICB9CiB9CiAKLXZvaWQgZ2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIEhhc2hTZXQ8U3RyaW5nPiYg
aG9zdG5hbWVzKQordm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQogewotICAgIFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1
cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0
b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZB
cnJheVJlZj4gY29va2llc0NGKEFkb3B0Q0YsIENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2ll
cyhjb29raWVTdG9yYWdlLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tp
ZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXMoc2Vzc2lvbi5jb29r
aWVTdG9yYWdlKCkuZ2V0KCkpKTsKICAgICBpZiAoIWNvb2tpZXNDRikKICAgICAgICAgcmV0dXJu
OwogCkBAIC0yMjcsMTAgKzIwOCw5IEBAIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0
d29ya2luZ0MKICAgICB9CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdv
cmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQordm9pZCBkZWxl
dGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBTdHJpbmcmIGhvc3RuYW1lKQogewotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdl
UmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdl
KGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29v
a2llU3RvcmFnZSk7CisgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tp
ZVN0b3JhZ2UgPSBzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKTsKIAogICAgIFJldGFpblB0cjxDRkFy
cmF5UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVz
KGNvb2tpZVN0b3JhZ2UuZ2V0KCkpKTsKICAgICBpZiAoIWNvb2tpZXNDRikKQEAgLTI0NSwxMiAr
MjI1LDkgQEAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZwogICAgIH0K
IH0KIAotdm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQor
dm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKIHsK
LSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNv
bnRleHQgPyBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhU
VFBDb29raWVTdG9yYWdlKCk7Ci0gICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwotCi0gICAgQ0ZI
VFRQQ29va2llU3RvcmFnZURlbGV0ZUFsbENvb2tpZXMoY29va2llU3RvcmFnZS5nZXQoKSk7Cisg
ICAgQ0ZIVFRQQ29va2llU3RvcmFnZURlbGV0ZUFsbENvb2tpZXMoc2Vzc2lvbi5jb29raWVTdG9y
YWdlKCkuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdl
Q0ZOZXQuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkg
KzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb29raWVTdG9yYWdlLmgi
CiAKLSNpbmNsdWRlICJDb29raWVTdG9yYWdlQ0ZOZXQuaCIKLQotI2luY2x1ZGUgIlJlc291cmNl
SGFuZGxlLmgiCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTQ4LDU2ICs0Niw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFBMQVRGT1JNKFdJTikKIAotc3RhdGljIFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiYgY29va2llU3RvcmFnZU92ZXJyaWRlKCkKLXsK
LSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVm
PiwgY29va2llU3RvcmFnZSwgKCkpOwotICAgIHJldHVybiBjb29raWVTdG9yYWdlOwotfQotCi0j
ZW5kaWYKLQotUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGN1cnJlbnRDRkhUVFBD
b29raWVTdG9yYWdlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQotewotI2lmIFBMQVRGT1JN
KFdJTikKLSAgICBpZiAoUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiBvdmVycmlk
ZSA9IGNvb2tpZVN0b3JhZ2VPdmVycmlkZSgpKQotICAgICAgICByZXR1cm4gb3ZlcnJpZGU7Ci0j
ZW5kaWYKLQotICAgIGlmIChDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHNlc3Npb24gPSBjb250ZXh0
LT5zdG9yYWdlU2Vzc2lvbigpKQotICAgICAgICByZXR1cm4gUmV0YWluUHRyPENGSFRUUENvb2tp
ZVN0b3JhZ2VSZWY+KEFkb3B0Q0YsIHdrQ29weUhUVFBDb29raWVTdG9yYWdlKHNlc3Npb24pKTsK
LQotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgcmV0dXJuIHdrR2V0RGVmYXVsdEhUVFBDb29raWVT
dG9yYWdlKCk7Ci0jZWxzZQotICAgIC8vIFdoZW4gdXNpbmcgTlNVUkxDb25uZWN0aW9uLCB3ZSBh
bHNvIHVzZSBpdHMgc2hhcmVkIGNvb2tpZSBzdG9yYWdlLgotICAgIHJldHVybiAwOwotI2VuZGlm
Ci19Ci0KLVJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBkZWZhdWx0Q0ZIVFRQQ29v
a2llU3RvcmFnZSgpCi17Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIGlmIChSZXRhaW5QdHI8Q0ZI
VFRQQ29va2llU3RvcmFnZVJlZj4mIG92ZXJyaWRlID0gY29va2llU3RvcmFnZU92ZXJyaWRlKCkp
Ci0gICAgICAgIHJldHVybiBvdmVycmlkZTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+ZGVmYXVsdENvb2tpZVN0b3JhZ2UoKTsK
LX0KLQotI2lmIFBMQVRGT1JNKFdJTikKLQotdm9pZCBvdmVycmlkZUNvb2tpZVN0b3JhZ2UoQ0ZI
VFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKQotewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7Ci0gICAgLy8gRklYTUU6IFdoeSBkb24ndCB3ZSByZXRhaW4gaXQ/IFRoZSBvbmx5
IGNhbGxlciBpcyBhbiBBUEkgbWV0aG9kIHRoYXQgdGFrZXMgY29va2llIHN0b3JhZ2UgYXMgYSBy
YXcgYXJndW1lbnQuCi0gICAgY29va2llU3RvcmFnZU92ZXJyaWRlKCkuYWRvcHRDRihjb29raWVT
dG9yYWdlKTsKLX0KLQotQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBvdmVycmlkZW5Db29raWVTdG9y
YWdlKCkKLXsKLSAgICByZXR1cm4gY29va2llU3RvcmFnZU92ZXJyaWRlKCkuZ2V0KCk7Ci19Ci0K
IHN0YXRpYyB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkT25NYWluVGhyZWFkKHZvaWQqKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC0xMzAsNyArNzgsNyBAQCB2b2lkIHN0YXJ0
T2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpCiAgICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBjb29r
aWVTdG9yYWdlT2JzZXJ2ZXJSdW5Mb29wKCk7CiAgICAgQVNTRVJUKHJ1bkxvb3ApOwogCi0gICAg
UmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBkZWZhdWx0
Q0ZIVFRQQ29va2llU3RvcmFnZSgpOworICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdl
UmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFn
ZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCk7CiAgICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwog
CiAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNjaGVkdWxlV2l0aFJ1bkxvb3AoY29va2llU3RvcmFn
ZS5nZXQoKSwgcnVuTG9vcCwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKQEAgLTE0NCw3ICs5Miw3
IEBAIHZvaWQgc3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKQogICAgIENGUnVuTG9vcFJlZiBy
dW5Mb29wID0gY29va2llU3RvcmFnZU9ic2VydmVyUnVuTG9vcCgpOwogICAgIEFTU0VSVChydW5M
b29wKTsKIAotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9y
YWdlID0gZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKKyAgICBSZXRhaW5QdHI8Q0ZIVFRQ
Q29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpOwogICAgIEFTU0VSVChjb29r
aWVTdG9yYWdlKTsKIAogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VSZW1vdmVPYnNlcnZlcihjb29r
aWVTdG9yYWdlLmdldCgpLCBydW5Mb29wLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUsIG5vdGlmeUNv
b2tpZXNDaGFuZ2VkLCAwKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvQ29va2llU3RvcmFnZUNGTmV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuaAkocmV2aXNpb24gMTM4NDA3KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBDb29r
aWVTdG9yYWdlQ0ZOZXRfaAotI2RlZmluZSBDb29raWVTdG9yYWdlQ0ZOZXRfaAotCi0jaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgotCi10eXBlZGVmIHN0cnVjdCBPcGFxdWVDRkhUVFBDb29raWVT
dG9yYWdlKiAgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBOZXR3b3JraW5nQ29udGV4dDsKLQotUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWY+IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKE5ldHdvcmtpbmdDb250ZXh0Kik7IC8v
IFdpbGwgYmUgbnVsbCB3aGVuIHVzaW5nIHNoYXJlZCBOU0hUVFBDb29raWVTdG9yYWdlLgotUmV0
YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdl
KCk7IC8vIERvZXNuJ3QgdGFrZSBjdXJyZW50IHNlc3Npb24gaW50byBhY2NvdW50LgotCi0jaWYg
UExBVEZPUk0oV0lOKQotLy8gTmVlZGVkIGZvciBXZWJLaXQxIEFQSSBvbmx5Lgotdm9pZCBvdmVy
cmlkZUNvb2tpZVN0b3JhZ2UoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZik7Ci1DRkhUVFBDb29raWVT
dG9yYWdlUmVmIG92ZXJyaWRlbkNvb2tpZVN0b3JhZ2UoKTsKLSNlbmRpZgotCi19Ci0KLSNlbmRp
ZiAvLyBDb29raWVTdG9yYWdlQ0ZOZXRfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25D
Rk5ldC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisKKyNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNl
LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitOZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbihDRlVSTFN0b3Jh
Z2VTZXNzaW9uUmVmIHBsYXRmb3JtU2Vzc2lvbikKKyAgICA6IG1fcGxhdGZvcm1TZXNzaW9uKHBs
YXRmb3JtU2Vzc2lvbikKKyAgICAsIG1faXNQcml2YXRlKGZhbHNlKQoreworfQorCitzdGF0aWMg
T3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4mIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Np
b24oKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbj4sIHNlc3Npb24sICgpKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKK30KKwordm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKQoreworICAgIC8v
IFNldCBhIHByaXZhdGUgc2Vzc2lvbiBmb3IgdGVzdGluZyB0byBhdm9pZCBpbnRlcmZlcmluZyB3
aXRoIGdsb2JhbCBjb29raWVzLiBUaGlzIHNob3VsZCBiZSBkaWZmZXJlbnQgZnJvbSBwcml2YXRl
IGJyb3dzaW5nIHNlc3Npb24uCisgICAgLy8gRklYTUU6IEl0IGxvb2tzIGxpa2UgY3JlYXRpbmcg
YSBuZXcgc2Vzc2lvbiB3aXRoIHRoZSBzYW1lIGlkZW50aWZpZXIgbWF5IGJlIGp1c3QgY3JlYXRp
bmcgYSByZWZlcmVuY2UgdG8gdGhlIHNhbWUgc3RvcmFnZS4gU2VlIDxyZGFyOi8vcHJvYmxlbS8x
MTU3MTQ1MD4gYW5kIDxyZGFyOi8vcHJvYmxlbS8xMjM4NDM4MD4uCisjaWYgUExBVEZPUk0oTUFD
KQorICAgIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSA9IGFkb3B0UHRyKG5ldyBOZXR3
b3JrU3RvcmFnZVNlc3Npb24od2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTVFIoIlBy
aXZhdGUgV2ViS2l0IFNlc3Npb24iKSkpKTsKKyNlbHNlCisgICAgZGVmYXVsdE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbigpID0gYWRvcHRQdHIobmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbih3a0NyZWF0
ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlNUUigiUHJpdmF0ZSBXZWJLaXQgU2Vzc2lvbiIpLCBk
ZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCktPnBsYXRmb3JtU2Vzc2lvbigpKSkpOworI2Vu
ZGlmCit9CisKKyNpZiBQTEFURk9STShXSU4pCitzdGF0aWMgUmV0YWluUHRyPENGSFRUUENvb2tp
ZVN0b3JhZ2VSZWY+JiBjb29raWVTdG9yYWdlT3ZlcnJpZGUoKQoreworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+LCBjb29raWVTdG9yYWdl
LCAoKSk7CisgICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2U7Cit9CisKK3ZvaWQgb3ZlcnJpZGVDb29r
aWVTdG9yYWdlKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSkKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIC8vIEZJWE1FOiBXaHkgZG9uJ3Qgd2UgcmV0YWlu
IGl0PyBUaGUgb25seSBjYWxsZXIgaXMgYW4gQVBJIG1ldGhvZCB0aGF0IHRha2VzIGNvb2tpZSBz
dG9yYWdlIGFzIGEgcmF3IGFyZ3VtZW50LgorICAgIGNvb2tpZVN0b3JhZ2VPdmVycmlkZSgpLmFk
b3B0Q0YoY29va2llU3RvcmFnZSk7Cit9CisKK0NGSFRUUENvb2tpZVN0b3JhZ2VSZWYgb3ZlcnJp
ZGVuQ29va2llU3RvcmFnZSgpCit7CisgICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2VPdmVycmlkZSgp
LmdldCgpOworfQorI2VuZGlmCisKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKQoreworICAgIHJldHVybiAqZGVmYXVs
dE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOworfQorCitQYXNzT3duUHRyPE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckJhc2UpCit7CisgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBjZklkZW50aWZpZXIgPSBTdHJpbmcoaWRlbnRpZmllckJhc2UgKyAiLlByaXZhdGVC
cm93c2luZyIpLmNyZWF0ZUNGU3RyaW5nKCk7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgT3du
UHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gc2Vzc2lvbiA9IGFkb3B0UHRyKG5ldyBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24od2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVy
LmdldCgpKSkpOworI2Vsc2UKKyAgICBPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBzZXNz
aW9uID0gYWRvcHRQdHIobmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbih3a0NyZWF0ZVByaXZhdGVT
dG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCksIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNl
c3Npb24oKS0+cGxhdGZvcm1TZXNzaW9uKCkpKSk7CisjZW5kaWYKKyAgICBzZXNzaW9uLT5tX2lz
UHJpdmF0ZSA9IHRydWU7CisKKyAgICByZXR1cm4gc2Vzc2lvbi5yZWxlYXNlKCk7Cit9CisKK1Jl
dGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZVN0b3JhZ2UoKSBjb25zdAoreworI2lmIFBMQVRGT1JNKFdJTikKKyAgICBpZiAoUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiBvdmVycmlkZSA9IGNvb2tpZVN0b3JhZ2VPdmVy
cmlkZSgpKQorICAgICAgICByZXR1cm4gb3ZlcnJpZGU7CisjZW5kaWYKKworICAgIGlmIChtX3Bs
YXRmb3JtU2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9y
YWdlUmVmPihBZG9wdENGLCB3a0NvcHlIVFRQQ29va2llU3RvcmFnZShtX3BsYXRmb3JtU2Vzc2lv
bi5nZXQoKSkpOworCisjaWYgVVNFKENGTkVUV09SSykKKyAgICByZXR1cm4gd2tHZXREZWZhdWx0
SFRUUENvb2tpZVN0b3JhZ2UoKTsKKyNlbHNlCisgICAgLy8gV2hlbiB1c2luZyBOU1VSTENvbm5l
Y3Rpb24sIHdlIGFsc28gdXNlIGl0cyBzaGFyZWQgY29va2llIHN0b3JhZ2UuCisgICAgcmV0dXJu
IDA7CisjZW5kaWYKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCShyZXZpc2lvbiAx
Mzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbkNGLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aCIKLSNpbmNsdWRlICJDb29raWVTdG9yYWdlQ0ZOZXQuaCIKICNpbmNsdWRlICJDcmVkZW50aWFs
U3RvcmFnZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAi
Rm9ybURhdGFTdHJlYW1DRk5ldC5oIgpAQCAtMzgsNiArMzcsNyBAQAogI2luY2x1ZGUgIkxvYWRl
clJ1bkxvb3BDRi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJl
Z2lzdHJ5LmgiCisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZXNv
dXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZVJlc3BvbnNlLmgiCkBAIC0xNjUsNyArMTY1LDcgQEAgc3RhdGljIENGVVJMUmVx
dWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQwogICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBuZXdNZXRob2QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdE1ldGhv
ZChjZlJlcXVlc3QpKTsKICAgICAgICAgICAgIGlmIChDRlN0cmluZ0NvbXBhcmVXaXRoT3B0aW9u
cyhsYXN0SFRUUE1ldGhvZC5nZXQoKSwgbmV3TWV0aG9kLmdldCgpLCBDRlJhbmdlTWFrZSgwLCBD
RlN0cmluZ0dldExlbmd0aChsYXN0SFRUUE1ldGhvZC5nZXQoKSkpLCBrQ0ZDb21wYXJlQ2FzZUlu
c2Vuc2l0aXZlKSkgewogICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRk11dGFibGVVUkxSZXF1
ZXN0UmVmPiBtdXRhYmxlUmVxdWVzdChBZG9wdENGLCBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxl
Q29weSgwLCBjZlJlcXVlc3QpKTsKLSAgICAgICAgICAgICAgICB3a1NldFJlcXVlc3RTdG9yYWdl
U2Vzc2lvbihoYW5kbGUtPnN0b3JhZ2VTZXNzaW9uKCksIG11dGFibGVSZXF1ZXN0LmdldCgpKTsK
KyAgICAgICAgICAgICAgICB3a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbihoYW5kbGUtPnN0b3Jh
Z2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCksIG11dGFibGVSZXF1ZXN0LmdldCgpKTsKICAg
ICAgICAgICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWVzdE1ldGhvZChtdXRhYmxlUmVx
dWVzdC5nZXQoKSwgbGFzdEhUVFBNZXRob2QuZ2V0KCkpOwogCiAgICAgICAgICAgICAgICAgRm9y
bURhdGEqIGJvZHkgPSBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLmh0dHBCb2R5KCk7CkBAIC0zOTks
NyArMzk5LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llUAogewog
ICAgIC8vIElmIGEgVVJMIGFscmVhZHkgaGFzIGNvb2tpZXMsIHRoZW4gd2UnbGwgcmVsYXggdGhl
IDNyZCBwYXJ0eSBjb29raWUgcG9saWN5IGFuZCBhY2NlcHQgbmV3IGNvb2tpZXMuCiAKLSAgICBS
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY2ZDb29raWVTdG9yYWdlID0gY3VycmVu
dENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCk7CisgICAgUmV0YWluUHRyPENGSFRUUENvb2tp
ZVN0b3JhZ2VSZWY+IGNmQ29va2llU3RvcmFnZSA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCku
Y29va2llU3RvcmFnZSgpOwogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kgY29v
a2llQWNjZXB0UG9saWN5ID0gQ0ZIVFRQQ29va2llU3RvcmFnZUdldENvb2tpZUFjY2VwdFBvbGlj
eShjZkNvb2tpZVN0b3JhZ2UuZ2V0KCkpOwogCiAgICAgaWYgKGNvb2tpZUFjY2VwdFBvbGljeSAh
PSBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21h
aW4pCkBAIC01MDYsNyArNTA2LDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoTmV0d29y
a2luZ0NvbgogICAgIGlmICghY29udGV4dC0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBkLT5tX3N0b3JhZ2VTZXNzaW9uID0gY29udGV4dC0+c3RvcmFnZVNlc3Npb24o
KTsKKyAgICBkLT5tX3N0b3JhZ2VTZXNzaW9uID0gY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5w
bGF0Zm9ybVNlc3Npb24oKTsKIAogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Ug
PSAhY2xpZW50KCkgfHwgY2xpZW50KCktPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKHRoaXMp
OwogCkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNl
U3luY2hybwogCiAgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBhZG9wdFJlZihu
ZXcgUmVzb3VyY2VIYW5kbGUocmVxdWVzdCwgY2xpZW50LmdldCgpLCBmYWxzZSAvKmRlZmVyc0xv
YWRpbmcqLywgdHJ1ZSAvKnNob3VsZENvbnRlbnRTbmlmZiovKSk7CiAKLSAgICBoYW5kbGUtPmQt
Pm1fc3RvcmFnZVNlc3Npb24gPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpOworICAgIGhhbmRs
ZS0+ZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZv
cm1TZXNzaW9uKCk7CiAKICAgICBpZiAoaGFuZGxlLT5kLT5tX3NjaGVkdWxlZEZhaWx1cmVUeXBl
ICE9IE5vRmFpbHVyZSkgewogICAgICAgICBlcnJvciA9IGNvbnRleHQtPmJsb2NrZWRFcnJvcihy
ZXF1ZXN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0v
Q29va2llSmFyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMzg0
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL0Nvb2tpZUph
ckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNTUgKzQxLDU1IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNv
b2tpZXMsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpCiB7Ci0gICAg
aWYgKCFjb250ZXh0KQorICAgIGlmICghc2Vzc2lvbi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBXZWJLaXQ6OldlYkNvb2tpZUphciogY29va2llSmFyID0gY29udGV4dC0+Y29va2ll
SmFyKCk7CisgICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9IHNlc3Npb24uY29u
dGV4dCgpLT5jb29raWVKYXIoKTsKICAgICBpZiAoY29va2llSmFyKQogICAgICAgICBjb29raWVK
YXItPnNldENvb2tpZSh1cmwsIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb29raWVTdHIpOwogfQog
Ci1TdHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3Qg
S1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29r
aWVzRm9yRE9NKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBpZiAoIWNvbnRleHQp
CisgICAgaWYgKCFzZXNzaW9uLmNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
ICAgIFN0cmluZyByZXN1bHQ7Ci0gICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9
IGNvbnRleHQtPmNvb2tpZUphcigpOworICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVK
YXIgPSBzZXNzaW9uLmNvbnRleHQoKS0+Y29va2llSmFyKCk7CiAgICAgaWYgKGNvb2tpZUphcikK
ICAgICAgICAgcmVzdWx0ID0gY29va2llSmFyLT5jb29raWVzKHVybCwgZmlyc3RQYXJ0eUZvckNv
b2tpZXMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgaWYgKCFj
b250ZXh0KQorICAgIGlmICghc2Vzc2lvbi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKICAgICBTdHJpbmcgcmVzdWx0OwotICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29r
aWVKYXIgPSBjb250ZXh0LT5jb29raWVKYXIoKTsKKyAgICBXZWJLaXQ6OldlYkNvb2tpZUphciog
Y29va2llSmFyID0gc2Vzc2lvbi5jb250ZXh0KCktPmNvb2tpZUphcigpOwogICAgIGlmIChjb29r
aWVKYXIpCiAgICAgICAgIHJlc3VsdCA9IGNvb2tpZUphci0+Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUodXJsLCBmaXJzdFBhcnR5Rm9yQ29va2llcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29u
c3QgS1VSTCYgY29va2llVVJMLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcykKK2Jv
b2wgY29va2llc0VuYWJsZWQoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiBjb29raWVVUkwsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzKQogewogICAg
IGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgaWYgKCFjb250ZXh0KQorICAgIGlmICghc2Vzc2lv
bi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgV2ViS2l0OjpXZWJDb29r
aWVKYXIqIGNvb2tpZUphciA9IGNvbnRleHQtPmNvb2tpZUphcigpOworICAgIFdlYktpdDo6V2Vi
Q29va2llSmFyKiBjb29raWVKYXIgPSBzZXNzaW9uLmNvbnRleHQoKS0+Y29va2llSmFyKCk7CiAg
ICAgaWYgKGNvb2tpZUphcikKICAgICAgICAgcmVzdWx0ID0gY29va2llSmFyLT5jb29raWVzRW5h
YmxlZChjb29raWVVUkwsIGZpcnN0UGFydHlGb3JDb29raWVzKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEtVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxD
b29raWU+JiByYXdDb29raWVzKQorYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtV
UkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmF3Q29va2llcy5j
bGVhcigpOwotICAgIGlmICghY29udGV4dCkKKyAgICBpZiAoIXNlc3Npb24uY29udGV4dCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgV2ViS2l0OjpXZWJWZWN0b3I8V2ViS2l0OjpXZWJD
b29raWU+IHdlYkNvb2tpZXM7Ci0gICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9
IGNvbnRleHQtPmNvb2tpZUphcigpOworICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVK
YXIgPSBzZXNzaW9uLmNvbnRleHQoKS0+Y29va2llSmFyKCk7CiAgICAgaWYgKGNvb2tpZUphcikK
ICAgICAgICAgY29va2llSmFyLT5yYXdDb29raWVzKHVybCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMs
IHdlYkNvb2tpZXMpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB3ZWJDb29raWVzLnNp
emUoKTsgKytpKSB7CkBAIC0xMDAsMjYgKzEwMCwyNiBAQCBib29sIGdldFJhd0Nvb2tpZXMoTmV0
d29ya2luZ0NvbnRleHQqIGNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgZGVsZXRlQ29v
a2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgY29va2llTmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7
Ci0gICAgaWYgKCFjb250ZXh0KQorICAgIGlmICghc2Vzc2lvbi5jb250ZXh0KCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBXZWJLaXQ6OldlYkNvb2tpZUphciogY29va2llSmFyID0gY29udGV4dC0+
Y29va2llSmFyKCk7CisgICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9IHNlc3Np
b24uY29udGV4dCgpLT5jb29raWVKYXIoKTsKICAgICBpZiAoY29va2llSmFyKQogICAgICAgICBj
b29raWVKYXItPmRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUpOwogfQogCi12b2lkIGdldEhv
c3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiAvKmNvbnRleHQqLywgSGFzaFNl
dDxTdHJpbmc+JiAvKmhvc3RuYW1lcyovKQordm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBIYXNoU2V0PFN0cmluZz4mIC8qaG9zdG5hbWVzKi8pCiB7
CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxldGVDb29r
aWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZ0NvbnRleHQqIC8qY29udGV4dCovLCBjb25zdCBTdHJp
bmcmIC8qaG9zdG5hbWUqLykKK3ZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYgLypob3N0bmFtZSovKQogewogICAgIC8vIEZJ
WE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRlQWxsQ29va2llcyhOZXR3
b3JraW5nQ29udGV4dCogLypjb250ZXh0Ki8pCit2b2lkIGRlbGV0ZUFsbENvb2tpZXMoTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJikKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9SZXNvdXJj
ZUhhbmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jaHJvbWl1bS9SZXNvdXJjZUhhbmRsZS5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3VyY2VIYW5kbGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKIAorI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhh
bmRsZUludGVybmFsLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1
cmwuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDUwICsyNyw1
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiBjb29raWVKYXI7CiAKLXZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQordm9p
ZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwg
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGNvb2tpZUphci5z
ZXQodXJsLnN0cmluZygpLCB2YWx1ZSk7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKE5ldHdv
cmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29r
aWVzRm9yRE9NKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJM
JiB1cmwpCiB7CiAgICAgcmV0dXJuIGNvb2tpZUphci5nZXQodXJsLnN0cmluZygpKTsKIH0KIAot
U3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQorU3Ry
aW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgLy8g
RklYTUU6IGluY2x1ZGUgSHR0cE9ubHkgY29va2llLgogICAgIHJldHVybiBjb29raWVKYXIuZ2V0
KHVybC5zdHJpbmcoKSk7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVy
bCovKQorYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBL
VVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKIHsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLywgVmVjdG9y
PENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8s
IFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGlt
cGxlbWVudGVkCiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIHJldHVybiBmYWxzZTsgLy8g
cmV0dXJuIHRydWUgd2hlbiBpbXBsZW1lbnRlZAogfQogCi12b2lkIGRlbGV0ZUNvb2tpZShOZXR3
b3JraW5nQ29udGV4dCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQordm9pZCBkZWxldGVD
b29raWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYp
CiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBnZXRIb3N0
bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCosIEhhc2hTZXQ8U3RyaW5nPiYgaG9z
dG5hbWVzKQordm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKIHsKICAgICAvLyBGSVhNRTogTm90IHll
dCBpbXBsZW1lbnRlZAogfQogCi12b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShOZXR3b3Jr
aW5nQ29udGV4dCosIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZShOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1l
KQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRl
QWxsQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCopCit2b2lkIGRlbGV0ZUFsbENvb2tpZXMoTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJikKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRl
ZAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNl
SGFuZGxlQ3VybC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5k
bGUuaCIKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiTmV0
d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZU1hbmFn
ZXIuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUph
ck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9Db29raWVKYXJNYWMubW0JKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEs
OSArMzEsOCBAQAogI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJDb29raWUu
aCIKICNpbXBvcnQgIkNvb2tpZVN0b3JhZ2UuaCIKLSNpbXBvcnQgIkNvb2tpZVN0b3JhZ2VDRk5l
dC5oIgogI2ltcG9ydCAiS1VSTC5oIgotI2ltcG9ydCAiTmV0d29ya2luZ0NvbnRleHQuaCIKKyNp
bXBvcnQgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUlu
dGVyZmFjZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MiwzMSArNjEsMjkgQEAgc3Rh
dGljIFJldGFpblB0cjxOU0FycmF5PiBmaWx0ZXJDb29raWVzKAogICAgIHJldHVybiBmaWx0ZXJl
ZENvb2tpZXM7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JE
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiwgY29u
c3QgS1VSTCYgdXJsKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAg
IFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4
dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENv
b2tpZVN0b3JhZ2UoKTsKLSAgICBOU0FycmF5ICpjb29raWVzID0gd2tIVFRQQ29va2llc0ZvclVS
TChjb29raWVTdG9yYWdlLmdldCgpLCB1cmwpOworICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hU
VFBDb29raWVzRm9yVVJMKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCB1cmwpOwogICAg
IHJldHVybiBbW05TSFRUUENvb2tpZSByZXF1ZXN0SGVhZGVyRmllbGRzV2l0aENvb2tpZXM6Zmls
dGVyQ29va2llcyhjb29raWVzKS5nZXQoKV0gb2JqZWN0Rm9yS2V5OkAiQ29va2llIl07CiAKICAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAot
U3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQorU3Ry
aW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVy
bCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBSZXRhaW5QdHI8
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBjdXJyZW50
Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdl
KCk7Ci0gICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXNGb3JVUkwoY29va2llU3Rv
cmFnZS5nZXQoKSwgdXJsKTsKKyAgICBOU0FycmF5ICpjb29raWVzID0gd2tIVFRQQ29va2llc0Zv
clVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsKTsKICAgICByZXR1cm4gW1tO
U0hUVFBDb29raWUgcmVxdWVzdEhlYWRlckZpZWxkc1dpdGhDb29raWVzOmNvb2tpZXNdIG9iamVj
dEZvcktleTpAIkNvb2tpZSJdOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKICAg
ICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLXZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikKIHsKICAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKQEAgLTEwMywzMSArMTAwLDI4IEBAIHZvaWQgc2V0Q29v
a2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQKICAgICBSZXRhaW5QdHI8TlNBcnJheT4gZmls
dGVyZWRDb29raWVzID0gZmlsdGVyQ29va2llcyhbTlNIVFRQQ29va2llIGNvb2tpZXNXaXRoUmVz
cG9uc2VIZWFkZXJGaWVsZHM6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDpjb29r
aWVTdHJpbmcgZm9yS2V5OkAiU2V0LUNvb2tpZSJdIGZvclVSTDpjb29raWVVUkxdKTsKICAgICBB
U1NFUlQoW2ZpbHRlcmVkQ29va2llcy5nZXQoKSBjb3VudF0gPD0gMSk7CiAKLSAgICBSZXRhaW5Q
dHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBjdXJy
ZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVTdG9y
YWdlKCk7Ci0gICAgd2tTZXRIVFRQQ29va2llc0ZvclVSTChjb29raWVTdG9yYWdlLmdldCgpLCBm
aWx0ZXJlZENvb2tpZXMuZ2V0KCksIGNvb2tpZVVSTCwgZmlyc3RQYXJ0eSk7CisgICAgd2tTZXRI
VFRQQ29va2llc0ZvclVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgZmlsdGVyZWRD
b29raWVzLmdldCgpLCBjb29raWVVUkwsIGZpcnN0UGFydHkpOwogCiAgICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKIH0KIAotYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJs
Ki8pCitib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCiB7
CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRU
UENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwot
ICAgIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSBjb29raWVBY2NlcHRQb2xpY3kgPSBzdGF0aWNf
Y2FzdDxOU0hUVFBDb29raWVBY2NlcHRQb2xpY3k+KHdrR2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShjb29raWVTdG9yYWdlLmdldCgpKSk7CisgICAgTlNIVFRQQ29va2llQWNjZXB0UG9saWN5IGNv
b2tpZUFjY2VwdFBvbGljeSA9IHN0YXRpY19jYXN0PE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeT4o
d2tHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgp
KSk7CiAgICAgcmV0dXJuIGNvb2tpZUFjY2VwdFBvbGljeSA9PSBOU0hUVFBDb29raWVBY2NlcHRQ
b2xpY3lBbHdheXMgfHwgY29va2llQWNjZXB0UG9saWN5ID09IE5TSFRUUENvb2tpZUFjY2VwdFBv
bGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgZ2V0UmF3Q29va2llcyhOZXR3
b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0
IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIGdldFJhd0Nvb2tp
ZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZp
cnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykK
IHsKICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOwogCi0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3Jh
Z2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZh
dWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hUVFBD
b29raWVzRm9yVVJMKGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHVybCk7CisgICAgTlNBcnJheSAqY29v
a2llcyA9IHdrSFRUUENvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCks
IHVybCk7CiAgICAgTlNVSW50ZWdlciBjb3VudCA9IFtjb29raWVzIGNvdW50XTsKICAgICByYXdD
b29raWVzLnJlc2VydmVDYXBhY2l0eShjb3VudCk7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAw
OyBpIDwgY291bnQ7ICsraSkgewpAQCAtMTQxLDEyICsxMzUsMTIgQEAgYm9vbCBnZXRSYXdDb29r
aWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjbwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIGRl
bGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBj
b29raWVOYW1lKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAogICAgIE5T
VVJMICpjb29raWVVUkwgPSB1cmw7Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2Uo
Y29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOworICAgIFJldGFpblB0cjxD
RkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gc2Vzc2lvbi5jb29raWVTdG9y
YWdlKCk7CiAgICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXNGb3JVUkwoY29va2ll
U3RvcmFnZS5nZXQoKSwgY29va2llVVJMKTsKIAogICAgIE5TU3RyaW5nICpjb29raWVOYW1lU3Ry
aW5nID0gY29va2llTmFtZTsKQEAgLTE2MSwxMiArMTU1LDExIEBAIHZvaWQgZGVsZXRlQ29va2ll
KE5ldHdvcmtpbmdDb250ZXh0KiBjb24KICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwog
fQogCi12b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250
ZXh0LCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKK3ZvaWQgZ2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBIYXNoU2V0PFN0cmlu
Zz4mIGhvc3RuYW1lcykKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAg
ICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRl
eHQgPyBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBD
b29raWVTdG9yYWdlKCk7Ci0gICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXMoY29v
a2llU3RvcmFnZS5nZXQoKSk7CisgICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXMo
c2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCkpOwogICAgIAogICAgIGZvciAoTlNIVFRQQ29v
a2llKiBjb29raWUgaW4gY29va2llcykKICAgICAgICAgaG9zdG5hbWVzLmFkZChbY29va2llIGRv
bWFpbl0pOwpAQCAtMTc0LDExICsxNjcsMTEgQEAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2ll
cyhOZXR3b3JraW5nQwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKLXZvaWQg
ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIGhvc3RuYW1lKQordm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQog
ewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIFJldGFpblB0cjxDRkhU
VFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhU
VFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsK
KyAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IHNl
c3Npb24uY29va2llU3RvcmFnZSgpOwogICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hUVFBDb29r
aWVzKGNvb2tpZVN0b3JhZ2UuZ2V0KCkpOwogICAgIGlmICghY29va2llcykKICAgICAgICAgcmV0
dXJuOwpAQCAtMTkxLDEwICsxODQsOSBAQCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShO
ZXR3b3JraW5nCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAotdm9pZCBkZWxl
dGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQordm9pZCBkZWxldGVBbGxD
b29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKIHsKLSAgICBSZXRh
aW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBj
dXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVT
dG9yYWdlKCk7Ci0gICAgd2tEZWxldGVBbGxIVFRQQ29va2llcyhjb29raWVTdG9yYWdlLmdldCgp
KTsKKyAgICB3a0RlbGV0ZUFsbEhUVFBDb29raWVzKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdl
dCgpKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
Q29va2llU3RvcmFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9Db29raWVTdG9yYWdlTWFjLm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVTdG9yYWdlTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw2IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJDb29raWVTdG9yYWdlLmgiCi0jaW5jbHVkZSAiQ29va2llU3RvcmFnZUNGTmV0Lmgi
CiAKICNpbXBvcnQgIlJlc291cmNlSGFuZGxlLmgiCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCShy
ZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9S
ZXNvdXJjZUhhbmRsZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNiBAQAogI2lt
cG9ydCAiQmxvYlJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBv
cnQgIkNvb2tpZVN0b3JhZ2UuaCIKLSNpbXBvcnQgIkNvb2tpZVN0b3JhZ2VDRk5ldC5oIgogI2lt
cG9ydCAiQ3JlZGVudGlhbFN0b3JhZ2UuaCIKICNpbXBvcnQgIkNhY2hlZFJlc291cmNlTG9hZGVy
LmgiCiAjaW1wb3J0ICJFbXB0eVByb3RvY29sRGVmaW5pdGlvbnMuaCIKQEAgLTQyLDYgKzQxLDcg
QEAKICNpbXBvcnQgIkZyYW1lTG9hZGVyLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0
ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW1wb3J0ICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2lt
cG9ydCAiUGFnZS5oIgogI2ltcG9ydCAiUmVzb3VyY2VFcnJvci5oIgogI2ltcG9ydCAiUmVzb3Vy
Y2VSZXNwb25zZS5oIgpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHN0YXRpYyBib29sIHNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZVAKIHsKICAgICAvLyBJZiBhIFVSTCBhbHJlYWR5IGhhcyBjb29raWVz
LCB0aGVuIHdlJ2xsIHJlbGF4IHRoZSAzcmQgcGFydHkgY29va2llIHBvbGljeSBhbmQgYWNjZXB0
IG5ldyBjb29raWVzLgogCi0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNm
Q29va2llU3RvcmFnZSA9IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpOworICAg
IFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjZkNvb2tpZVN0b3JhZ2UgPSBjb250
ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKTsKICAgICBOU0hUVFBDb29raWVB
Y2NlcHRQb2xpY3kgY29va2llQWNjZXB0UG9saWN5ID0gc3RhdGljX2Nhc3Q8TlNIVFRQQ29va2ll
QWNjZXB0UG9saWN5Pih3a0dldEhUVFBDb29raWVBY2NlcHRQb2xpY3koY2ZDb29raWVTdG9yYWdl
LmdldCgpKSk7CiAKICAgICBpZiAoY29va2llQWNjZXB0UG9saWN5ICE9IE5TSFRUUENvb2tpZUFj
Y2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluKQpAQCAtMjMwLDcgKzIzMCw3IEBA
IGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KE5ldHdvcmtpbmdDb24KICAgICBpZiAoIWNvbnRl
eHQtPmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZC0+bV9zdG9yYWdl
U2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCk7CisgICAgZC0+bV9zdG9yYWdlU2Vz
c2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCk7CiAKICAg
ICBBU1NFUlQoIWQtPm1fcHJveHkpOwogICAgIGQtPm1fcHJveHkuYWRvcHROUyh3a0NyZWF0ZU5T
VVJMQ29ubmVjdGlvbkRlbGVnYXRlUHJveHkoKSk7CkBAIC0zOTYsNyArMzk2LDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hybwogCiAgICAgUmVmUHRyPFJlc291cmNl
SGFuZGxlPiBoYW5kbGUgPSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5kbGUocmVxdWVzdCwgY2xp
ZW50LmdldCgpLCBmYWxzZSAvKmRlZmVyc0xvYWRpbmcqLywgdHJ1ZSAvKnNob3VsZENvbnRlbnRT
bmlmZiovKSk7CiAKLSAgICBoYW5kbGUtPmQtPm1fc3RvcmFnZVNlc3Npb24gPSBjb250ZXh0LT5z
dG9yYWdlU2Vzc2lvbigpOworICAgIGhhbmRsZS0+ZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRl
eHQtPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCk7CiAKICAgICBpZiAoY29udGV4
dCAmJiBoYW5kbGUtPmQtPm1fc2NoZWR1bGVkRmFpbHVyZVR5cGUgIT0gTm9GYWlsdXJlKSB7CiAg
ICAgICAgIGVycm9yID0gY29udGV4dC0+YmxvY2tlZEVycm9yKHJlcXVlc3QpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Db29raWVKYXJRdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Db29raWVKYXJRdC5jcHAJ
KHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQv
Q29va2llSmFyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxNSArNDYsMTUgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdGF0aWMgU2hhcmVkQ29va2llSmFyUXQqIHNfc2hhcmVkQ29va2ll
SmFyUXQgPSAwOwogCi12b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgdmFsdWUpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHZhbHVlKQogewotICAgIFFOZXR3b3JrQ29va2llSmFyKiBqYXIgPSBjb250ZXh0
ID8gY29udGV4dC0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBTaGFyZWRD
b29raWVKYXJRdDo6c2hhcmVkKCk7CisgICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IHNlc3Np
b24uY29udGV4dCgpID8gc2Vzc2lvbi5jb250ZXh0KCktPm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCkt
PmNvb2tpZUphcigpIDogU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOwogICAgIGlmICghamFy
KQogICAgICAgICByZXR1cm47CiAKICAgICBRVXJsIHVybEZvckNvb2tpZXModXJsKTsKICAgICBR
VXJsIGZpcnN0UGFydHlVcmwoZmlyc3RQYXJ0eSk7Ci0gICAgaWYgKCF0aGlyZFBhcnR5Q29va2ll
UG9saWN5UGVybWl0cyhjb250ZXh0LCB1cmxGb3JDb29raWVzLCBmaXJzdFBhcnR5VXJsKSkKKyAg
ICBpZiAoIXRoaXJkUGFydHlDb29raWVQb2xpY3lQZXJtaXRzKHNlc3Npb24uY29udGV4dCgpLCB1
cmxGb3JDb29raWVzLCBmaXJzdFBhcnR5VXJsKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUUxp
c3Q8UU5ldHdvcmtDb29raWU+IGNvb2tpZXMgPSBRTmV0d29ya0Nvb2tpZTo6cGFyc2VDb29raWVz
KFFTdHJpbmcodmFsdWUpLnRvTGF0aW4xKCkpOwpAQCAtNjksMTUgKzY5LDE1IEBAIHZvaWQgc2V0
Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQKICAgICBqYXItPnNldENvb2tpZXNGcm9t
VXJsKGNvb2tpZXMsIHVybEZvckNvb2tpZXMpOwogfQogCi1TdHJpbmcgY29va2llc0ZvckRPTShO
ZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAg
UU5ldHdvcmtDb29raWVKYXIqIGphciA9IGNvbnRleHQgPyBjb250ZXh0LT5uZXR3b3JrQWNjZXNz
TWFuYWdlcigpLT5jb29raWVKYXIoKSA6IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKKyAg
ICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gc2Vzc2lvbi5jb250ZXh0KCkgPyBzZXNzaW9uLmNv
bnRleHQoKS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBTaGFyZWRDb29r
aWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgaWYgKCFqYXIpCiAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKIAogICAgIFFVcmwgdXJsRm9yQ29va2llcyh1cmwpOwogICAgIFFVcmwgZmlyc3RQYXJ0eVVy
bChmaXJzdFBhcnR5KTsKLSAgICBpZiAoIXRoaXJkUGFydHlDb29raWVQb2xpY3lQZXJtaXRzKGNv
bnRleHQsIHVybEZvckNvb2tpZXMsIGZpcnN0UGFydHlVcmwpKQorICAgIGlmICghdGhpcmRQYXJ0
eUNvb2tpZVBvbGljeVBlcm1pdHMoc2Vzc2lvbi5jb250ZXh0KCksIHVybEZvckNvb2tpZXMsIGZp
cnN0UGFydHlVcmwpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBRTGlzdDxRTmV0
d29ya0Nvb2tpZT4gY29va2llcyA9IGphci0+Y29va2llc0ZvclVybCh1cmxGb3JDb29raWVzKTsK
QEAgLTk0LDkgKzk0LDkgQEAgU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQq
IAogICAgIHJldHVybiByZXN1bHRDb29raWVzLmpvaW4oUUxhdGluMVN0cmluZygiOyAiKSk7CiB9
CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkK
K1N0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwp
CiB7Ci0gICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IGNvbnRleHQgPyBjb250ZXh0LT5uZXR3
b3JrQWNjZXNzTWFuYWdlcigpLT5jb29raWVKYXIoKSA6IFNoYXJlZENvb2tpZUphclF0OjpzaGFy
ZWQoKTsKKyAgICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gc2Vzc2lvbi5jb250ZXh0KCkgPyBz
ZXNzaW9uLmNvbnRleHQoKS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBT
aGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgaWYgKCFqYXIpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKIApAQCAtMTExLDQzICsxMTEsNDMgQEAgU3RyaW5nIGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKE5ldAogICAgIHJldHVybiByZXN1bHRDb29raWVzLmpvaW4oUUxhdGlu
MVN0cmluZygiOyAiKSk7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVy
bCovKQorYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQogewotICAg
IFFOZXR3b3JrQ29va2llSmFyKiBqYXIgPSBjb250ZXh0ID8gY29udGV4dC0+bmV0d29ya0FjY2Vz
c01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7Cisg
ICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IHNlc3Npb24uY29udGV4dCgpID8gc2Vzc2lvbi5j
b250ZXh0KCktPm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCktPmNvb2tpZUphcigpIDogU2hhcmVkQ29v
a2llSmFyUXQ6OnNoYXJlZCgpOwogICAgIHJldHVybiAhIWphcjsKIH0KIAotYm9vbCBnZXRSYXdD
b29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFy
dHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiti
b29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLywgVmVjdG9yPENvb2tpZT4m
IHJhd0Nvb2tpZXMpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKICAgICBy
YXdDb29raWVzLmNsZWFyKCk7CiAgICAgcmV0dXJuIGZhbHNlOyAvLyByZXR1cm4gdHJ1ZSB3aGVu
IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0Kiwg
Y29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCit2b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKIHsKICAgICAvLyBGSVhN
RTogTm90IHlldCBpbXBsZW1lbnRlZAogfQogCi12b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVz
KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykK
K3ZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGNv
bnRleHQsICFjb250ZXh0KTsgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBmb3IgY29va2llIGphcnMg
b3RoZXIgdGhhbiB0aGUgc2hhcmVkIG9uZS4KKyAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb24sICFz
ZXNzaW9uLmNvbnRleHQoKSk7IC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9yIGNvb2tpZSBqYXJz
IG90aGVyIHRoYW4gdGhlIHNoYXJlZCBvbmUuCiAgICAgU2hhcmVkQ29va2llSmFyUXQqIGphciA9
IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKICAgICBpZiAoamFyKQogICAgICAgICBqYXIt
PmdldEhvc3RuYW1lc1dpdGhDb29raWVzKGhvc3RuYW1lcyk7CiB9CiAKLXZvaWQgZGVsZXRlQ29v
a2llc0Zvckhvc3RuYW1lKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKQordm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewotICAgIEFTU0VSVF9V
TlVTRUQoY29udGV4dCwgIWNvbnRleHQpOyAvLyBOb3QgeWV0IGltcGxlbWVudGVkIGZvciBjb29r
aWUgamFycyBvdGhlciB0aGFuIHRoZSBzaGFyZWQgb25lLgorICAgIEFTU0VSVF9VTlVTRUQoc2Vz
c2lvbiwgIXNlc3Npb24uY29udGV4dCgpKTsgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBmb3IgY29v
a2llIGphcnMgb3RoZXIgdGhhbiB0aGUgc2hhcmVkIG9uZS4KICAgICBTaGFyZWRDb29raWVKYXJR
dCogamFyID0gU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOwogICAgIGlmIChqYXIpCiAgICAg
ICAgIGphci0+ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGhvc3RuYW1lKTsKIH0KIAotdm9pZCBk
ZWxldGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQordm9pZCBkZWxldGVB
bGxDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKIHsKLSAgICBBU1NFUlRf
VU5VU0VEKGNvbnRleHQsICFjb250ZXh0KTsgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBmb3IgY29v
a2llIGphcnMgb3RoZXIgdGhhbiB0aGUgc2hhcmVkIG9uZS4KKyAgICBBU1NFUlRfVU5VU0VEKHNl
c3Npb24sICFzZXNzaW9uLmNvbnRleHQoKSk7IC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9yIGNv
b2tpZSBqYXJzIG90aGVyIHRoYW4gdGhlIHNoYXJlZCBvbmUuCiAgICAgU2hhcmVkQ29va2llSmFy
UXQqIGphciA9IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKICAgICBpZiAoamFyKQogICAg
ICAgICBqYXItPmRlbGV0ZUFsbENvb2tpZXMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAJKHJldmlzaW9u
IDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVK
YXJTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsMTEgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdGF0aWMgU291cENvb2tpZUphciogY29va2llSmFyRm9yQ29udGV4dChO
ZXR3b3JraW5nQ29udGV4dCogY29udGV4dCkKK3N0YXRpYyBTb3VwQ29va2llSmFyKiBjb29raWVK
YXJGb3JTZXNzaW9uKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKIHsKLSAgICByZXR1
cm4gU09VUF9DT09LSUVfSkFSKHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShjb250ZXh0LT5zb3Vw
U2Vzc2lvbigpLCBTT1VQX1RZUEVfQ09PS0lFX0pBUikpOworICAgIGlmICghc2Vzc2lvbi5jb250
ZXh0KCkpCisgICAgICAgIHJldHVybiBzb3VwQ29va2llSmFyKCk7CisgICAgcmV0dXJuIFNPVVBf
Q09PS0lFX0pBUihzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUoc2Vzc2lvbi5jb250ZXh0KCktPnNv
dXBTZXNzaW9uKCksIFNPVVBfVFlQRV9DT09LSUVfSkFSKSk7CiB9CiAKIHN0YXRpYyBHUmVmUHRy
PFNvdXBDb29raWVKYXI+JiBkZWZhdWx0Q29va2llSmFyKCkKQEAgLTczLDkgKzc1LDkgQEAgc3Rh
dGljIGlubGluZSBib29sIGh0dHBPbmx5Q29va2llRXhpc3RzKAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZh
bHVlKQordm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB2YWx1ZSkKIHsKLSAgICBTb3VwQ29va2llSmFyKiBqYXIgPSBjb250ZXh0ID8gY29va2llSmFy
Rm9yQ29udGV4dChjb250ZXh0KSA6IHNvdXBDb29raWVKYXIoKTsKKyAgICBTb3VwQ29va2llSmFy
KiBqYXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Npb24pOwogICAgIGlmICghamFyKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTEwNyw5ICsxMDksOSBAQCB2b2lkIHNldENvb2tpZXNGcm9tRE9N
KE5ldHdvcmtpbmdDb250ZXh0CiAgICAgc291cF9jb29raWVzX2ZyZWUoZXhpc3RpbmdDb29raWVz
KTsKIH0KIAotc3RhdGljIFN0cmluZyBjb29raWVzRm9yQ29udGV4dChOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBib29sIGZvckhUVFBIZWFkZXIpCitzdGF0aWMg
U3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgS1VSTCYgdXJsLCBib29sIGZvckhUVFBIZWFkZXIpCiB7Ci0gICAgU291cENvb2tpZUph
ciogamFyID0gY29udGV4dCA/IGNvb2tpZUphckZvckNvbnRleHQoY29udGV4dCkgOiBzb3VwQ29v
a2llSmFyKCk7CisgICAgU291cENvb2tpZUphciogamFyID0gY29va2llSmFyRm9yU2Vzc2lvbihz
ZXNzaW9uKTsKICAgICBpZiAoIWphcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCkBAIC0x
MTgsMjUgKzEyMCwyNSBAQCBzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JDb250ZXh0KE5ldHdvcmtp
CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoY29va2llcy5nZXQoKSk7CiB9CiAKLVN0cmlu
ZyBjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiwg
Y29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVy
biBjb29raWVzRm9yQ29udGV4dChjb250ZXh0LCB1cmwsIGZhbHNlKTsKKyAgICByZXR1cm4gY29v
a2llc0ZvclNlc3Npb24oc2Vzc2lvbiwgdXJsLCBmYWxzZSk7CiB9CiAKLVN0cmluZyBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3Qg
S1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIGNv
b2tpZXNGb3JDb250ZXh0KGNvbnRleHQsIHVybCwgdHJ1ZSk7CisgICAgcmV0dXJuIGNvb2tpZXNG
b3JTZXNzaW9uKHNlc3Npb24sIHVybCwgdHJ1ZSk7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQo
TmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBj
b25zdCBLVVJMJiAvKnVybCovKQorYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAv
KnVybCovKQogewotICAgIHJldHVybiAhIWNvb2tpZUphckZvckNvbnRleHQoY29udGV4dCk7Cisg
ICAgcmV0dXJuICEhY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKIH0KIAotYm9vbCBnZXRS
YXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0
UGFydHkqLywgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jv
b2wgZ2V0UmF3Q29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdD
b29raWVzKQogewogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKLSAgICBTb3VwQ29va2llSmFyKiBq
YXIgPSBjb250ZXh0ID8gY29va2llSmFyRm9yQ29udGV4dChjb250ZXh0KSA6IHNvdXBDb29raWVK
YXIoKTsKKyAgICBTb3VwQ29va2llSmFyKiBqYXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Np
b24pOwogICAgIGlmICghamFyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE1Nyw5ICsx
NTksOSBAQCBib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3ZvaWQgZGVsZXRlQ29v
a2llKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgU291cENvb2tpZUphciogamFyID0gY29udGV4dCA/IGNv
b2tpZUphckZvckNvbnRleHQoY29udGV4dCkgOiBzb3VwQ29va2llSmFyKCk7CisgICAgU291cENv
b2tpZUphciogamFyID0gY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKICAgICBpZiAoIWph
cikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNzgsOSArMTgwLDkgQEAgdm9pZCBkZWxldGVDb29r
aWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbgogICAgIH0KIH0KIAotdm9pZCBnZXRIb3N0bmFtZXNX
aXRoQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgSGFzaFNldDxTdHJpbmc+JiBo
b3N0bmFtZXMpCit2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7Ci0gICAgU291cENv
b2tpZUphciogY29va2llSmFyID0gY29udGV4dCA/IGNvb2tpZUphckZvckNvbnRleHQoY29udGV4
dCkgOiBzb3VwQ29va2llSmFyKCk7CisgICAgU291cENvb2tpZUphciogY29va2llSmFyID0gY29v
a2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKICAgICBHT3duUHRyPEdTTGlzdD4gY29va2llcyhz
b3VwX2Nvb2tpZV9qYXJfYWxsX2Nvb2tpZXMoY29va2llSmFyKSk7CiAgICAgZm9yIChHU0xpc3Qq
IGl0ZW0gPSBjb29raWVzLmdldCgpOyBpdGVtOyBpdGVtID0gZ19zbGlzdF9uZXh0KGl0ZW0pKSB7
CiAgICAgICAgIEdPd25QdHI8U291cENvb2tpZT4gY29va2llKHN0YXRpY19jYXN0PFNvdXBDb29r
aWUqPihpdGVtLT5kYXRhKSk7CkBAIC0xOTAsMTAgKzE5MiwxMCBAQCB2b2lkIGdldEhvc3RuYW1l
c1dpdGhDb29raWVzKE5ldHdvcmtpbmdDCiAgICAgfQogfQogCi12b2lkIGRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBob3N0
bmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKICAgICBDU3RyaW5nIGhvc3RO
YW1lU3RyaW5nID0gaG9zdG5hbWUudXRmOCgpOwotICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUph
ciA9IGNvbnRleHQgPyBjb29raWVKYXJGb3JDb250ZXh0KGNvbnRleHQpIDogc291cENvb2tpZUph
cigpOworICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphciA9IGNvb2tpZUphckZvclNlc3Npb24o
c2Vzc2lvbik7CiAgICAgR093blB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29raWVfamFyX2Fs
bF9jb29raWVzKGNvb2tpZUphcikpOwogICAgIGZvciAoR1NMaXN0KiBpdGVtID0gY29va2llcy5n
ZXQoKTsgaXRlbTsgaXRlbSA9IGdfc2xpc3RfbmV4dChpdGVtKSkgewogICAgICAgICBTb3VwQ29v
a2llKiBjb29raWUgPSBzdGF0aWNfY2FzdDxTb3VwQ29va2llKj4oaXRlbS0+ZGF0YSk7CkBAIC0y
MDMsOSArMjA1LDkgQEAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZwog
ICAgIH0KIH0KIAotdm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250
ZXh0KQordm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
bikKIHsKLSAgICBTb3VwQ29va2llSmFyKiBjb29raWVKYXIgPSBjb250ZXh0ID8gY29va2llSmFy
Rm9yQ29udGV4dChjb250ZXh0KSA6IHNvdXBDb29raWVKYXIoKTsKKyAgICBTb3VwQ29va2llSmFy
KiBjb29raWVKYXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Npb24pOwogICAgIEdPd25QdHI8
R1NMaXN0PiBjb29raWVzKHNvdXBfY29va2llX2phcl9hbGxfY29va2llcyhjb29raWVKYXIpKTsK
ICAgICBmb3IgKEdTTGlzdCogaXRlbSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3Ns
aXN0X25leHQoaXRlbSkpIHsKICAgICAgICAgU291cENvb2tpZSogY29va2llID0gc3RhdGljX2Nh
c3Q8U291cENvb2tpZSo+KGl0ZW0tPmRhdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAJ
KHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBA
CiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQu
aCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUVycm9yLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3dpbi9Db29raWVKYXJXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHAJKHJldmlzaW9uIDEzODQwNykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNvb2tpZS5oIgogI2lu
Y2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgPFdpbmlu
ZXQuaD4KQEAgLTM1LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIHNl
dENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYsIGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyBGSVhNRTogRGVhbCB3aXRoIGZpcnN0UGFydHkgYXJn
dW1lbnQuCiAgICAgU3RyaW5nIHN0ciA9IHVybC5zdHJpbmcoKTsKQEAgLTQzLDcgKzQ0LDcgQEAg
dm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dAogICAgIEludGVybmV0U2V0
Q29va2llKHN0ci5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCAwLCB2YWwuY2hhcmFj
dGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSk7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKE5l
dHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBj
b29raWVzRm9yRE9NKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBL
VVJMJiB1cmwpCiB7CiAgICAgLy8gRklYTUU6IERlYWwgd2l0aCBmaXJzdFBhcnR5IGFyZ3VtZW50
LgogCkBAIC02NCw0MCArNjUsNDAgQEAgU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2luZ0Nv
bnRleHQqLAogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KGJ1ZmZlcik7CiB9CiAKLVN0cmluZyBj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewogICAgIC8vIEZJWE1FOiBp
bmNsdWRlIEh0dHBPbmx5IGNvb2tpZQotICAgIHJldHVybiBjb29raWVzRm9yRE9NKGNvbnRleHQs
IGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JET00oc2Vzc2lvbi5jb250
ZXh0KCksIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBL
VVJMJiAvKnVybCovKQorYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCov
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJM
JiAvKnVybCovLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2ll
cyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0
eSovLCBjb25zdCBLVVJMJiAvKnVybCovLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsK
ICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogICAgIHJhd0Nvb2tpZXMuY2xlYXIo
KTsKICAgICByZXR1cm4gZmFsc2U7IC8vIHJldHVybiB0cnVlIHdoZW4gaW1wbGVtZW50ZWQKIH0K
IAotdm9pZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiwgY29u
c3QgU3RyaW5nJikKK3ZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxl
bWVudGVkCiB9CiAKLXZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya2luZ0NvbnRl
eHQqLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKK3ZvaWQgZ2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMp
CiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxldGVD
b29raWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBTdHJpbmcmIGhvc3Ru
YW1lKQordm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBs
ZW1lbnRlZAogfQogCi12b2lkIGRlbGV0ZUFsbENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqKQor
dm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpCiB7CiAgICAgLy8g
RklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvd2luL1Jlc291cmNlSGFuZGxlV2luLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUhhbmRsZVdpbi5jcHAJKHJl
dmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jl
c291cmNlSGFuZGxlV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgIkRhdGFVUkwuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
NCwxNiArMTQ0LDkgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Uwog
ICAgIG1fc2VyaWFsTG9hZGluZ0VuYWJsZWQgPSBlbmFibGVkOwogfQogCi1zdGF0aWMgUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQqIG5ldHdvcmtpbmdDb250ZXh0KGJvb2wgcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCkKK3N0YXRpYyBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKGJv
b2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKIHsKLSAgICAvLyBUaGlzIG5ldHdvcmtpbmcgY29u
dGV4dCBpcyBvbmx5IG5lZWRlZCB0byBnZXQgc3RvcmFnZSBzZXNzaW9uIGZyb20uCi0gICAgaWYg
KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKLSAgICAgICAgc3RhdGljIFJlbW90ZU5ldHdvcmtp
bmdDb250ZXh0KiBjb250ZXh0ID0gUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShmYWxz
ZSwgZmFsc2UsIHRydWUpLmxlYWtSZWYoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQ7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgc3RhdGljIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0
ID0gUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShmYWxzZSwgZmFsc2UsIGZhbHNlKS5s
ZWFrUmVmKCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0OwotICAgIH0KKyAgICByZXR1cm4gcHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCA/IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpwcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCkgOiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vz
c2lvbigpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERv
d25sb2FkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgdWludDY0X3QgZG93bmxvYWRJRCwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpAQCAtMTY0LDMyICsxNTcsMzIgQEAgdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcgogCiB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcmIHJl
c3VsdCkKIHsKLSAgICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVzRm9yRE9NKG5ldHdvcmtpbmdD
b250ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJl
c3VsdCA9IFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGNvb2tpZVN0cmluZykKIHsKLSAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShuZXR3
b3JraW5nQ29udGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsLCBj
b29raWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHN0b3JhZ2VTZXNz
aW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmlu
Zyk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFi
bGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsLCBib29sJiByZXN1bHQpCiB7Ci0gICAgcmVzdWx0ID0gV2ViQ29yZTo6
Y29va2llc0VuYWJsZWQobmV0d29ya2luZ0NvbnRleHQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCks
IGZpcnN0UGFydHksIHVybCk7CisgICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQo
c3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCk7
CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcmIHJlc3VsdCkKIHsKLSAgICByZXN1
bHQgPSBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShuZXR3b3JraW5nQ29u
dGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXN1
bHQgPSBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzdG9yYWdlU2Vzc2lv
bihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAogdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyhib29sIHByaXZhdGVC
cm93c2luZ0VuYWJsZWQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwg
VmVjdG9yPENvb2tpZT4mIHJlc3VsdCkKIHsKLSAgICBXZWJDb3JlOjpnZXRSYXdDb29raWVzKG5l
dHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmws
IHJlc3VsdCk7CisgICAgV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzdG9yYWdlU2Vzc2lvbihwcml2
YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsLCByZXN1bHQpOwogfQogCiB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUoYm9vbCBwcml2YXRl
QnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFt
ZSkKIHsKLSAgICBXZWJDb3JlOjpkZWxldGVDb29raWUobmV0d29ya2luZ0NvbnRleHQocHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCksIHVybCwgY29va2llTmFtZSk7CisgICAgV2ViQ29yZTo6ZGVsZXRl
Q29va2llKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCB1cmwsIGNvb2tp
ZU5hbWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01haW5NYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFpbk1h
Yy5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
bWFjL05ldHdvcmtQcm9jZXNzTWFpbk1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEs
OSBAQAogI2ltcG9ydCAiQ29tbWFuZExpbmUuaCIKICNpbXBvcnQgIkVudmlyb25tZW50VXRpbGl0
aWVzLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgorI2ltcG9ydCAiV2ViU3lzdGVtSW50
ZXJmYWNlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1J1bkxvb3AuaD4KICNpbXBvcnQgPFdlYktpdFN5
c3RlbUludGVyZmFjZS5oPgotI2ltcG9ydCA8V2ViU3lzdGVtSW50ZXJmYWNlLmg+CiAjaW1wb3J0
IDxtYWNoL21hY2hfZXJyb3IuaD4KICNpbXBvcnQgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGlu
Zy5oPgogI2ltcG9ydCA8c2VydmVycy9ib290c3RyYXAuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29u
dGV4dC5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiAr
NDIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbigpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7
CiAKKyAgICBzdGF0aWMgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBwcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCk7IC8vIENhbiBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBzZXNzaW9uIGV4
aXN0cy4KKwogcHJpdmF0ZToKICAgICBSZW1vdGVOZXR3b3JraW5nQ29udGV4dChib29sIG5lZWRz
U2l0ZVNwZWNpZmljUXVpcmtzLCBib29sIGxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQs
IGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CiAKQEAgLTQ5LDggKzUxLDcgQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgYm9vbCBuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBsb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVk
KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGluUHJpdmF0ZUJyb3dzaW5nTW9k
ZSgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBz
dG9yYWdlU2Vzc2lvbigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IE9WRVJSSURFOwogICAg
IHZpcnR1YWwgTlNPcGVyYXRpb25RdWV1ZSAqc2NoZWR1bGVkT3BlcmF0aW9uUXVldWUoKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0IE9WRVJSSURFOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFj
L1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0JKHdv
cmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgcHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb247CitzdGF0aWMgT3duUHRyPE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbj4mIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkKK3sKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoT3duUHRyPE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbj4sIHNlc3Npb24sICgpKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKK30KIAog
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0KGJvb2wgbmVl
ZHNTaXRlU3BlY2lmaWNRdWlya3MsIGJvb2wgbG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxl
ZCwgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogICAgIDogbV9uZWVkc1NpdGVTcGVjaWZp
Y1F1aXJrcyhuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcykKQEAgLTYzLDE5ICs2OCwyMCBAQCBib29s
IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpsb2NhbEZpbGVDCiAgICAgcmV0dXJuIG1fbG9jYWxG
aWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZDsKIH0KIAotYm9vbCBSZW1vdGVOZXR3b3JraW5nQ29u
dGV4dDo6aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QKK05ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9wcml2YXRlQnJvd3NpbmdFbmFibGVkOworICAgIGlmIChtX3ByaXZhdGVCcm93
c2luZ0VuYWJsZWQpIHsKKyAgICAgICAgQVNTRVJUKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNz
aW9uKCkpOworICAgICAgICByZXR1cm4gKnByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCk7
CisgICAgfQorCisgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3Jh
Z2VTZXNzaW9uKCk7CiB9CiAKLUNGVVJMU3RvcmFnZVNlc3Npb25SZWYgUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewotICAg
IGlmIChpblByaXZhdGVCcm93c2luZ01vZGUoKSkgewotICAgICAgICBBU1NFUlQocHJpdmF0ZUJy
b3dzaW5nU3RvcmFnZVNlc3Npb24pOwotICAgICAgICByZXR1cm4gcHJpdmF0ZUJyb3dzaW5nU3Rv
cmFnZVNlc3Npb247Ci0gICAgfQotICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IFJldHVy
biBhIGRlZmF1bHQgc2Vzc2lvbiB0aGF0J3MgdXNlZCBmb3IgdGVzdGluZy4KLSAgICByZXR1cm4g
MDsKKyAgICBBU1NFUlQocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSk7CisgICAgcmV0
dXJuICpwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpOwogfQogCiBOU09wZXJhdGlvblF1
ZXVlICpSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6c2NoZWR1bGVkT3BlcmF0aW9uUXVldWUoKSBj
b25zdApAQCAtMTA4LDIzICsxMTQsMTggQEAgdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6
c2V0UHJpdmF0ZQogCiB2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlm
IChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbikKKyAgICBpZiAocHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFwcml2YXRl
QnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkuaXNOdWxsKCkpOwogICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVudGlmaWVyID0gU3RyaW5nKHByaXZhdGVCcm93c2lu
Z1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKSArICIuUHJpdmF0ZUJyb3dzaW5nIikuY3Jl
YXRlQ0ZTdHJpbmcoKTsKIAotICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uID0gV0tD
cmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpKTsKKyAgICBwcml2
YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVh
dGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRl
bnRpZmllckJhc2UoKSk7CiB9CiAKIHZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ry
b3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKLSAgICBpZiAoIXByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDRlJlbGVhc2UocHJpdmF0ZUJy
b3dzaW5nU3RvcmFnZVNlc3Npb24pOwotICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9u
ID0gMDsKKyAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpID0gbnVsbHB0cjsKIH0K
IAogfQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xz
L21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1h
bmFnZXJNYWMubW0JKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9O
ZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIKICNpbXBvcnQgPFdlYkNvcmUvS1VSTC5o
PgorI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTA0Myw3ICsx
MDQzLDYgQEAKIAkJRTFCNzg0NzMxNjNGMjUzRTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtpbmdD
b250ZXh0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTFCNzg0NzIxNjNGMjUzRTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tICov
OyB9OwogCQlFMUNDMUI5MDEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUNDMUI4RTEyRDdFQURGMDA2
MjU4MzggLyogUHJpbnRJbmZvLmggKi87IH07CiAJCUUxQ0MxQjkxMTJEN0VBREYwMDYyNTgzOCAv
KiBQcmludEluZm9NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMUNDMUI4RjEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvTWFjLm1tICovOyB9
OwotCQlFMUQyMjk3MTE2NTJEQzUyMDBCQUE0QkQgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFEMjI5
NkUxNjUyREI5QzAwQkFBNEJEIC8qIFdlYlBsYXRmb3JtU3RyYXRlZ2llc01hYy5tbSAqLzsgfTsK
IAkJRTFFREZEQTYxNjI4ODY4RTAwMzlFQ0RBIC8qIE1haW5NYWNQcm9jZXNzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNkZBMzEwMTFFMzkyMUUw
MERCMTM3MSAvKiBNYWluTWFjUHJvY2Vzcy5jcHAgKi87IH07CiAJCUUxRURGREE3MTYyODg2OTYw
MDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRURGRDlCMTYyODdEMEIwMDM5RUNEQSAv
KiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbSAqLzsgfTsKIAkJRTFFREZEQTgxNjI4ODY5
OTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVERkRBMjE2Mjg4MzhDMDAzOUVDREEgLyog
U2hhcmVkV29ya2VyUHJvY2Vzc01hYy5tbSAqLzsgfTsKQEAgLTIzNDQsNyArMjM0Myw2IEBACiAJ
CUUxQjc4NDcyMTYzRjI1M0UwMDA3QjY5MiAvKiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZU5ldHdvcmtpbmdD
b250ZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUNDMUI4RTEyRDdFQURG
MDA2MjU4MzggLyogUHJpbnRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFByaW50SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUNDMUI4RjEyRDdF
QURGMDA2MjU4MzggLyogUHJpbnRJbmZvTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gUHJpbnRJbmZvTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlFMUQyMjk2RTE2NTJEQjlDMDBCQUE0QkQgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUVERkQ5ODE2
Mjg3QkQxMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01haW4uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzc01haW4uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFFREZEOUIxNjI4N0QwQjAwMzlFQ0RBIC8qIFNoYXJlZFdv
cmtlclByb2Nlc3NNYWluTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzc01haW5NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUxRURGRDlEMTYyODdGMTkwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb2Nlc3Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM3MzMsNyArMzczMSw2IEBACiAJCQkJ
QkMxMTFBREYxMTJGNUJDMjAwMzM3QkFCIC8qIFdlYkVycm9yc01hYy5tbSAqLywKIAkJCQk5Mzkx
RjI4MzEyMUIzOEY1MDBFQkY3RTggLyogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oICovLAog
CQkJCTkzOTFGMjg0MTIxQjM4RjUwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
Lm1tICovLAotCQkJCUUxRDIyOTZFMTY1MkRCOUMwMEJBQTRCRCAvKiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXNNYWMubW0gKi8sCiAJCQkJQkNDNDNBQzYxMjdCOTlERTAwMzE3RjE2IC8qIFdlYlBvcHVw
TWVudU1hYy5tbSAqLywKIAkJCQlCQ0M1NzE1OTExNUFEQUVGMDAxQ0NBRjkgLyogV2ViU3lzdGVt
SW50ZXJmYWNlLmggKi8sCiAJCQkJQkNDNTcxNUExMTVBREFFRjAwMUNDQUY5IC8qIFdlYlN5c3Rl
bUludGVyZmFjZS5tbSAqLywKQEAgLTU5NzgsNyArNTk3NSw2IEBACiAJCQkJNTEyMTc0NjAxNjRD
MjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxMjE3NDY0MTY0QzIxMzcwMDM3QTVDMSAvKiBXZWJSZXNvdXJjZUJ1ZmZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQUYxQUM2QjE2NTE3NTlFMDBDMTdEN0YgLyogUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24ubW0gaW4gU291cmNlcyAqLywKLQkJCQlFMUQyMjk3MTE2NTJEQzUyMDBCQUE0
QkQgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFB
M0Q3NUIxNjUxQjQ0RjAwODcxM0QwIC8qIFJlbW90ZUxheWVyVHJlZUhvc3QubW0gaW4gU291cmNl
cyAqLywKIAkJCQkxQUEzRDc2MTE2NTFCN0QzMDA4NzEzRDAgLyogUmVtb3RlTGF5ZXJUcmVlSG9z
dE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUZEMThCNTE2NTFGQkFE
MDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAxMzg0
MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTWVtb3J5
U3RhdGlzdGljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdp
blByZWZsaWdodFJlc3VsdENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Gb250Q2FjaGUuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAJKHJldmlzaW9uIDEz
ODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIldlYkNv
b2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29va2llU3RvcmFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvb2tpZUphci5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTU1LDcgKzU2LDcgQEAgdm9pZCBXZWJD
b29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNXaXRoQwogewogICAgIEhhc2hTZXQ8U3RyaW5nPiBo
b3N0bmFtZXM7CiAKLSAgICBXZWJDb3JlOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcygwLCBob3N0
bmFtZXMpOworICAgIFdlYkNvcmU6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIGhvc3RuYW1lcyk7CiAKICAgICBW
ZWN0b3I8U3RyaW5nPiBob3N0bmFtZUxpc3Q7CiAgICAgY29weVRvVmVjdG9yKGhvc3RuYW1lcywg
aG9zdG5hbWVMaXN0KTsKQEAgLTY1LDEyICs2NiwxMiBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6
OmdldEhvc3RuYW1lc1dpdGhDCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2ll
c0Zvckhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7Ci0gICAgV2ViQ29yZTo6ZGVs
ZXRlQ29va2llc0Zvckhvc3RuYW1lKDAsIGhvc3RuYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxldGVD
b29raWVzRm9ySG9zdG5hbWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKSwgaG9zdG5hbWUpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFs
bENvb2tpZXMoKQogewotICAgIFdlYkNvcmU6OmRlbGV0ZUFsbENvb2tpZXMoMCk7CisgICAgV2Vi
Q29yZTo6ZGVsZXRlQWxsQ29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9y
YWdlU2Vzc2lvbigpKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzdGFydE9ic2Vydmlu
Z0Nvb2tpZUNoYW5nZXMoKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9h
ZHMvbWFjL0Rvd25sb2FkTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQkocmV2aXNpb24gMTM4NDA3KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBv
cnQgIkRvd25sb2FkLmgiCiAKKyNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25NYWMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUu
aD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNp
bmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgor
I2luY2x1ZGUgIldlYlN5c3RlbUludGVyZmFjZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0FQSUNhc3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGUuaD4KQEAgLTMwMyw3ICszMDQsOCBAQCB2b2lkIElu
amVjdGVkQnVuZGxlOjpzd2l0Y2hOZXR3b3JrTG9hZGVyCiB7CiAjaWYgKFBMQVRGT1JNKE1BQykg
fHwgVVNFKENGTkVUV09SSykpICYmICFQTEFURk9STShXSU4pCiAgICAgLy8gRklYTUUgKE5ldHdv
cmtQcm9jZXNzKTogRG8gdGhpcyBpbiBuZXR3b3JrIHByb2Nlc3MsIHRvby4KLSAgICBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0Ojpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7CisgICAgSW5p
dFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UoKTsKKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3
aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5j
cHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9LVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2FkZXJTdHJhdGVneS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvb2tpZUphci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUGxhdGZvcm1QYXN0ZWJvYXJkLmg+CkBAIC0xMTMsOTAgKzExNCw4MyBAQCB2
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bm90aWZ5Q29va2llCiAgICAgV2ViQ29va2llTWFu
YWdlcjo6c2hhcmVkKCkuZGlzcGF0Y2hDb29raWVzRGlkQ2hhbmdlKCk7CiB9CiAKLSNpZiBQTEFU
Rk9STShXSU4pICYmIFVTRShDRk5FVFdPUkspCi1SZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFn
ZVJlZj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWZhdWx0Q29va2llU3RvcmFnZSgpCi17Ci0g
ICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYKLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKICNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nl
c3MoKSkgewogICAgICAgICBTdHJpbmcgcmVzdWx0OwotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6
OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NKGNvbnRl
eHQgJiYgY29udGV4dC0+aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCksIGZpcnN0UGFydHksIHVybCks
IE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTTo6
UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0
d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00oc2Vzc2lvbi5pc1ByaXZhdGVC
cm93c2luZ1Nlc3Npb24oKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShyZXN1bHQpLCAwKSkKICAg
ICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
CiAjZW5kaWYKIAotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKGNvbnRleHQsIGZp
cnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lv
biwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNl
dENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQor
dm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1By
b2Nlc3MoKSkgewotICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlv
bigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShjb250ZXh0ICYmIGNvbnRleHQtPmluUHJpdmF0ZUJy
b3dzaW5nTW9kZSgpLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyksIDApOworICAgICAg
ICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVz
RnJvbURPTShzZXNzaW9uLmlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCBmaXJzdFBhcnR5LCB1
cmwsIGNvb2tpZVN0cmluZyksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAK
LSAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmws
IGNvb2tpZVN0cmluZyk7CisgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbiwg
Zmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKICNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0
d29ya1Byb2Nlc3MoKSkgewogICAgICAgICBib29sIHJlc3VsdDsKLSAgICAgICAgaWYgKCFXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJs
ZWQoY29udGV4dCAmJiBjb250ZXh0LT5pblByaXZhdGVCcm93c2luZ01vZGUoKSwgZmlyc3RQYXJ0
eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVz
RW5hYmxlZDo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hh
cmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkKHNlc3Npb24u
aXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJsZWQ6OlJlcGx5KHJlc3Vs
dCksIDApKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKGNv
bnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFi
bGVkKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IEtVUkwmIHVybCkKIHsKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAg
IGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAg
ICBTdHJpbmcgcmVzdWx0OwotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdv
cmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb250
ZXh0ICYmIGNvbnRleHQtPmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpLCBmaXJzdFBhcnR5LCB1cmwp
LCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlOjpSZXBseShyZXN1bHQpLCAwKSkKKyAgICAgICAgaWYgKCFXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoc2Vzc2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgZmlyc3RQ
YXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZTo6UmVwbHkocmVzdWx0KSwgMCkpCiAgICAgICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogI2VuZGlm
CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29u
dGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENv
b2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29v
a2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7
CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVk
KCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llcyhjb250ZXh0ICYm
IGNvbnRleHQtPmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXM6OlJlcGx5
KHJhd0Nvb2tpZXMpLCAwKSkKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3
b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llcyhzZXNzaW9uLmlzUHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbigpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAwKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
I2VuZGlmCiAKLSAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhjb250ZXh0LCBmaXJz
dFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOworICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29r
aWVzKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7CiB9CiAKLXZvaWQgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQog
ewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgp
Lm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkRlbGV0ZUNvb2tpZShjb250ZXh0ICYmIGNvbnRleHQt
PmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpLCB1cmwsIGNvb2tpZU5hbWUpLCAwKTsKKyAgICAgICAg
V2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RGVsZXRlQ29va2ll
KHNlc3Npb24uaXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIHVybCwgY29va2llTmFtZSksIDAp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAKLSAgICBXZWJDb3JlOjpkZWxldGVD
b29raWUoY29udGV4dCwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxldGVDb29r
aWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0KIAogLy8gRGF0YWJhc2VTdHJhdGVneQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180595</attachid>
            <date>2012-12-21 22:57:34 -0800</date>
            <delta_ts>2012-12-21 23:13:15 -0800</delta_ts>
            <desc>why was it small?</desc>
            <filename>StorageSession.txt</filename>
            <type>text/plain</type>
            <size>174720</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjAyOCw2ICsyMDI4LDcgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRUUFZhbGlkYXRpb24u
Y3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcAogICAgIHBsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCisgICAgcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29u
dGVudFR5cGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuY3BwCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNTc2MCw2ICs1NzYwLDcgQEAgd2ViY29y
ZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Byb3h5U2VydmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0YXRlTm90aWZpZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdGF0ZU5vdGlmaWVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9u
IDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAg
LTEwNjEsNiArMTA2MSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRU
UFZhbGlkYXRpb24uY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwIFwK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCBcCisgICAgcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcCBcCiAgICAgcGxhdGZv
cm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsv
UHJvdGVjdGlvblNwYWNlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5j
cHAgXApAQCAtMjI3Myw2ICsyMjc0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0
d29yay9IVFRQVmFsaWRhdGlvbi5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBTdGF0dXND
b2Rlcy5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmluZy5oIFwKKyAgICBwbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIFwKICAgICBwbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtpbmdDb250ZXh0LmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
YXRlTm90aWZpZXIuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5o
IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjA3LDcgKzIwNyw3IEBA
IF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yRDFFdgogX19aTjdXZWJDb3JlMTJjYWNoZVN0b3Jh
Z2VFdgogX19aTjdXZWJDb3JlMTJjcmVhdGVNYXJrdXBFUEtOU180Tm9kZUVOU18xM0VDaGlsZHJl
bk9ubHlFUE4zV1RGNlZlY3RvcklQUzBfTG0wRUVFTlNfMTNFQWJzb2x1dGVVUkxzRVBOUzVfSU5T
XzEzUXVhbGlmaWVkTmFtZUVMbTBFRUUKIF9fWk43V2ViQ29yZTEyY3JlYXRlTWFya3VwRVBLTlNf
NVJhbmdlRVBOM1dURjZWZWN0b3JJUE5TXzROb2RlRUxtMEVFRU5TXzIzRUFubm90YXRlRm9ySW50
ZXJjaGFuZ2VFYk5TXzEzRUFic29sdXRlVVJMc0UKLV9fWk43V2ViQ29yZTEyZGVsZXRlQ29va2ll
RVBOU18xN05ldHdvcmtpbmdDb250ZXh0RVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdFCitfX1pO
N1dlYkNvcmUxMmRlbGV0ZUNvb2tpZUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNf
NEtVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMmdjQ29udHJvbGxlckV2CiBfX1pO
N1dlYkNvcmUxMmljb25EYXRhYmFzZUV2CiBfX1pON1dlYkNvcmUxMnRvVWludDhBcnJheUVOM0pT
QzdKU1ZhbHVlRQpAQCAtMjM2LDEwICsyMzYsMTAgQEAgX19aTjdXZWJDb3JlMTNSZXNvdXJjZUVy
cm9yQzFFUDdOU0Vycm9yCiBfX1pON1dlYkNvcmUxM1Jlc291cmNlRXJyb3JDMUVQOV9fQ0ZFcnJv
cgogX19aTjdXZWJDb3JlMTNTdHlsZWRFbGVtZW50MjJzZXRJbmxpbmVTdHlsZVByb3BlcnR5RU5T
XzEzQ1NTUHJvcGVydHlJREVSS04zV1RGNlN0cmluZ0ViCiBfX1pON1dlYkNvcmUxM1N0eWxlZEVs
ZW1lbnQyMnNldElubGluZVN0eWxlUHJvcGVydHlFTlNfMTNDU1NQcm9wZXJ0eUlERWROU18xN0NT
U1ByaW1pdGl2ZVZhbHVlOVVuaXRUeXBlc0ViCi1fX1pON1dlYkNvcmUxM2Nvb2tpZXNGb3JET01F
UE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VSTEVTNF8KK19fWk43V2ViQ29yZTEzY29v
a2llc0ZvckRPTUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfNEtVUkxFUzVfCiBf
X1pON1dlYkNvcmUxM2NyZWF0ZVdyYXBwZXJFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUds
b2JhbE9iamVjdEVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUxM2RpcmVjdG9yeU5hbWVFUktOM1dU
RjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxM2dldFJhd0Nvb2tpZXNFUE5TXzE3TmV0d29ya2luZ0Nv
bnRleHRFUktOU180S1VSTEVTNF9STjNXVEY2VmVjdG9ySU5TXzZDb29raWVFTG0wRUVFCitfX1pO
N1dlYkNvcmUxM2dldFJhd0Nvb2tpZXNFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05T
XzRLVVJMRVM1X1JOM1dURjZWZWN0b3JJTlNfNkNvb2tpZUVMbTBFRUUKIF9fWk43V2ViQ29yZTEz
dG9BcnJheUJ1ZmZlckVOM0pTQzdKU1ZhbHVlRQogX19aTjdXZWJDb3JlMTN0b0hUTUxFbGVtZW50
RVBOU18yMUZvcm1Bc3NvY2lhdGVkRWxlbWVudEUKIF9fWk43V2ViQ29yZTEzdG9KU0RPTVdpbmRv
d0VOM0pTQzdKU1ZhbHVlRQpAQCAtMjU0LDYgKzI1NCwxMCBAQCBfX1pON1dlYkNvcmUxNERvY3Vt
ZW50TG9hZGVyMTNhdHRhY2hUb0ZyCiBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTVkZXRh
Y2hGcm9tRnJhbWVFdgogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjE4YWRkQXJjaGl2ZVJl
c291cmNlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzE1QXJjaGl2ZVJlc291cmNlRUVFCiBfX1pON1dl
YkNvcmUxNFJlc291cmNlTG9hZGVyMzJkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUVS
S05TXzIzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VFCitfX1pON1dlYkNvcmUxNGNvb2tpZXNFbmFi
bGVkRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU180S1VSTEVTNV8KK19fWk43V2Vi
Q29yZTE3c2V0Q29va2llc0Zyb21ET01FUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05T
XzRLVVJMRVM1X1JLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMjFOZXR3b3JrU3RvcmFnZVNl
c3Npb24yMWRlZmF1bHRTdG9yYWdlU2Vzc2lvbkV2CitfX1pON1dlYkNvcmUyMU5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjI1c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbkV2CiBfX1pON1dlYkNvcmUyMVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTExZGVzZXJpYWxpemVFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMxXzE0
SlNHbG9iYWxPYmplY3RFUE4zV1RGNlZlY3RvcklOUzZfNlJlZlB0cklOU18xMU1lc3NhZ2VQb3J0
RUVFTG0xRUVFTlNfMjJTZXJpYWxpemF0aW9uRXJyb3JNb2RlRQogX19aTjdXZWJDb3JlMjFTZXJp
YWxpemVkU2NyaXB0VmFsdWU2Y3JlYXRlRVBOM0pTQzlFeGVjU3RhdGVFTlMxXzdKU1ZhbHVlRVBO
M1dURjZWZWN0b3JJTlM1XzZSZWZQdHJJTlNfMTFNZXNzYWdlUG9ydEVFRUxtMUVFRVBOUzZfSU5T
N19JTlM1XzExQXJyYXlCdWZmZXJFRUVMbTFFRUVOU18yMlNlcmlhbGl6YXRpb25FcnJvck1vZGVF
CiBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTZjcmVhdGVFUktOM1dURjZTdHJp
bmdFCkBAIC0yODQsNyArMjg4LDYgQEAgX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjlzZWxl
Y3RBbGxFdgogX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbkMxRVBOU181RnJhbWVFCiBfX1pO
N1dlYkNvcmUxNExvYWRlclN0cmF0ZWd5MjFyZXNvdXJjZUxvYWRTY2hlZHVsZXJFdgogX19aTjdX
ZWJDb3JlMTRQbHVnaW5Eb2N1bWVudDEwcGx1Z2luTm9kZUV2Ci1fX1pON1dlYkNvcmUxNGNvb2tp
ZXNFbmFibGVkRVBOU18xN05ldHdvcmtpbmdDb250ZXh0RVJLTlNfNEtVUkxFUzRfCiBfX1pOSzdX
ZWJDb3JlNUZyYW1lMjV0cmFja2VkUmVwYWludFJlY3RzQXNUZXh0RXYKIF9fWk43V2ViQ29yZTlG
cmFtZVZpZXcxN3NldFRyYWNrc1JlcGFpbnRzRWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMHJl
c2V0VHJhY2tlZFJlcGFpbnRzRXYKQEAgLTQ4OCw3ICs0OTEsNyBAQCBfX1pON1dlYkNvcmUxNlZp
c2libGVTZWxlY3Rpb25DMUVSS05TXzE1CiBfX1pON1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb25D
MUVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRWIKIF9fWk43V2ViQ29yZTE2Y3JlYXRlRnVsbE1hcmt1
cEVQS05TXzROb2RlRQogX19aTjdXZWJDb3JlMTZjcmVhdGVGdWxsTWFya3VwRVBLTlNfNVJhbmdl
RQotX19aTjdXZWJDb3JlMTZkZWxldGVBbGxDb29raWVzRVBOU18xN05ldHdvcmtpbmdDb250ZXh0
RQorX19aTjdXZWJDb3JlMTZkZWxldGVBbGxDb29raWVzRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNl
c3Npb25FCiBfX1pON1dlYkNvcmUxNmVuY2xvc2luZ0ludFJlY3RFUktOU185RmxvYXRSZWN0RQog
X19aTjdXZWJDb3JlMTZpc0VuZE9mUGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNf
MjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCiBfX1pON1dlYkNvcmUxNmlzVXNlclZpc2li
bGVVUkxFUDhOU1N0cmluZwpAQCAtNTExLDcgKzUxNCw2IEBAIF9fWk43V2ViQ29yZTE3U3VicmVz
b3VyY2VMb2FkZXI2Y3JlYXRlRVAKIF9fWk43V2ViQ29yZTE3Vmlld3BvcnRBcmd1bWVudHMxOWRl
cHJlY2F0ZWRUYXJnZXREUElFCiBfX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0dXJlRVBOU18x
N0pTRE9NR2xvYmFsT2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNsYXNzSW5mb0UKIF9f
Wk43V2ViQ29yZTE3b3BlblRlbXBvcmFyeUZpbGVFUktOM1dURjZTdHJpbmdFUmkKLV9fWk43V2Vi
Q29yZTE3c2V0Q29va2llc0Zyb21ET01FUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VS
TEVTNF9SS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE3dXNlclZpc2libGVTdHJpbmdFUDVO
U1VSTAogX19aTjdXZWJDb3JlMThET01XaW5kb3dFeHRlbnNpb25DMUVQTlNfNUZyYW1lRVBOU18x
NURPTVdyYXBwZXJXb3JsZEUKIF9fWk43V2ViQ29yZTE4SFRNTENvbnRlbnRFbGVtZW50NmNyZWF0
ZUVQTlNfOERvY3VtZW50RQpAQCAtNTk1LDYgKzU5Nyw3IEBAIF9fWk43V2ViQ29yZTIwcHJvdG9j
b2xJc0phdmFTY3JpcHRFUktOM1cKIF9fWk43V2ViQ29yZTIwU3BhY2VTcGxpdFN0cmluZ0RhdGFE
MUV2CiBfX1pON1dlYkNvcmUyMUJhY2tGb3J3YXJkQ29udHJvbGxlcjExaXRlbUF0SW5kZXhFaQog
X19aTjdXZWJDb3JlMjFNZW1vcnlQcmVzc3VyZUhhbmRsZXI3aW5zdGFsbEV2CitfX1pON1dlYkNv
cmUyMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjI4Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkVS
S04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIxUGxhdGZvcm1LZXlib2FyZEV2ZW50MjRkaXNh
bWJpZ3VhdGVLZXlEb3duRXZlbnRFTlNfMTNQbGF0Zm9ybUV2ZW50NFR5cGVFYgogX19aTjdXZWJD
b3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIxOXN0YXJ0UmVzb3VyY2VMb2FkZXJFUE5TXzE0UmVz
b3VyY2VMb2FkZXJFCiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjIwc2VydmVQ
ZW5kaW5nUmVxdWVzdHNFTlNfMjBSZXNvdXJjZUxvYWRQcmlvcml0eUUKQEAgLTY1MCw3ICs2NTMs
NyBAQCBfX1pON1dlYkNvcmUyM2NyZWF0ZUZyYWdtZW50RnJvbU5vZGVzRVBOCiBfX1pON1dlYkNv
cmUyM2RhdGFGb3JVUkxDb21wb25lbnRUeXBlRVA1TlNVUkxsCiBfX1pON1dlYkNvcmUyM2RlY29k
ZUhvc3ROYW1lV2l0aFJhbmdlRVA4TlNTdHJpbmc4X05TUmFuZ2UKIF9fWk43V2ViQ29yZTIzZW5j
b2RlSG9zdE5hbWVXaXRoUmFuZ2VFUDhOU1N0cmluZzhfTlNSYW5nZQotX19aTjdXZWJDb3JlMjNn
ZXRIb3N0bmFtZXNXaXRoQ29va2llc0VQTlNfMTdOZXR3b3JraW5nQ29udGV4dEVSTjNXVEY3SGFz
aFNldElOUzJfNlN0cmluZ0VOUzJfMTBTdHJpbmdIYXNoRU5TMl8xMEhhc2hUcmFpdHNJUzRfRUVF
RQorX19aTjdXZWJDb3JlMjNnZXRIb3N0bmFtZXNXaXRoQ29va2llc0VSS05TXzIxTmV0d29ya1N0
b3JhZ2VTZXNzaW9uRVJOM1dURjdIYXNoU2V0SU5TM182U3RyaW5nRU5TM18xMFN0cmluZ0hhc2hF
TlMzXzEwSGFzaFRyYWl0c0lTNV9FRUVFCiBfX1pON1dlYkNvcmUyNEJpbmFyeVByb3BlcnR5TGlz
dFdyaXRlcjE3d3JpdGVQcm9wZXJ0eUxpc3RFdgogX19aTjdXZWJDb3JlMjRDYWNoZWRSZXNvdXJj
ZUhhbmRsZUJhc2UxMXNldFJlc291cmNlRVBOU18xNENhY2hlZFJlc291cmNlRQogX19aTjdXZWJD
b3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIxMGZpcnN0Q2hpbGRFdgpAQCAtNjY5LDcgKzY3
Miw3IEBAIF9fWk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyQzIKIF9fWk43V2Vi
Q29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyRDJFdgogX19aTjdXZWJDb3JlMjRjcmVhdGVG
cmFnbWVudEZyb21NYXJrdXBFUE5TXzhEb2N1bWVudEVSS04zV1RGNlN0cmluZ0VTNV9OU18yN0Zy
YWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbkUKIF9fWk43V2ViQ29yZTI0ZGVjb2RlVVJMRXNjYXBl
U2VxdWVuY2VzRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMjRkZWxldGVDb29raWVzRm9y
SG9zdG5hbWVFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOM1dURjZTdHJpbmdFCitfX1pON1dl
YkNvcmUyNGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNz
aW9uRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjRmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b25FUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyNG5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdl
ZEUKIF9fWk43V2ViQ29yZTI1SGlzdG9yeVByb3BlcnR5TGlzdFdyaXRlcjExcmVsZWFzZURhdGFF
dgpAQCAtNjk2LDEwICs2OTksOSBAQCBfX1pON1dlYkNvcmUyN0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvCiBfX1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazE0c2V0T3Jp
ZW50YXRpb25FTjNXVEYxMFBhc3NSZWZQdHJJTlNfMjFEZXZpY2VPcmllbnRhdGlvbkRhdGFFRUUK
IF9fWk43V2ViQ29yZTI3RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrQzFFdgogX19aTjdXZWJD
b3JlMjdzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXNFdgotX19aTjdXZWJDb3JlMjZkZWZhdWx0
Q0ZIVFRQQ29va2llU3RvcmFnZUV2CiBfX1pON1dlYkNvcmUyOGVuY29kZVdpdGhVUkxFc2NhcGVT
ZXF1ZW5jZXNFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyOHJlbW92ZUxhbmd1YWdlQ2hh
bmdlT2JzZXJ2ZXJFUHYKLV9fWk43V2ViQ29yZTI5Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWVFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VSTEVTNF8KK19fWk43V2ViQ29yZTI5
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWVFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lv
bkVSS05TXzRLVVJMRVM1XwogX19aTjdXZWJDb3JlMjlpc0NoYXJhY3RlclNtYXJ0UmVwbGFjZUV4
ZW1wdEVpYgogX19aTjdXZWJDb3JlMzBob3N0TmFtZU5lZWRzRGVjb2RpbmdXaXRoUmFuZ2VFUDhO
U1N0cmluZzhfTlNSYW5nZQogX19aTjdXZWJDb3JlMzBob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRo
UmFuZ2VFUDhOU1N0cmluZzhfTlNSYW5nZQpAQCAtMTMzMCw2ICsxMzMyLDcgQEAgX19aTks3V2Vi
Q29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U2aXNIVAogX19aTks3V2ViQ29yZTIwUmVzb3VyY2VS
ZXNwb25zZUJhc2U4bWltZVR5cGVFdgogX19aTks3V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9s
bGVyMTJmb3J3YXJkQ291bnRFdgogX19aTks3V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9sbGVy
OWJhY2tDb3VudEV2CitfX1pOSzdXZWJDb3JlMjFOZXR3b3JrU3RvcmFnZVNlc3Npb24xM2Nvb2tp
ZVN0b3JhZ2VFdgogX19aTks3V2ViQ29yZTIxUmVuZGVyTGF5ZXJDb21wb3NpdG9yMTFzY3JvbGxM
YXllckV2CiBfX1pOSzdXZWJDb3JlMjFSZW5kZXJMYXllckNvbXBvc2l0b3IxNXJvb3RSZW5kZXJM
YXllckV2CiBfX1pOSzdXZWJDb3JlMjFVc2VyQ29udGVudFVSTFBhdHRlcm43bWF0Y2hlc0VSS05T
XzRLVVJMRQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC00MzY3LDYgKzQzNjcsNyBA
QAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmNwcCcsCkBAIC00Mzg2LDcg
KzQzODcsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRp
b25DRi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZO
ZXQuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VD
Rk5ldC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9y
YWdlQ0ZOZXQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9jZi9Eb3dubG9hZEJ1bmRsZS5o
JywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzI2MjEsNiArMzI2MjEsMTAgQEAKIAkJCQkJ
PgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3Jt
XG5ldHdvcmtcTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJ
CQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXE5ldHdvcmtp
bmdDb250ZXh0LmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBAIC0zMjg0NCwxMCArMzI4NDgsNiBA
QAogCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJCQkJPC9GaWxlPgogCQkJCQk8RmlsZQot
CQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXENvb2tpZVN0b3JhZ2VD
Rk5ldC5oIgotCQkJCQkJPgotCQkJCQk8L0ZpbGU+Ci0JCQkJCTxGaWxlCiAJCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAi
CiAJCQkJCQk+CiAJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTMyOTQwLDYgKzMyOTQwLDEw
IEBACiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAi
CisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKIAkJCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGxhdGZvcm1cbmV0d29ya1xjZlxQcm94eVNlcnZlckNGTmV0LmNwcCIKIAkJCQkJCT4KIAkJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDM3LDcgKzIwMzcsNiBAQAogCQk3RUU2ODQ2MTEyRDI2RTM4MDBFNzk0MTUgLyogQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdFRTY4NDRFMTJEMjZFMzgwMEU3OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdFRTY4NDYyMTJEMjZFMzgwMEU3OTQxNSAvKiBDb29raWVKYXJDRk5ldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ0RjEyRDI2RTM4
MDBFNzk0MTUgLyogQ29va2llSmFyQ0ZOZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2MzEyRDI2RTM4
MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDUwMTJEMjZFMzgwMEU3OTQxNSAvKiBDb29r
aWVTdG9yYWdlQ0ZOZXQuY3BwICovOyB9OwotCQk3RUU2ODQ2NDEyRDI2RTM4MDBFNzk0MTUgLyog
Q29va2llU3RvcmFnZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VF
Njg0NjUxMkQyNkUzODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NTIxMkQyNkUz
ODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2
NjEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1MzEyRDI2RTM4MDBFNzk0
MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgKi87IH07CiAJCTdFRTY4NDY3MTJEMjZFMzgw
MEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1NDEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURh
dGFTdHJlYW1DRk5ldC5oICovOyB9OwpAQCAtNjA5NSw2ICs2MDk0LDggQEAKIAkJRTEzNEY1QUIx
MkVFMzQzRjAwNEVDNThEIC8qIEludFJlY3RIYXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTM0RjVBQTEyRUUzNDNGMDA0RUM1OEQgLyogSW50UmVj
dEhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMTM5ODY2MzE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTM5ODY2MTE1NDc4NDc0MDAx
RTNGNjUgLyogU3R5bGVSZXNvbHZlci5jcHAgKi87IH07CiAJCUUxMzk4NjY0MTU0Nzg0NzQwMDFF
M0Y2NSAvKiBTdHlsZVJlc29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTM5ODY2MjE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5o
ICovOyB9OworCQlFMTNFRjM0NDE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTNF
RjM0MjE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTEzRUYzNDkxNjg1MEM0
NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxM0VGMzQ3MTY4NTBDNDcwMDM0Qzgz
RiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgKi87IH07CiAJCUUxM0YwMUYxMTI3
MEUxOTAwMERGQkE3MSAvKiBDb29raWVTdG9yYWdlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEzRjAxRjAxMjcwRTE5MDAwREZCQTcxIC8qIENv
b2tpZVN0b3JhZ2VNYWMubW0gKi87IH07CiAJCUUxNDI0QzhBMTY0QjNCNEUwMEYzMkQ0MCAvKiBQ
bGF0Zm9ybUNvb2tpZUphci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTE0MjRDODkxNjRCM0I0RTAwRjMyRDQwIC8qIFBsYXRmb3JtQ29va2llSmFyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTE0MjRD
OTAxNjRCNDYwQjAwRjMyRDQwIC8qIENvb2tpZUphck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNDI0QzhGMTY0QjQ2MEIwMEYzMkQ0MCAvKiBD
b29raWVKYXJNYWMubW0gKi87IH07CkBAIC05MzcwLDcgKzkzNzEsNiBAQAogCQk3RUU2ODQ0RTEy
RDI2RTM4MDBFNzk0MTUgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NEYxMkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZUph
ckNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvb2tpZUph
ckNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTAxMkQyNkUz
ODAwRTc5NDE1IC8qIENvb2tpZVN0b3JhZ2VDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDb29raWVTdG9yYWdlQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNG
TmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tpZVN0b3JhZ2VDRk5l
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1MjEyRDI2RTM4MDBFNzk0
MTUgLyogQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTMxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybURhdGFT
dHJlYW1DRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDU0MTJE
MjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZvcm1EYXRhU3RyZWFtQ0ZOZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEzNTc2LDYgKzEzNTc2LDggQEAKIAkJRTEzNEY1QUExMkVFMzQzRjAwNEVD
NThEIC8qIEludFJlY3RIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
dFJlY3RIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMzk4NjYxMTU0Nzg0
NzQwMDFFM0Y2NSAvKiBTdHlsZVJlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0eWxlUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMTM5ODY2MjE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZVJlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUxM0VGMzQyMTY4NEVDRjQwMDM0QzgzRiAvKiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxM0VGMzQ3MTY4NTBD
NDcwMDM0QzgzRiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxM0YwMUVBMTI3MEUxMEQwMERGQkE3MSAv
KiBDb29raWVTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tp
ZVN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEzRjAxRjAxMjcwRTE5
MDAwREZCQTcxIC8qIENvb2tpZVN0b3JhZ2VNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBDb29raWVTdG9yYWdlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMTQyNEM4OTE2NEIzQjRFMDBGMzJENDAgLyogUGxhdGZvcm1Db29raWVKYXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxhdGZvcm1Db29raWVKYXIuaDsg
cGF0aCA9IG5ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE1ODMzLDYgKzE1ODM1LDcgQEAKIAkJCQkzN0REQ0Q5MjEzODQ0RkQ1MDAwOEI3
OTMgLyogTUlNRUhlYWRlci5jcHAgKi8sCiAJCQkJMzdERENEOTMxMzg0NEZENTAwMDhCNzkzIC8q
IE1JTUVIZWFkZXIuaCAqLywKIAkJCQk2MjhEMjE0QjEyMTMxRUQxMDA1NURDRkMgLyogTmV0d29y
a2luZ0NvbnRleHQuaCAqLywKKwkJCQlFMTNFRjM0MjE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmggKi8sCiAJCQkJMUE3RkE2MUEwRERBM0JCRTAwMjhGOEE1IC8qIE5l
dHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCAqLywKIAkJCQkxQTdGQTYxODBEREEzQjNBMDAyOEY4QTUg
LyogTmV0d29ya1N0YXRlTm90aWZpZXIuaCAqLywKIAkJCQk0NDc5NTgwMjE2NDNCNDdCMDAxRTBB
N0YgLyogUGFyc2VkQ29udGVudFR5cGUuY3BwICovLApAQCAtMjA0MDMsMTMgKzIwNDA2LDEzIEBA
CiAJCQkJN0VFNjg0NEUxMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmggKi8sCiAJCQkJN0VFNjg0NEYxMkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZUphckNGTmV0LmNw
cCAqLywKIAkJCQk3RUU2ODQ1MDEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0
LmNwcCAqLywKLQkJCQk3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNG
TmV0LmggKi8sCiAJCQkJN0VFNjg0NTIxMkQyNkUzODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9y
YWdlQ0ZOZXQuY3BwICovLAogCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5l
dC5jcHAgKi8sCiAJCQkJN0VFNjg0NTMxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU0MTJEMjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0
cmVhbUNGTmV0LmggKi8sCiAJCQkJN0VFNjg0NTUxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1
bkxvb3BDRi5jcHAgKi8sCiAJCQkJN0VFNjg0NTYxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1
bkxvb3BDRi5oICovLAorCQkJCUUxM0VGMzQ3MTY4NTBDNDcwMDM0QzgzRiAvKiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb25DRk5ldC5jcHAgKi8sCiAJCQkJMUFGOEUxQzExMjU2NzNFMDAwMjMwRkY3IC8q
IFByb3h5U2VydmVyQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAv
KiBSZXNvdXJjZUVycm9yLmggKi8sCiAJCQkJN0VFNjg0NTgxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlRXJyb3JDRi5jcHAgKi8sCkBAIC0yMjg5NCw3ICsyMjg5Nyw2IEBACiAJCQkJRDhCNjE1
MkYxMDMyNDk1MTAwQzg1NTRBIC8qIENvb2tpZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzM5QjVC
NjMxMzFEQUEzMjAwRjQ4RDAyIC8qIENvb2tpZXNTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzNEMDIxMkQxMzFEQjM3QjAwNDA5MUE4IC8qIENvb2tpZVN0b3JhZ2UuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTdFRTY4NDY0MTJEMjZFMzgwMEU3OTQxNSAvKiBDb29raWVTdG9yYWdlQ0ZOZXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZFNkZENDg4MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29yZGlu
YXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZEMDQwQTE5ODlDQTAwN0ZCOEM1IC8qIENv
dW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCOTc5MEU4MjA2OTIwMEIyNTk2NSAvKiBD
b3VudGVyQ29udGVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTk4Miw2ICsyNTk4NCw3IEBACiAJ
CQkJRjM3QTU2MjMxNjc5Q0Y3QjAwQzU3MDQ2IC8qIEhlYXBHcmFwaFNlcmlhbGl6ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjg4OTBBMTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCODg5MEYxNjdEMzAxNjAwMTBDREE1
IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTEzRUYz
NDQxNjg0RUNGNDAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0yOTEwMCw2ICsyOTEwMyw3IEBACiAJCQkJMEZCODg5MEIxNjdEMkZBMTAwMTBDREE1
IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCODg5
MEUxNjdEMzAxNjAwMTBDREE1IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyMDlCNDU2QjE2Nzk2QTdFMDBFNTRFNEUgLyogSlNDcnlwdG9DdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTEzRUYzNDkxNjg1MEM0NzAwMzRDODNGIC8qIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nvb2tpZUphci5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db29raWVKYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTmV0
d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvb2tpZUphci5oIgogCiAjaWYg
VVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCkBAIC00Myw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4dChjb25z
dCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CisgICAgLy8gRklYTUU6IFJldHVybmluZyAwIG1lYW5z
IGZhbGxpbmcgYmFjayB0byBkZWZhdWx0IGNvbnRleHQuIFRoYXQncyBub3QgYSBjaG9pY2UgdGhh
dCBpcyBhcHByb3ByaWF0ZSB0byBkbyBhdCBydW50aW1lCiAgICAgaWYgKCFkb2N1bWVudCkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CkBA
IC01NCw1NyArNTYsNjggQEAgc3RhdGljIE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29u
dAogICAgIHJldHVybiBsb2FkZXItPm5ldHdvcmtpbmdDb250ZXh0KCk7CiB9CiAKKyNpZiBQTEFU
Rk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCitpbmxpbmUgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzdG9yYWdlU2Vzc2lvbihjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQgPSBuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCk7CisgICAg
cmV0dXJuIGNvbnRleHQgPyBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpIDogTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKK30KKyNkZWZpbmUgU0VTU0lPTihk
b2N1bWVudCkgc3RvcmFnZVNlc3Npb24oZG9jdW1lbnQpCisjZWxzZQorI2RlZmluZSBTRVNTSU9O
KGRvY3VtZW50KSBOZXR3b3JrU3RvcmFnZVNlc3Npb24obmV0d29ya2luZ0NvbnRleHQoZG9jdW1l
bnQpKQorI2VuZGlmCisKIFN0cmluZyBjb29raWVzKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgS1VSTCYgdXJsKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAgIHJl
dHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmNvb2tpZXNGb3JE
T00obmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgdXJsKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNT
dHJhdGVneSgpLT5jb29raWVzRm9yRE9NKFNFU1NJT04oZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsKICNlbHNlCi0gICAgcmV0dXJuIGNvb2tpZXNGb3JE
T00obmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgdXJsKTsKKyAgICByZXR1cm4gY29va2llc0ZvckRPTShTRVNTSU9OKGRvY3VtZW50
KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVybCk7CiAjZW5kaWYKIH0KIAog
dm9pZCBzZXRDb29raWVzKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykK
LSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPnNldENvb2tpZXNG
cm9tRE9NKG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlG
b3JDb29raWVzKCksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+Y29va2llc1N0cmF0ZWd5KCktPnNldENvb2tpZXNGcm9tRE9NKFNFU1NJT04oZG9jdW1lbnQp
LCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBjb29raWVTdHJpbmcpOwog
I2Vsc2UKLSAgICBzZXRDb29raWVzRnJvbURPTShuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCks
IGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZVN0cmluZyk7Cisg
ICAgc2V0Q29va2llc0Zyb21ET00oU0VTU0lPTihkb2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZVN0cmluZyk7CiAjZW5kaWYKIH0KIAogYm9vbCBj
b29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAjaWYgVVNFKFBMQVRG
T1JNX1NUUkFURUdJRVMpCi0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVz
U3RyYXRlZ3koKS0+Y29va2llc0VuYWJsZWQobmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBk
b2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgZG9jdW1lbnQtPmNvb2tpZVVSTCgpKTsK
KyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5jb29r
aWVzRW5hYmxlZChTRVNTSU9OKGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29r
aWVzKCksIGRvY3VtZW50LT5jb29raWVVUkwoKSk7CiAjZWxzZQotICAgIHJldHVybiBjb29raWVz
RW5hYmxlZChuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCBkb2N1bWVudC0+Y29va2llVVJMKCkpOworICAgIHJldHVybiBjb29raWVz
RW5hYmxlZChTRVNTSU9OKGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVz
KCksIGRvY3VtZW50LT5jb29raWVVUkwoKSk7CiAjZW5kaWYKIH0KIAogU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VS
TCYgdXJsKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAgIHJldHVybiBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFy
dHlGb3JDb29raWVzKCksIHVybCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5j
b29raWVzU3RyYXRlZ3koKS0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU0VTU0lPTihk
b2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpOwogI2Vsc2UK
LSAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUobmV0d29ya2luZ0NvbnRl
eHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsKKyAg
ICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU0VTU0lPTihkb2N1bWVudCks
IGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpOwogI2VuZGlmCiB9CiAKIGJv
b2wgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVy
bCwgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMpCiB7CiAjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJ
RVMpCi0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+
Z2V0UmF3Q29va2llcyhuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCksIGRvY3VtZW50LT5maXJz
dFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOworICAgIHJldHVybiBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmdldFJhd0Nvb2tpZXMoU0VTU0lPTihkb2N1
bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOwog
I2Vsc2UKLSAgICByZXR1cm4gZ2V0UmF3Q29va2llcyhuZXR3b3JraW5nQ29udGV4dChkb2N1bWVu
dCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOworICAg
IHJldHVybiBnZXRSYXdDb29raWVzKFNFU1NJT04oZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBjb29raWVzKTsKICNlbmRpZgogfQogCiB2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb29raWVOYW1lKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+ZGVsZXRlQ29va2llKG5l
dHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmRlbGV0ZUNvb2tpZShTRVNTSU9OKGRv
Y3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKICNlbHNlCi0gICAgZGVsZXRlQ29va2llKG5ldHdv
cmtpbmdDb250ZXh0KGRvY3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBkZWxldGVDb29r
aWUoU0VTU0lPTihkb2N1bWVudCksIHVybCwgY29va2llTmFtZSk7CiAjZW5kaWYKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxMzg0
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlSG9z
dC5oIgogI2luY2x1ZGUgIkFzeW5jRmlsZVN0cmVhbS5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gMTM4NDA3KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJDYWNoZVBvbGljeS5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJQdXJnZVByaW9yaXR5LmgiCisjaW5jbHVkZSAi
UmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0
LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAkocmV2
aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDMwICszMywyMiBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKE1B
QykgfHwgVVNFKENGTkVUV09SSykKLXR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0
b3JhZ2UqICBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgS1VSTDsKLWNsYXNzIE5ldHdvcmtpbmdDb250ZXh0OworY2xhc3MgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOwogc3RydWN0IENvb2tpZTsKIAogY2xhc3MgQ29va2llc1N0cmF0
ZWd5IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQoKSA9
IDA7CiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBS
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gZGVmYXVsdENvb2tpZVN0b3JhZ2UoKSA9
IDA7Ci0jZW5kaWYKLQotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2lu
Z0NvbnRleHQqLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmlu
ZykgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4
dCosIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmKSA9IDA7Ci0gICAgdmlydHVh
bCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOwotICAgIHZpcnR1YWwg
Ym9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+JikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiBjb29raWVOYW1lKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY29v
a2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXRS
YXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgfkNvb2tpZXNTdHJhdGVneSgpIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAkocmV2aXNpb24gMTM4
NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5k
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1
ZXN0LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOZXR3b3JrU3RvcmFnZVNlc3Np
b25faAorI2RlZmluZSBOZXR3b3JrU3RvcmFnZVNlc3Npb25faAorCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgUExBVEZP
Uk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQordHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTFN0
b3JhZ2VTZXNzaW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwordHlwZWRlZiBzdHJ1Y3QgT3Bh
cXVlQ0ZIVFRQQ29va2llU3RvcmFnZSogIENGSFRUUENvb2tpZVN0b3JhZ2VSZWY7CisjZW5kaWYK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOZXR3b3JraW5nQ29udGV4dDsKKworY2xh
c3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3
b3JrU3RvcmFnZVNlc3Npb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsK
KyAgICBzdGF0aWMgUGFzc093blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IGNyZWF0ZVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSk7CisKKyAgICBz
dGF0aWMgdm9pZCBzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7CisKKyNpZiBQTEFURk9STShN
QUMpIHx8IFVTRShDRk5FVFdPUkspCisgICAgLy8gTWF5IGJlIG51bGwsIGluIHdoaWNoIGNhc2Ug
YSBGb3VuZGF0aW9uIGRlZmF1bHQgc2hvdWxkIGJlIHVzZWQuCisgICAgQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZiBwbGF0Zm9ybVNlc3Npb24oKSB7IHJldHVybiBtX3BsYXRmb3JtU2Vzc2lvbi5nZXQo
KTsgfQorICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdl
KCkgY29uc3Q7CisgICAgYm9vbCBpc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSBjb25zdCB7IHJl
dHVybiBtX2lzUHJpdmF0ZTsgfQorI2Vsc2UKKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24oTmV0
d29ya2luZ0NvbnRleHQqKTsKKyAgICB+TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCk7CisgICAgTmV0
d29ya2luZ0NvbnRleHQqIGNvbnRleHQoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorI2lm
IFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Np
b24oQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBwbGF0Zm9ybVNlc3Npb24pOworICAgIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbigpOworICAgIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBt
X3BsYXRmb3JtU2Vzc2lvbjsKKyAgICBib29sIG1faXNQcml2YXRlOworI2Vsc2UKKyAgICBSZWZQ
dHI8TmV0d29ya2luZ0NvbnRleHQ+IG1fY29udGV4dDsKKyNlbmRpZgorfTsKKworI2lmIFBMQVRG
T1JNKFdJTikKKy8vIE5lZWRlZCBmb3IgV2ViS2l0MSBBUEkgb25seS4KK3ZvaWQgb3ZlcnJpZGVD
b29raWVTdG9yYWdlKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYpOworQ0ZIVFRQQ29va2llU3RvcmFn
ZVJlZiBvdmVycmlkZW5Db29raWVTdG9yYWdlKCk7CisjZW5kaWYKKworfQorCisjZW5kaWYgLy8g
TmV0d29ya1N0b3JhZ2VTZXNzaW9uX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uU3R1Yi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmgiCisKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCisg
ICAgOiBtX2NvbnRleHQoY29udGV4dCkKK3sKK30KKworTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjp+
TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkKK3sKK30KKworTmV0d29ya2luZ0NvbnRleHQqIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGV4
dC5nZXQoKTsKK30KKworUGFzc093blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihjb25zdCBTdHJpbmcm
KQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCitOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VT
ZXNzaW9uKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biwgc2Vzc2lvbiwgKDApKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKK30KKwordm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKQoreworfQorCit9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JraW5n
Q29udGV4dC5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDcgKzIwLDgg
QEAKICNpZm5kZWYgTmV0d29ya2luZ0NvbnRleHRfaAogI2RlZmluZSBOZXR3b3JraW5nQ29udGV4
dF9oCiAKLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKIAogI2lmIFBMQVRGT1JN
KE1BQykKICNpbmNsdWRlICJTY2hlZHVsZVBhaXIuaCIKQEAgLTQwLDEwICs0MSw2IEBAIGNsYXNz
IFdlYkNvb2tpZUphcjsKIE9CSkNfQ0xBU1MgTlNPcGVyYXRpb25RdWV1ZTsKICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQotdHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
X19DRlVSTFN0b3JhZ2VTZXNzaW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwotI2VuZGlmCi0K
ICNpZiBQTEFURk9STShRVCkKIFFUX0JFR0lOX05BTUVTUEFDRQogY2xhc3MgUU9iamVjdDsKQEAg
LTY4LDYgKzY1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgLy8gRklYTUU6
IFdyYXAgV2ViQ29va2llSmFyIGludG8gYSBOZXR3b3JrU3RvcmFnZVNlc3Npb24gdG8gbWFrZSB0
aGUgY29kZSBjcm9zcy1wbGF0Zm9ybS4KICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViQ29va2llSmFy
KiBjb29raWVKYXIoKSBjb25zdCA9IDA7CiAjZW5kaWYKIApAQCAtODAsMTEgKzc4LDEyIEBAIHB1
YmxpYzoKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQotICAg
IHZpcnR1YWwgYm9vbCBpblByaXZhdGVCcm93c2luZ01vZGUoKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgPSAwOwor
CisgICAgdmlydHVhbCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29u
c3QgPSAwOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShRVCkKKyAgICAvLyBGSVhNRTogV3JhcCBR
TmV0d29ya0FjY2Vzc01hbmFnZXIgaW50byBhIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB0byBtYWtl
IHRoZSBjb2RlIGNyb3NzLXBsYXRmb3JtLgogICAgIHZpcnR1YWwgUU9iamVjdCogb3JpZ2luYXRp
bmdPYmplY3QoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBRTmV0d29ya0FjY2Vzc01hbmFnZXIq
IG5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBtaW1l
U25pZmZpbmdFbmFibGVkKCkgY29uc3QgPSAwOwpAQCAtOTgsNiArOTcsNyBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogI2lmIFVTRShTT1VQKQorICAgIC8vIEZJWE1FOiBXcmFwIFNvdXBTZXNzaW9uIGlu
dG8gYSBOZXR3b3JrU3RvcmFnZVNlc3Npb24gdG8gbWFrZSB0aGUgY29kZSBjcm9zcy1wbGF0Zm9y
bS4KICAgICB2aXJ0dWFsIFNvdXBTZXNzaW9uKiBzb3VwU2Vzc2lvbigpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQoKSBjb25zdCA9IDA7CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3Jt
Q29va2llSmFyLmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTkgKzM0
LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEtVUkw7Ci1jbGFzcyBOZXR3b3Jr
aW5nQ29udGV4dDsKK2NsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIHN0cnVjdCBDb29raWU7
CiAKIC8vIElmIG5ldHdvcmtpbmcgY29udGV4dCBpcyBudWxsLCBkZWZhdWx0IGNvb2tpZSBzdG9y
YWdlIGlzIHVzZWQuCi1TdHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCosIGNv
bnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmKTsKLXZvaWQgc2V0Q29va2llc0Zyb21E
T00oTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJik7Ci1ib29sIGNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0
KiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpOwotU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYpOwotYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250
ZXh0KiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+
Jik7Ci12b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmKTsKLXZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya2luZ0Nv
bnRleHQqLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcyk7Ci12b2lkIGRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOwot
dm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0Kik7CitTdHJpbmcgY29va2ll
c0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJik7Cit2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBjb25z
dCBTdHJpbmcmKTsKK2Jvb2wgY29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpOworU3RyaW5nIGNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmKTsKK2Jvb2wgZ2V0UmF3Q29va2llcyhj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJiwgVmVjdG9yPENvb2tpZT4mKTsKK3ZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKTsKK3ZvaWQgZ2V0
SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNl
dDxTdHJpbmc+JiBob3N0bmFtZXMpOwordm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7Cit2b2lk
IGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJik7CiAKIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBA
CiAKICNpbmNsdWRlICJCbG9iUmVnaXN0cnkuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5j
bHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVu
dC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAkocmV2
aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMyArMjYsMTMgQEAKICNpZm5kZWYgUmVz
b3VyY2VIYW5kbGVfaAogI2RlZmluZSBSZXNvdXJjZUhhbmRsZV9oCiAKLSNpbmNsdWRlICJBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgotI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAKICNpZiBVU0UoU09VUCkKK3R5cGVkZWYgc3RydWN0IF9HVGxzQ2VydGlmaWNhdGUgR1Rsc0Nl
cnRpZmljYXRlOwogdHlwZWRlZiBzdHJ1Y3QgX1NvdXBTZXNzaW9uIFNvdXBTZXNzaW9uOwogdHlw
ZWRlZiBzdHJ1Y3QgX1NvdXBSZXF1ZXN0IFNvdXBSZXF1ZXN0OwogI2VuZGlmCkBAIC03OCw2ICs3
OCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQ3JlZGVudGlhbDsK
IGNsYXNzIEZyYW1lOwogY2xhc3MgS1VSTDsKK2NsYXNzIE5ldHdvcmtpbmdDb250ZXh0OwogY2xh
c3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNl
SGFuZGxlQ2xpZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9D
b29raWVKYXJDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw5ICsyOSw4IEBACiAjaWYgVVNFKENGTkVUV09SSykKIAogI2luY2x1ZGUg
IkNvb2tpZS5oIgotI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2VDRk5ldC5oIgogI2luY2x1ZGUgIktV
UkwuaCIKLSNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIk5ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAi
U29mdExpbmtpbmcuaCIKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIVFRQQ29va2llc1ByaXYuaD4K
QEAgLTk1LDE1ICs5NCwxMiBAQCBzdGF0aWMgUmV0YWluUHRyPENGQXJyYXlSZWY+IGZpbHRlckNv
b2tpCiAgICAgcmV0dXJuIGZpbHRlcmVkQ29va2llczsKIH0KIAotdm9pZCBzZXRDb29raWVzRnJv
bURPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBzZXRDb29raWVzRnJv
bURPTShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyA8cmRh
cjovL3Byb2JsZW0vNTYzMjg4Mz4gQ0ZIVFRQQ29va2llU3RvcmFnZSBzdG9yZXMgYW4gZW1wdHkg
Y29va2llLCB3aGljaCB3b3VsZCBiZSBzZW50IGFzICJDb29raWU6ID0iLgogICAgIGlmICh2YWx1
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29r
aWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBB
U1NFUlQoY29va2llU3RvcmFnZSk7Ci0KICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybENGKEFk
b3B0Q0YsIHVybC5jcmVhdGVDRlVSTCgpKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGZpcnN0
UGFydHlGb3JDb29raWVzQ0YoQWRvcHRDRiwgZmlyc3RQYXJ0eS5jcmVhdGVDRlVSTCgpKTsKIApA
QCAtMTE5LDU0ICsxMTUsNDMgQEAgdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29u
dGV4dAogICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQ
Q29va2llQ3JlYXRlV2l0aFJlc3BvbnNlSGVhZGVyRmllbGRzKGtDRkFsbG9jYXRvckRlZmF1bHQs
CiAgICAgICAgIGhlYWRlckZpZWxkc0NGLmdldCgpLCB1cmxDRi5nZXQoKSkpOwogCi0gICAgQ0ZI
VFRQQ29va2llU3RvcmFnZVNldENvb2tpZXMoY29va2llU3RvcmFnZS5nZXQoKSwgZmlsdGVyQ29v
a2llcyhjb29raWVzQ0YuZ2V0KCkpLmdldCgpLCB1cmxDRi5nZXQoKSwgZmlyc3RQYXJ0eUZvckNv
b2tpZXNDRi5nZXQoKSk7CisgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZXMoc2Vzc2lv
bi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIGZpbHRlckNvb2tpZXMoY29va2llc0NGLmdldCgpKS5n
ZXQoKSwgdXJsQ0YuZ2V0KCksIGZpcnN0UGFydHlGb3JDb29raWVzQ0YuZ2V0KCkpOwogfQogCi1T
dHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VS
TCYsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBS
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQg
PyBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29r
aWVTdG9yYWdlKCk7Ci0gICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwotCiAgICAgUmV0YWluUHRy
PENGVVJMUmVmPiB1cmxDRihBZG9wdENGLCB1cmwuY3JlYXRlQ0ZVUkwoKSk7CiAKICAgICBib29s
IHNlY3VyZSA9IHVybC5wcm90b2NvbElzKCJodHRwcyIpOwotICAgIFJldGFpblB0cjxDRkFycmF5
UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzRm9y
VVJMKGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHVybENGLmdldCgpLCBzZWN1cmUpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZBcnJheVJlZj4gY29va2llc0NGKEFkb3B0Q0YsIENGSFRUUENvb2tpZVN0b3JhZ2VD
b3B5Q29va2llc0ZvclVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsQ0YuZ2V0
KCksIHNlY3VyZSkpOwogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGhlYWRlckNGKEFk
b3B0Q0YsIENGSFRUUENvb2tpZUNvcHlSZXF1ZXN0SGVhZGVyRmllbGRzKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGZpbHRlckNvb2tpZXMoY29va2llc0NGLmdldCgpKS5nZXQoKSkpOwogICAgIHJldHVy
biAoQ0ZTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoaGVhZGVyQ0YuZ2V0KCksIHNfY29v
a2llQ0YpOwogfQogCi1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBL
VVJMJiB1cmwpCitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3Qg
S1VSTCYgdXJsKQogewotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29r
aWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQp
IDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFn
ZSk7Ci0KICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybENGKEFkb3B0Q0YsIHVybC5jcmVhdGVD
RlVSTCgpKTsKIAogICAgIGJvb2wgc2VjdXJlID0gdXJsLnByb3RvY29sSXMoImh0dHBzIik7Ci0g
ICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVT
dG9yYWdlQ29weUNvb2tpZXNGb3JVUkwoY29va2llU3RvcmFnZS5nZXQoKSwgdXJsQ0YuZ2V0KCks
IHNlY3VyZSkpOworICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwg
Q0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzRm9yVVJMKHNlc3Npb24uY29va2llU3RvcmFn
ZSgpLmdldCgpLCB1cmxDRi5nZXQoKSwgc2VjdXJlKSk7CiAgICAgUmV0YWluUHRyPENGRGljdGlv
bmFyeVJlZj4gaGVhZGVyQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llQ29weVJlcXVlc3RIZWFkZXJG
aWVsZHMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY29va2llc0NGLmdldCgpKSk7CiAgICAgcmV0dXJu
IChDRlN0cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShoZWFkZXJDRi5nZXQoKSwgc19jb29r
aWVDRik7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQorYm9v
bCBjb29raWVzRW5hYmxlZChOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQogewotICAgIFJldGFpblB0
cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJl
bnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3Jh
Z2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7Ci0KLSAgICBDRkhUVFBDb29raWVTdG9y
YWdlQWNjZXB0UG9saWN5IHBvbGljeSA9IENGSFRUUENvb2tpZVN0b3JhZ2VHZXRDb29raWVBY2Nl
cHRQb2xpY3koY29va2llU3RvcmFnZS5nZXQoKSk7CisgICAgQ0ZIVFRQQ29va2llU3RvcmFnZUFj
Y2VwdFBvbGljeSBwb2xpY3kgPSBDRkhUVFBDb29raWVTdG9yYWdlR2V0Q29va2llQWNjZXB0UG9s
aWN5KHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpKTsKICAgICByZXR1cm4gcG9saWN5ID09
IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFp
biB8fCBwb2xpY3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeUFsd2F5czsKIH0K
IAotYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBL
VVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3
Q29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxD
b29raWU+JiByYXdDb29raWVzKQogewogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKLSAgICBSZXRh
aW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBj
dXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVT
dG9yYWdlKCk7Ci0gICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwogCiAgICAgUmV0YWluUHRyPENG
VVJMUmVmPiB1cmxDRihBZG9wdENGLCB1cmwuY3JlYXRlQ0ZVUkwoKSk7CiAKICAgICBib29sIHNl
bmRTZWN1cmVDb29raWVzID0gdXJsLnByb3RvY29sSXMoImh0dHBzIik7Ci0gICAgUmV0YWluUHRy
PENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVTdG9yYWdlQ29weUNv
b2tpZXNGb3JVUkwoY29va2llU3RvcmFnZS5nZXQoKSwgdXJsQ0YuZ2V0KCksIHNlbmRTZWN1cmVD
b29raWVzKSk7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBD
RkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdl
KCkuZ2V0KCksIHVybENGLmdldCgpLCBzZW5kU2VjdXJlQ29va2llcykpOwogCiAgICAgQ0ZJbmRl
eCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChjb29raWVzQ0YuZ2V0KCkpOwogICAgIHJhd0Nvb2tp
ZXMucmVzZXJ2ZUNhcGFjaXR5KGNvdW50KTsKQEAgLTE5MCwxMCArMTc1LDkgQEAgYm9vbCBnZXRS
YXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjbwogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lKQog
ewotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0g
Y29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENG
SFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7CisgICAgUmV0
YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBzZXNzaW9uLmNv
b2tpZVN0b3JhZ2UoKTsKIAogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsQ0YoQWRvcHRDRiwg
dXJsLmNyZWF0ZUNGVVJMKCkpOwogCkBAIC0yMTAsMTIgKzE5NCw5IEBAIHZvaWQgZGVsZXRlQ29v
a2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb24KICAgICB9CiB9CiAKLXZvaWQgZ2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIEhhc2hTZXQ8U3RyaW5nPiYg
aG9zdG5hbWVzKQordm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQogewotICAgIFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1
cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0
b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZB
cnJheVJlZj4gY29va2llc0NGKEFkb3B0Q0YsIENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2ll
cyhjb29raWVTdG9yYWdlLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tp
ZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXMoc2Vzc2lvbi5jb29r
aWVTdG9yYWdlKCkuZ2V0KCkpKTsKICAgICBpZiAoIWNvb2tpZXNDRikKICAgICAgICAgcmV0dXJu
OwogCkBAIC0yMjcsMTAgKzIwOCw5IEBAIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0
d29ya2luZ0MKICAgICB9CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdv
cmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQordm9pZCBkZWxl
dGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBTdHJpbmcmIGhvc3RuYW1lKQogewotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdl
UmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdl
KGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29v
a2llU3RvcmFnZSk7CisgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tp
ZVN0b3JhZ2UgPSBzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKTsKIAogICAgIFJldGFpblB0cjxDRkFy
cmF5UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVz
KGNvb2tpZVN0b3JhZ2UuZ2V0KCkpKTsKICAgICBpZiAoIWNvb2tpZXNDRikKQEAgLTI0NSwxMiAr
MjI1LDkgQEAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZwogICAgIH0K
IH0KIAotdm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQor
dm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKIHsK
LSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNv
bnRleHQgPyBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhU
VFBDb29raWVTdG9yYWdlKCk7Ci0gICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwotCi0gICAgQ0ZI
VFRQQ29va2llU3RvcmFnZURlbGV0ZUFsbENvb2tpZXMoY29va2llU3RvcmFnZS5nZXQoKSk7Cisg
ICAgQ0ZIVFRQQ29va2llU3RvcmFnZURlbGV0ZUFsbENvb2tpZXMoc2Vzc2lvbi5jb29raWVTdG9y
YWdlKCkuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdl
Q0ZOZXQuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkg
KzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb29raWVTdG9yYWdlLmgi
CiAKLSNpbmNsdWRlICJDb29raWVTdG9yYWdlQ0ZOZXQuaCIKLQotI2luY2x1ZGUgIlJlc291cmNl
SGFuZGxlLmgiCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTQ4LDU2ICs0Niw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFBMQVRGT1JNKFdJTikKIAotc3RhdGljIFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiYgY29va2llU3RvcmFnZU92ZXJyaWRlKCkKLXsK
LSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVm
PiwgY29va2llU3RvcmFnZSwgKCkpOwotICAgIHJldHVybiBjb29raWVTdG9yYWdlOwotfQotCi0j
ZW5kaWYKLQotUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGN1cnJlbnRDRkhUVFBD
b29raWVTdG9yYWdlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQotewotI2lmIFBMQVRGT1JN
KFdJTikKLSAgICBpZiAoUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiBvdmVycmlk
ZSA9IGNvb2tpZVN0b3JhZ2VPdmVycmlkZSgpKQotICAgICAgICByZXR1cm4gb3ZlcnJpZGU7Ci0j
ZW5kaWYKLQotICAgIGlmIChDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHNlc3Npb24gPSBjb250ZXh0
LT5zdG9yYWdlU2Vzc2lvbigpKQotICAgICAgICByZXR1cm4gUmV0YWluUHRyPENGSFRUUENvb2tp
ZVN0b3JhZ2VSZWY+KEFkb3B0Q0YsIHdrQ29weUhUVFBDb29raWVTdG9yYWdlKHNlc3Npb24pKTsK
LQotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgcmV0dXJuIHdrR2V0RGVmYXVsdEhUVFBDb29raWVT
dG9yYWdlKCk7Ci0jZWxzZQotICAgIC8vIFdoZW4gdXNpbmcgTlNVUkxDb25uZWN0aW9uLCB3ZSBh
bHNvIHVzZSBpdHMgc2hhcmVkIGNvb2tpZSBzdG9yYWdlLgotICAgIHJldHVybiAwOwotI2VuZGlm
Ci19Ci0KLVJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBkZWZhdWx0Q0ZIVFRQQ29v
a2llU3RvcmFnZSgpCi17Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIGlmIChSZXRhaW5QdHI8Q0ZI
VFRQQ29va2llU3RvcmFnZVJlZj4mIG92ZXJyaWRlID0gY29va2llU3RvcmFnZU92ZXJyaWRlKCkp
Ci0gICAgICAgIHJldHVybiBvdmVycmlkZTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+ZGVmYXVsdENvb2tpZVN0b3JhZ2UoKTsK
LX0KLQotI2lmIFBMQVRGT1JNKFdJTikKLQotdm9pZCBvdmVycmlkZUNvb2tpZVN0b3JhZ2UoQ0ZI
VFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKQotewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7Ci0gICAgLy8gRklYTUU6IFdoeSBkb24ndCB3ZSByZXRhaW4gaXQ/IFRoZSBvbmx5
IGNhbGxlciBpcyBhbiBBUEkgbWV0aG9kIHRoYXQgdGFrZXMgY29va2llIHN0b3JhZ2UgYXMgYSBy
YXcgYXJndW1lbnQuCi0gICAgY29va2llU3RvcmFnZU92ZXJyaWRlKCkuYWRvcHRDRihjb29raWVT
dG9yYWdlKTsKLX0KLQotQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBvdmVycmlkZW5Db29raWVTdG9y
YWdlKCkKLXsKLSAgICByZXR1cm4gY29va2llU3RvcmFnZU92ZXJyaWRlKCkuZ2V0KCk7Ci19Ci0K
IHN0YXRpYyB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkT25NYWluVGhyZWFkKHZvaWQqKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC0xMzAsNyArNzgsNyBAQCB2b2lkIHN0YXJ0
T2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpCiAgICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBjb29r
aWVTdG9yYWdlT2JzZXJ2ZXJSdW5Mb29wKCk7CiAgICAgQVNTRVJUKHJ1bkxvb3ApOwogCi0gICAg
UmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBkZWZhdWx0
Q0ZIVFRQQ29va2llU3RvcmFnZSgpOworICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdl
UmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFn
ZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCk7CiAgICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwog
CiAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNjaGVkdWxlV2l0aFJ1bkxvb3AoY29va2llU3RvcmFn
ZS5nZXQoKSwgcnVuTG9vcCwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKQEAgLTE0NCw3ICs5Miw3
IEBAIHZvaWQgc3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKQogICAgIENGUnVuTG9vcFJlZiBy
dW5Mb29wID0gY29va2llU3RvcmFnZU9ic2VydmVyUnVuTG9vcCgpOwogICAgIEFTU0VSVChydW5M
b29wKTsKIAotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9y
YWdlID0gZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKKyAgICBSZXRhaW5QdHI8Q0ZIVFRQ
Q29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpOwogICAgIEFTU0VSVChjb29r
aWVTdG9yYWdlKTsKIAogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VSZW1vdmVPYnNlcnZlcihjb29r
aWVTdG9yYWdlLmdldCgpLCBydW5Mb29wLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUsIG5vdGlmeUNv
b2tpZXNDaGFuZ2VkLCAwKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvQ29va2llU3RvcmFnZUNGTmV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuaAkocmV2aXNpb24gMTM4NDA3KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBDb29r
aWVTdG9yYWdlQ0ZOZXRfaAotI2RlZmluZSBDb29raWVTdG9yYWdlQ0ZOZXRfaAotCi0jaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgotCi10eXBlZGVmIHN0cnVjdCBPcGFxdWVDRkhUVFBDb29raWVT
dG9yYWdlKiAgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBOZXR3b3JraW5nQ29udGV4dDsKLQotUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWY+IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKE5ldHdvcmtpbmdDb250ZXh0Kik7IC8v
IFdpbGwgYmUgbnVsbCB3aGVuIHVzaW5nIHNoYXJlZCBOU0hUVFBDb29raWVTdG9yYWdlLgotUmV0
YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdl
KCk7IC8vIERvZXNuJ3QgdGFrZSBjdXJyZW50IHNlc3Npb24gaW50byBhY2NvdW50LgotCi0jaWYg
UExBVEZPUk0oV0lOKQotLy8gTmVlZGVkIGZvciBXZWJLaXQxIEFQSSBvbmx5Lgotdm9pZCBvdmVy
cmlkZUNvb2tpZVN0b3JhZ2UoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZik7Ci1DRkhUVFBDb29raWVT
dG9yYWdlUmVmIG92ZXJyaWRlbkNvb2tpZVN0b3JhZ2UoKTsKLSNlbmRpZgotCi19Ci0KLSNlbmRp
ZiAvLyBDb29raWVTdG9yYWdlQ0ZOZXRfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25D
Rk5ldC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisKKyNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNl
LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitOZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbihDRlVSTFN0b3Jh
Z2VTZXNzaW9uUmVmIHBsYXRmb3JtU2Vzc2lvbikKKyAgICA6IG1fcGxhdGZvcm1TZXNzaW9uKHBs
YXRmb3JtU2Vzc2lvbikKKyAgICAsIG1faXNQcml2YXRlKGZhbHNlKQoreworfQorCitzdGF0aWMg
T3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4mIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Np
b24oKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbj4sIHNlc3Npb24sICgpKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKK30KKwordm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKQoreworICAgIC8v
IFNldCBhIHByaXZhdGUgc2Vzc2lvbiBmb3IgdGVzdGluZyB0byBhdm9pZCBpbnRlcmZlcmluZyB3
aXRoIGdsb2JhbCBjb29raWVzLiBUaGlzIHNob3VsZCBiZSBkaWZmZXJlbnQgZnJvbSBwcml2YXRl
IGJyb3dzaW5nIHNlc3Npb24uCisgICAgLy8gRklYTUU6IEl0IGxvb2tzIGxpa2UgY3JlYXRpbmcg
YSBuZXcgc2Vzc2lvbiB3aXRoIHRoZSBzYW1lIGlkZW50aWZpZXIgbWF5IGJlIGp1c3QgY3JlYXRp
bmcgYSByZWZlcmVuY2UgdG8gdGhlIHNhbWUgc3RvcmFnZS4gU2VlIDxyZGFyOi8vcHJvYmxlbS8x
MTU3MTQ1MD4gYW5kIDxyZGFyOi8vcHJvYmxlbS8xMjM4NDM4MD4uCisjaWYgUExBVEZPUk0oTUFD
KQorICAgIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSA9IGFkb3B0UHRyKG5ldyBOZXR3
b3JrU3RvcmFnZVNlc3Npb24od2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTVFIoIlBy
aXZhdGUgV2ViS2l0IFNlc3Npb24iKSkpKTsKKyNlbHNlCisgICAgZGVmYXVsdE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbigpID0gYWRvcHRQdHIobmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbih3a0NyZWF0
ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlNUUigiUHJpdmF0ZSBXZWJLaXQgU2Vzc2lvbiIpLCBk
ZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCktPnBsYXRmb3JtU2Vzc2lvbigpKSkpOworI2Vu
ZGlmCit9CisKKyNpZiBQTEFURk9STShXSU4pCitzdGF0aWMgUmV0YWluUHRyPENGSFRUUENvb2tp
ZVN0b3JhZ2VSZWY+JiBjb29raWVTdG9yYWdlT3ZlcnJpZGUoKQoreworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+LCBjb29raWVTdG9yYWdl
LCAoKSk7CisgICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2U7Cit9CisKK3ZvaWQgb3ZlcnJpZGVDb29r
aWVTdG9yYWdlKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSkKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIC8vIEZJWE1FOiBXaHkgZG9uJ3Qgd2UgcmV0YWlu
IGl0PyBUaGUgb25seSBjYWxsZXIgaXMgYW4gQVBJIG1ldGhvZCB0aGF0IHRha2VzIGNvb2tpZSBz
dG9yYWdlIGFzIGEgcmF3IGFyZ3VtZW50LgorICAgIGNvb2tpZVN0b3JhZ2VPdmVycmlkZSgpLmFk
b3B0Q0YoY29va2llU3RvcmFnZSk7Cit9CisKK0NGSFRUUENvb2tpZVN0b3JhZ2VSZWYgb3ZlcnJp
ZGVuQ29va2llU3RvcmFnZSgpCit7CisgICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2VPdmVycmlkZSgp
LmdldCgpOworfQorI2VuZGlmCisKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKQoreworICAgIHJldHVybiAqZGVmYXVs
dE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOworfQorCitQYXNzT3duUHRyPE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckJhc2UpCit7CisgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBjZklkZW50aWZpZXIgPSBTdHJpbmcoaWRlbnRpZmllckJhc2UgKyAiLlByaXZhdGVC
cm93c2luZyIpLmNyZWF0ZUNGU3RyaW5nKCk7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgT3du
UHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gc2Vzc2lvbiA9IGFkb3B0UHRyKG5ldyBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24od2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVy
LmdldCgpKSkpOworI2Vsc2UKKyAgICBPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBzZXNz
aW9uID0gYWRvcHRQdHIobmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbih3a0NyZWF0ZVByaXZhdGVT
dG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCksIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNl
c3Npb24oKS0+cGxhdGZvcm1TZXNzaW9uKCkpKSk7CisjZW5kaWYKKyAgICBzZXNzaW9uLT5tX2lz
UHJpdmF0ZSA9IHRydWU7CisKKyAgICByZXR1cm4gc2Vzc2lvbi5yZWxlYXNlKCk7Cit9CisKK1Jl
dGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZVN0b3JhZ2UoKSBjb25zdAoreworI2lmIFBMQVRGT1JNKFdJTikKKyAgICBpZiAoUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiBvdmVycmlkZSA9IGNvb2tpZVN0b3JhZ2VPdmVy
cmlkZSgpKQorICAgICAgICByZXR1cm4gb3ZlcnJpZGU7CisjZW5kaWYKKworICAgIGlmIChtX3Bs
YXRmb3JtU2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9y
YWdlUmVmPihBZG9wdENGLCB3a0NvcHlIVFRQQ29va2llU3RvcmFnZShtX3BsYXRmb3JtU2Vzc2lv
bi5nZXQoKSkpOworCisjaWYgVVNFKENGTkVUV09SSykKKyAgICByZXR1cm4gd2tHZXREZWZhdWx0
SFRUUENvb2tpZVN0b3JhZ2UoKTsKKyNlbHNlCisgICAgLy8gV2hlbiB1c2luZyBOU1VSTENvbm5l
Y3Rpb24sIHdlIGFsc28gdXNlIGl0cyBzaGFyZWQgY29va2llIHN0b3JhZ2UuCisgICAgcmV0dXJu
IDA7CisjZW5kaWYKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCShyZXZpc2lvbiAx
Mzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbkNGLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aCIKLSNpbmNsdWRlICJDb29raWVTdG9yYWdlQ0ZOZXQuaCIKICNpbmNsdWRlICJDcmVkZW50aWFs
U3RvcmFnZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAi
Rm9ybURhdGFTdHJlYW1DRk5ldC5oIgpAQCAtMzgsNiArMzcsNyBAQAogI2luY2x1ZGUgIkxvYWRl
clJ1bkxvb3BDRi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJl
Z2lzdHJ5LmgiCisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZXNv
dXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZVJlc3BvbnNlLmgiCkBAIC0xNjUsNyArMTY1LDcgQEAgc3RhdGljIENGVVJMUmVx
dWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQwogICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBuZXdNZXRob2QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdE1ldGhv
ZChjZlJlcXVlc3QpKTsKICAgICAgICAgICAgIGlmIChDRlN0cmluZ0NvbXBhcmVXaXRoT3B0aW9u
cyhsYXN0SFRUUE1ldGhvZC5nZXQoKSwgbmV3TWV0aG9kLmdldCgpLCBDRlJhbmdlTWFrZSgwLCBD
RlN0cmluZ0dldExlbmd0aChsYXN0SFRUUE1ldGhvZC5nZXQoKSkpLCBrQ0ZDb21wYXJlQ2FzZUlu
c2Vuc2l0aXZlKSkgewogICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRk11dGFibGVVUkxSZXF1
ZXN0UmVmPiBtdXRhYmxlUmVxdWVzdChBZG9wdENGLCBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxl
Q29weSgwLCBjZlJlcXVlc3QpKTsKLSAgICAgICAgICAgICAgICB3a1NldFJlcXVlc3RTdG9yYWdl
U2Vzc2lvbihoYW5kbGUtPnN0b3JhZ2VTZXNzaW9uKCksIG11dGFibGVSZXF1ZXN0LmdldCgpKTsK
KyAgICAgICAgICAgICAgICB3a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbihoYW5kbGUtPnN0b3Jh
Z2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCksIG11dGFibGVSZXF1ZXN0LmdldCgpKTsKICAg
ICAgICAgICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWVzdE1ldGhvZChtdXRhYmxlUmVx
dWVzdC5nZXQoKSwgbGFzdEhUVFBNZXRob2QuZ2V0KCkpOwogCiAgICAgICAgICAgICAgICAgRm9y
bURhdGEqIGJvZHkgPSBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLmh0dHBCb2R5KCk7CkBAIC0zOTks
NyArMzk5LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llUAogewog
ICAgIC8vIElmIGEgVVJMIGFscmVhZHkgaGFzIGNvb2tpZXMsIHRoZW4gd2UnbGwgcmVsYXggdGhl
IDNyZCBwYXJ0eSBjb29raWUgcG9saWN5IGFuZCBhY2NlcHQgbmV3IGNvb2tpZXMuCiAKLSAgICBS
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY2ZDb29raWVTdG9yYWdlID0gY3VycmVu
dENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCk7CisgICAgUmV0YWluUHRyPENGSFRUUENvb2tp
ZVN0b3JhZ2VSZWY+IGNmQ29va2llU3RvcmFnZSA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCku
Y29va2llU3RvcmFnZSgpOwogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kgY29v
a2llQWNjZXB0UG9saWN5ID0gQ0ZIVFRQQ29va2llU3RvcmFnZUdldENvb2tpZUFjY2VwdFBvbGlj
eShjZkNvb2tpZVN0b3JhZ2UuZ2V0KCkpOwogCiAgICAgaWYgKGNvb2tpZUFjY2VwdFBvbGljeSAh
PSBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21h
aW4pCkBAIC01MDYsNyArNTA2LDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoTmV0d29y
a2luZ0NvbgogICAgIGlmICghY29udGV4dC0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBkLT5tX3N0b3JhZ2VTZXNzaW9uID0gY29udGV4dC0+c3RvcmFnZVNlc3Npb24o
KTsKKyAgICBkLT5tX3N0b3JhZ2VTZXNzaW9uID0gY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5w
bGF0Zm9ybVNlc3Npb24oKTsKIAogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Ug
PSAhY2xpZW50KCkgfHwgY2xpZW50KCktPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKHRoaXMp
OwogCkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNl
U3luY2hybwogCiAgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBhZG9wdFJlZihu
ZXcgUmVzb3VyY2VIYW5kbGUocmVxdWVzdCwgY2xpZW50LmdldCgpLCBmYWxzZSAvKmRlZmVyc0xv
YWRpbmcqLywgdHJ1ZSAvKnNob3VsZENvbnRlbnRTbmlmZiovKSk7CiAKLSAgICBoYW5kbGUtPmQt
Pm1fc3RvcmFnZVNlc3Npb24gPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpOworICAgIGhhbmRs
ZS0+ZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZv
cm1TZXNzaW9uKCk7CiAKICAgICBpZiAoaGFuZGxlLT5kLT5tX3NjaGVkdWxlZEZhaWx1cmVUeXBl
ICE9IE5vRmFpbHVyZSkgewogICAgICAgICBlcnJvciA9IGNvbnRleHQtPmJsb2NrZWRFcnJvcihy
ZXF1ZXN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0v
Q29va2llSmFyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMzg0
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL0Nvb2tpZUph
ckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNTUgKzQxLDU1IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNv
b2tpZXMsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpCiB7Ci0gICAg
aWYgKCFjb250ZXh0KQorICAgIGlmICghc2Vzc2lvbi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBXZWJLaXQ6OldlYkNvb2tpZUphciogY29va2llSmFyID0gY29udGV4dC0+Y29va2ll
SmFyKCk7CisgICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9IHNlc3Npb24uY29u
dGV4dCgpLT5jb29raWVKYXIoKTsKICAgICBpZiAoY29va2llSmFyKQogICAgICAgICBjb29raWVK
YXItPnNldENvb2tpZSh1cmwsIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb29raWVTdHIpOwogfQog
Ci1TdHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3Qg
S1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29r
aWVzRm9yRE9NKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBpZiAoIWNvbnRleHQp
CisgICAgaWYgKCFzZXNzaW9uLmNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
ICAgIFN0cmluZyByZXN1bHQ7Ci0gICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9
IGNvbnRleHQtPmNvb2tpZUphcigpOworICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVK
YXIgPSBzZXNzaW9uLmNvbnRleHQoKS0+Y29va2llSmFyKCk7CiAgICAgaWYgKGNvb2tpZUphcikK
ICAgICAgICAgcmVzdWx0ID0gY29va2llSmFyLT5jb29raWVzKHVybCwgZmlyc3RQYXJ0eUZvckNv
b2tpZXMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgaWYgKCFj
b250ZXh0KQorICAgIGlmICghc2Vzc2lvbi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKICAgICBTdHJpbmcgcmVzdWx0OwotICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29r
aWVKYXIgPSBjb250ZXh0LT5jb29raWVKYXIoKTsKKyAgICBXZWJLaXQ6OldlYkNvb2tpZUphciog
Y29va2llSmFyID0gc2Vzc2lvbi5jb250ZXh0KCktPmNvb2tpZUphcigpOwogICAgIGlmIChjb29r
aWVKYXIpCiAgICAgICAgIHJlc3VsdCA9IGNvb2tpZUphci0+Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUodXJsLCBmaXJzdFBhcnR5Rm9yQ29va2llcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29u
c3QgS1VSTCYgY29va2llVVJMLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcykKK2Jv
b2wgY29va2llc0VuYWJsZWQoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiBjb29raWVVUkwsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzKQogewogICAg
IGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgaWYgKCFjb250ZXh0KQorICAgIGlmICghc2Vzc2lv
bi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgV2ViS2l0OjpXZWJDb29r
aWVKYXIqIGNvb2tpZUphciA9IGNvbnRleHQtPmNvb2tpZUphcigpOworICAgIFdlYktpdDo6V2Vi
Q29va2llSmFyKiBjb29raWVKYXIgPSBzZXNzaW9uLmNvbnRleHQoKS0+Y29va2llSmFyKCk7CiAg
ICAgaWYgKGNvb2tpZUphcikKICAgICAgICAgcmVzdWx0ID0gY29va2llSmFyLT5jb29raWVzRW5h
YmxlZChjb29raWVVUkwsIGZpcnN0UGFydHlGb3JDb29raWVzKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEtVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxD
b29raWU+JiByYXdDb29raWVzKQorYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtV
UkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmF3Q29va2llcy5j
bGVhcigpOwotICAgIGlmICghY29udGV4dCkKKyAgICBpZiAoIXNlc3Npb24uY29udGV4dCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgV2ViS2l0OjpXZWJWZWN0b3I8V2ViS2l0OjpXZWJD
b29raWU+IHdlYkNvb2tpZXM7Ci0gICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9
IGNvbnRleHQtPmNvb2tpZUphcigpOworICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVK
YXIgPSBzZXNzaW9uLmNvbnRleHQoKS0+Y29va2llSmFyKCk7CiAgICAgaWYgKGNvb2tpZUphcikK
ICAgICAgICAgY29va2llSmFyLT5yYXdDb29raWVzKHVybCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMs
IHdlYkNvb2tpZXMpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB3ZWJDb29raWVzLnNp
emUoKTsgKytpKSB7CkBAIC0xMDAsMjYgKzEwMCwyNiBAQCBib29sIGdldFJhd0Nvb2tpZXMoTmV0
d29ya2luZ0NvbnRleHQqIGNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgZGVsZXRlQ29v
a2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgY29va2llTmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7
Ci0gICAgaWYgKCFjb250ZXh0KQorICAgIGlmICghc2Vzc2lvbi5jb250ZXh0KCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBXZWJLaXQ6OldlYkNvb2tpZUphciogY29va2llSmFyID0gY29udGV4dC0+
Y29va2llSmFyKCk7CisgICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9IHNlc3Np
b24uY29udGV4dCgpLT5jb29raWVKYXIoKTsKICAgICBpZiAoY29va2llSmFyKQogICAgICAgICBj
b29raWVKYXItPmRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUpOwogfQogCi12b2lkIGdldEhv
c3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiAvKmNvbnRleHQqLywgSGFzaFNl
dDxTdHJpbmc+JiAvKmhvc3RuYW1lcyovKQordm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBIYXNoU2V0PFN0cmluZz4mIC8qaG9zdG5hbWVzKi8pCiB7
CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxldGVDb29r
aWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZ0NvbnRleHQqIC8qY29udGV4dCovLCBjb25zdCBTdHJp
bmcmIC8qaG9zdG5hbWUqLykKK3ZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYgLypob3N0bmFtZSovKQogewogICAgIC8vIEZJ
WE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRlQWxsQ29va2llcyhOZXR3
b3JraW5nQ29udGV4dCogLypjb250ZXh0Ki8pCit2b2lkIGRlbGV0ZUFsbENvb2tpZXMoTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJikKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9SZXNvdXJj
ZUhhbmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jaHJvbWl1bS9SZXNvdXJjZUhhbmRsZS5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3VyY2VIYW5kbGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKIAorI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhh
bmRsZUludGVybmFsLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1
cmwuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDUwICsyNyw1
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiBjb29raWVKYXI7CiAKLXZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQordm9p
ZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwg
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGNvb2tpZUphci5z
ZXQodXJsLnN0cmluZygpLCB2YWx1ZSk7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKE5ldHdv
cmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29r
aWVzRm9yRE9NKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJM
JiB1cmwpCiB7CiAgICAgcmV0dXJuIGNvb2tpZUphci5nZXQodXJsLnN0cmluZygpKTsKIH0KIAot
U3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQorU3Ry
aW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgLy8g
RklYTUU6IGluY2x1ZGUgSHR0cE9ubHkgY29va2llLgogICAgIHJldHVybiBjb29raWVKYXIuZ2V0
KHVybC5zdHJpbmcoKSk7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVy
bCovKQorYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBL
VVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKIHsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLywgVmVjdG9y
PENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8s
IFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGlt
cGxlbWVudGVkCiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIHJldHVybiBmYWxzZTsgLy8g
cmV0dXJuIHRydWUgd2hlbiBpbXBsZW1lbnRlZAogfQogCi12b2lkIGRlbGV0ZUNvb2tpZShOZXR3
b3JraW5nQ29udGV4dCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQordm9pZCBkZWxldGVD
b29raWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYp
CiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBnZXRIb3N0
bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCosIEhhc2hTZXQ8U3RyaW5nPiYgaG9z
dG5hbWVzKQordm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKIHsKICAgICAvLyBGSVhNRTogTm90IHll
dCBpbXBsZW1lbnRlZAogfQogCi12b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShOZXR3b3Jr
aW5nQ29udGV4dCosIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZShOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1l
KQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRl
QWxsQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCopCit2b2lkIGRlbGV0ZUFsbENvb2tpZXMoTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJikKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRl
ZAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNl
SGFuZGxlQ3VybC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5k
bGUuaCIKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiTmV0
d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZU1hbmFn
ZXIuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUph
ck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9Db29raWVKYXJNYWMubW0JKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEs
OSArMzEsOCBAQAogI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJDb29raWUu
aCIKICNpbXBvcnQgIkNvb2tpZVN0b3JhZ2UuaCIKLSNpbXBvcnQgIkNvb2tpZVN0b3JhZ2VDRk5l
dC5oIgogI2ltcG9ydCAiS1VSTC5oIgotI2ltcG9ydCAiTmV0d29ya2luZ0NvbnRleHQuaCIKKyNp
bXBvcnQgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUlu
dGVyZmFjZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MiwzMSArNjEsMjkgQEAgc3Rh
dGljIFJldGFpblB0cjxOU0FycmF5PiBmaWx0ZXJDb29raWVzKAogICAgIHJldHVybiBmaWx0ZXJl
ZENvb2tpZXM7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JE
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiwgY29u
c3QgS1VSTCYgdXJsKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAg
IFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4
dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENv
b2tpZVN0b3JhZ2UoKTsKLSAgICBOU0FycmF5ICpjb29raWVzID0gd2tIVFRQQ29va2llc0ZvclVS
TChjb29raWVTdG9yYWdlLmdldCgpLCB1cmwpOworICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hU
VFBDb29raWVzRm9yVVJMKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCB1cmwpOwogICAg
IHJldHVybiBbW05TSFRUUENvb2tpZSByZXF1ZXN0SGVhZGVyRmllbGRzV2l0aENvb2tpZXM6Zmls
dGVyQ29va2llcyhjb29raWVzKS5nZXQoKV0gb2JqZWN0Rm9yS2V5OkAiQ29va2llIl07CiAKICAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAot
U3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQorU3Ry
aW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVy
bCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBSZXRhaW5QdHI8
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBjdXJyZW50
Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdl
KCk7Ci0gICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXNGb3JVUkwoY29va2llU3Rv
cmFnZS5nZXQoKSwgdXJsKTsKKyAgICBOU0FycmF5ICpjb29raWVzID0gd2tIVFRQQ29va2llc0Zv
clVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsKTsKICAgICByZXR1cm4gW1tO
U0hUVFBDb29raWUgcmVxdWVzdEhlYWRlckZpZWxkc1dpdGhDb29raWVzOmNvb2tpZXNdIG9iamVj
dEZvcktleTpAIkNvb2tpZSJdOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKICAg
ICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLXZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikKIHsKICAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKQEAgLTEwMywzMSArMTAwLDI4IEBAIHZvaWQgc2V0Q29v
a2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQKICAgICBSZXRhaW5QdHI8TlNBcnJheT4gZmls
dGVyZWRDb29raWVzID0gZmlsdGVyQ29va2llcyhbTlNIVFRQQ29va2llIGNvb2tpZXNXaXRoUmVz
cG9uc2VIZWFkZXJGaWVsZHM6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDpjb29r
aWVTdHJpbmcgZm9yS2V5OkAiU2V0LUNvb2tpZSJdIGZvclVSTDpjb29raWVVUkxdKTsKICAgICBB
U1NFUlQoW2ZpbHRlcmVkQ29va2llcy5nZXQoKSBjb3VudF0gPD0gMSk7CiAKLSAgICBSZXRhaW5Q
dHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBjdXJy
ZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVTdG9y
YWdlKCk7Ci0gICAgd2tTZXRIVFRQQ29va2llc0ZvclVSTChjb29raWVTdG9yYWdlLmdldCgpLCBm
aWx0ZXJlZENvb2tpZXMuZ2V0KCksIGNvb2tpZVVSTCwgZmlyc3RQYXJ0eSk7CisgICAgd2tTZXRI
VFRQQ29va2llc0ZvclVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgZmlsdGVyZWRD
b29raWVzLmdldCgpLCBjb29raWVVUkwsIGZpcnN0UGFydHkpOwogCiAgICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKIH0KIAotYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJs
Ki8pCitib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCiB7
CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRU
UENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwot
ICAgIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSBjb29raWVBY2NlcHRQb2xpY3kgPSBzdGF0aWNf
Y2FzdDxOU0hUVFBDb29raWVBY2NlcHRQb2xpY3k+KHdrR2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShjb29raWVTdG9yYWdlLmdldCgpKSk7CisgICAgTlNIVFRQQ29va2llQWNjZXB0UG9saWN5IGNv
b2tpZUFjY2VwdFBvbGljeSA9IHN0YXRpY19jYXN0PE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeT4o
d2tHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgp
KSk7CiAgICAgcmV0dXJuIGNvb2tpZUFjY2VwdFBvbGljeSA9PSBOU0hUVFBDb29raWVBY2NlcHRQ
b2xpY3lBbHdheXMgfHwgY29va2llQWNjZXB0UG9saWN5ID09IE5TSFRUUENvb2tpZUFjY2VwdFBv
bGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgZ2V0UmF3Q29va2llcyhOZXR3
b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0
IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIGdldFJhd0Nvb2tp
ZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZp
cnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykK
IHsKICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOwogCi0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3Jh
Z2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZh
dWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hUVFBD
b29raWVzRm9yVVJMKGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHVybCk7CisgICAgTlNBcnJheSAqY29v
a2llcyA9IHdrSFRUUENvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCks
IHVybCk7CiAgICAgTlNVSW50ZWdlciBjb3VudCA9IFtjb29raWVzIGNvdW50XTsKICAgICByYXdD
b29raWVzLnJlc2VydmVDYXBhY2l0eShjb3VudCk7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAw
OyBpIDwgY291bnQ7ICsraSkgewpAQCAtMTQxLDEyICsxMzUsMTIgQEAgYm9vbCBnZXRSYXdDb29r
aWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjbwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIGRl
bGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBj
b29raWVOYW1lKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAogICAgIE5T
VVJMICpjb29raWVVUkwgPSB1cmw7Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2Uo
Y29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOworICAgIFJldGFpblB0cjxD
RkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gc2Vzc2lvbi5jb29raWVTdG9y
YWdlKCk7CiAgICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXNGb3JVUkwoY29va2ll
U3RvcmFnZS5nZXQoKSwgY29va2llVVJMKTsKIAogICAgIE5TU3RyaW5nICpjb29raWVOYW1lU3Ry
aW5nID0gY29va2llTmFtZTsKQEAgLTE2MSwxMiArMTU1LDExIEBAIHZvaWQgZGVsZXRlQ29va2ll
KE5ldHdvcmtpbmdDb250ZXh0KiBjb24KICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwog
fQogCi12b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250
ZXh0LCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKK3ZvaWQgZ2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBIYXNoU2V0PFN0cmlu
Zz4mIGhvc3RuYW1lcykKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAg
ICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRl
eHQgPyBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBD
b29raWVTdG9yYWdlKCk7Ci0gICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXMoY29v
a2llU3RvcmFnZS5nZXQoKSk7CisgICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXMo
c2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCkpOwogICAgIAogICAgIGZvciAoTlNIVFRQQ29v
a2llKiBjb29raWUgaW4gY29va2llcykKICAgICAgICAgaG9zdG5hbWVzLmFkZChbY29va2llIGRv
bWFpbl0pOwpAQCAtMTc0LDExICsxNjcsMTEgQEAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2ll
cyhOZXR3b3JraW5nQwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKLXZvaWQg
ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIGhvc3RuYW1lKQordm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQog
ewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIFJldGFpblB0cjxDRkhU
VFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhU
VFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsK
KyAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IHNl
c3Npb24uY29va2llU3RvcmFnZSgpOwogICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hUVFBDb29r
aWVzKGNvb2tpZVN0b3JhZ2UuZ2V0KCkpOwogICAgIGlmICghY29va2llcykKICAgICAgICAgcmV0
dXJuOwpAQCAtMTkxLDEwICsxODQsOSBAQCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShO
ZXR3b3JraW5nCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAotdm9pZCBkZWxl
dGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQordm9pZCBkZWxldGVBbGxD
b29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKIHsKLSAgICBSZXRh
aW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBj
dXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVT
dG9yYWdlKCk7Ci0gICAgd2tEZWxldGVBbGxIVFRQQ29va2llcyhjb29raWVTdG9yYWdlLmdldCgp
KTsKKyAgICB3a0RlbGV0ZUFsbEhUVFBDb29raWVzKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdl
dCgpKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
Q29va2llU3RvcmFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9Db29raWVTdG9yYWdlTWFjLm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVTdG9yYWdlTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw2IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJDb29raWVTdG9yYWdlLmgiCi0jaW5jbHVkZSAiQ29va2llU3RvcmFnZUNGTmV0Lmgi
CiAKICNpbXBvcnQgIlJlc291cmNlSGFuZGxlLmgiCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCShy
ZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9S
ZXNvdXJjZUhhbmRsZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNiBAQAogI2lt
cG9ydCAiQmxvYlJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBv
cnQgIkNvb2tpZVN0b3JhZ2UuaCIKLSNpbXBvcnQgIkNvb2tpZVN0b3JhZ2VDRk5ldC5oIgogI2lt
cG9ydCAiQ3JlZGVudGlhbFN0b3JhZ2UuaCIKICNpbXBvcnQgIkNhY2hlZFJlc291cmNlTG9hZGVy
LmgiCiAjaW1wb3J0ICJFbXB0eVByb3RvY29sRGVmaW5pdGlvbnMuaCIKQEAgLTQyLDYgKzQxLDcg
QEAKICNpbXBvcnQgIkZyYW1lTG9hZGVyLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0
ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW1wb3J0ICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2lt
cG9ydCAiUGFnZS5oIgogI2ltcG9ydCAiUmVzb3VyY2VFcnJvci5oIgogI2ltcG9ydCAiUmVzb3Vy
Y2VSZXNwb25zZS5oIgpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHN0YXRpYyBib29sIHNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZVAKIHsKICAgICAvLyBJZiBhIFVSTCBhbHJlYWR5IGhhcyBjb29raWVz
LCB0aGVuIHdlJ2xsIHJlbGF4IHRoZSAzcmQgcGFydHkgY29va2llIHBvbGljeSBhbmQgYWNjZXB0
IG5ldyBjb29raWVzLgogCi0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNm
Q29va2llU3RvcmFnZSA9IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpOworICAg
IFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjZkNvb2tpZVN0b3JhZ2UgPSBjb250
ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKTsKICAgICBOU0hUVFBDb29raWVB
Y2NlcHRQb2xpY3kgY29va2llQWNjZXB0UG9saWN5ID0gc3RhdGljX2Nhc3Q8TlNIVFRQQ29va2ll
QWNjZXB0UG9saWN5Pih3a0dldEhUVFBDb29raWVBY2NlcHRQb2xpY3koY2ZDb29raWVTdG9yYWdl
LmdldCgpKSk7CiAKICAgICBpZiAoY29va2llQWNjZXB0UG9saWN5ICE9IE5TSFRUUENvb2tpZUFj
Y2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluKQpAQCAtMjMwLDcgKzIzMCw3IEBA
IGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KE5ldHdvcmtpbmdDb24KICAgICBpZiAoIWNvbnRl
eHQtPmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZC0+bV9zdG9yYWdl
U2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCk7CisgICAgZC0+bV9zdG9yYWdlU2Vz
c2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCk7CiAKICAg
ICBBU1NFUlQoIWQtPm1fcHJveHkpOwogICAgIGQtPm1fcHJveHkuYWRvcHROUyh3a0NyZWF0ZU5T
VVJMQ29ubmVjdGlvbkRlbGVnYXRlUHJveHkoKSk7CkBAIC0zOTYsNyArMzk2LDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hybwogCiAgICAgUmVmUHRyPFJlc291cmNl
SGFuZGxlPiBoYW5kbGUgPSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5kbGUocmVxdWVzdCwgY2xp
ZW50LmdldCgpLCBmYWxzZSAvKmRlZmVyc0xvYWRpbmcqLywgdHJ1ZSAvKnNob3VsZENvbnRlbnRT
bmlmZiovKSk7CiAKLSAgICBoYW5kbGUtPmQtPm1fc3RvcmFnZVNlc3Npb24gPSBjb250ZXh0LT5z
dG9yYWdlU2Vzc2lvbigpOworICAgIGhhbmRsZS0+ZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRl
eHQtPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCk7CiAKICAgICBpZiAoY29udGV4
dCAmJiBoYW5kbGUtPmQtPm1fc2NoZWR1bGVkRmFpbHVyZVR5cGUgIT0gTm9GYWlsdXJlKSB7CiAg
ICAgICAgIGVycm9yID0gY29udGV4dC0+YmxvY2tlZEVycm9yKHJlcXVlc3QpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Db29raWVKYXJRdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Db29raWVKYXJRdC5jcHAJ
KHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQv
Q29va2llSmFyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxNSArNDYsMTUgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdGF0aWMgU2hhcmVkQ29va2llSmFyUXQqIHNfc2hhcmVkQ29va2ll
SmFyUXQgPSAwOwogCi12b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgdmFsdWUpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHZhbHVlKQogewotICAgIFFOZXR3b3JrQ29va2llSmFyKiBqYXIgPSBjb250ZXh0
ID8gY29udGV4dC0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBTaGFyZWRD
b29raWVKYXJRdDo6c2hhcmVkKCk7CisgICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IHNlc3Np
b24uY29udGV4dCgpID8gc2Vzc2lvbi5jb250ZXh0KCktPm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCkt
PmNvb2tpZUphcigpIDogU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOwogICAgIGlmICghamFy
KQogICAgICAgICByZXR1cm47CiAKICAgICBRVXJsIHVybEZvckNvb2tpZXModXJsKTsKICAgICBR
VXJsIGZpcnN0UGFydHlVcmwoZmlyc3RQYXJ0eSk7Ci0gICAgaWYgKCF0aGlyZFBhcnR5Q29va2ll
UG9saWN5UGVybWl0cyhjb250ZXh0LCB1cmxGb3JDb29raWVzLCBmaXJzdFBhcnR5VXJsKSkKKyAg
ICBpZiAoIXRoaXJkUGFydHlDb29raWVQb2xpY3lQZXJtaXRzKHNlc3Npb24uY29udGV4dCgpLCB1
cmxGb3JDb29raWVzLCBmaXJzdFBhcnR5VXJsKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUUxp
c3Q8UU5ldHdvcmtDb29raWU+IGNvb2tpZXMgPSBRTmV0d29ya0Nvb2tpZTo6cGFyc2VDb29raWVz
KFFTdHJpbmcodmFsdWUpLnRvTGF0aW4xKCkpOwpAQCAtNjksMTUgKzY5LDE1IEBAIHZvaWQgc2V0
Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQKICAgICBqYXItPnNldENvb2tpZXNGcm9t
VXJsKGNvb2tpZXMsIHVybEZvckNvb2tpZXMpOwogfQogCi1TdHJpbmcgY29va2llc0ZvckRPTShO
ZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAg
UU5ldHdvcmtDb29raWVKYXIqIGphciA9IGNvbnRleHQgPyBjb250ZXh0LT5uZXR3b3JrQWNjZXNz
TWFuYWdlcigpLT5jb29raWVKYXIoKSA6IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKKyAg
ICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gc2Vzc2lvbi5jb250ZXh0KCkgPyBzZXNzaW9uLmNv
bnRleHQoKS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBTaGFyZWRDb29r
aWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgaWYgKCFqYXIpCiAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKIAogICAgIFFVcmwgdXJsRm9yQ29va2llcyh1cmwpOwogICAgIFFVcmwgZmlyc3RQYXJ0eVVy
bChmaXJzdFBhcnR5KTsKLSAgICBpZiAoIXRoaXJkUGFydHlDb29raWVQb2xpY3lQZXJtaXRzKGNv
bnRleHQsIHVybEZvckNvb2tpZXMsIGZpcnN0UGFydHlVcmwpKQorICAgIGlmICghdGhpcmRQYXJ0
eUNvb2tpZVBvbGljeVBlcm1pdHMoc2Vzc2lvbi5jb250ZXh0KCksIHVybEZvckNvb2tpZXMsIGZp
cnN0UGFydHlVcmwpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBRTGlzdDxRTmV0
d29ya0Nvb2tpZT4gY29va2llcyA9IGphci0+Y29va2llc0ZvclVybCh1cmxGb3JDb29raWVzKTsK
QEAgLTk0LDkgKzk0LDkgQEAgU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQq
IAogICAgIHJldHVybiByZXN1bHRDb29raWVzLmpvaW4oUUxhdGluMVN0cmluZygiOyAiKSk7CiB9
CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkK
K1N0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwp
CiB7Ci0gICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IGNvbnRleHQgPyBjb250ZXh0LT5uZXR3
b3JrQWNjZXNzTWFuYWdlcigpLT5jb29raWVKYXIoKSA6IFNoYXJlZENvb2tpZUphclF0OjpzaGFy
ZWQoKTsKKyAgICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gc2Vzc2lvbi5jb250ZXh0KCkgPyBz
ZXNzaW9uLmNvbnRleHQoKS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBT
aGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgaWYgKCFqYXIpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKIApAQCAtMTExLDQzICsxMTEsNDMgQEAgU3RyaW5nIGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKE5ldAogICAgIHJldHVybiByZXN1bHRDb29raWVzLmpvaW4oUUxhdGlu
MVN0cmluZygiOyAiKSk7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVy
bCovKQorYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQogewotICAg
IFFOZXR3b3JrQ29va2llSmFyKiBqYXIgPSBjb250ZXh0ID8gY29udGV4dC0+bmV0d29ya0FjY2Vz
c01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7Cisg
ICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IHNlc3Npb24uY29udGV4dCgpID8gc2Vzc2lvbi5j
b250ZXh0KCktPm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCktPmNvb2tpZUphcigpIDogU2hhcmVkQ29v
a2llSmFyUXQ6OnNoYXJlZCgpOwogICAgIHJldHVybiAhIWphcjsKIH0KIAotYm9vbCBnZXRSYXdD
b29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFy
dHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiti
b29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLywgVmVjdG9yPENvb2tpZT4m
IHJhd0Nvb2tpZXMpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKICAgICBy
YXdDb29raWVzLmNsZWFyKCk7CiAgICAgcmV0dXJuIGZhbHNlOyAvLyByZXR1cm4gdHJ1ZSB3aGVu
IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0Kiwg
Y29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCit2b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKIHsKICAgICAvLyBGSVhN
RTogTm90IHlldCBpbXBsZW1lbnRlZAogfQogCi12b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVz
KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykK
K3ZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGNv
bnRleHQsICFjb250ZXh0KTsgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBmb3IgY29va2llIGphcnMg
b3RoZXIgdGhhbiB0aGUgc2hhcmVkIG9uZS4KKyAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb24sICFz
ZXNzaW9uLmNvbnRleHQoKSk7IC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9yIGNvb2tpZSBqYXJz
IG90aGVyIHRoYW4gdGhlIHNoYXJlZCBvbmUuCiAgICAgU2hhcmVkQ29va2llSmFyUXQqIGphciA9
IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKICAgICBpZiAoamFyKQogICAgICAgICBqYXIt
PmdldEhvc3RuYW1lc1dpdGhDb29raWVzKGhvc3RuYW1lcyk7CiB9CiAKLXZvaWQgZGVsZXRlQ29v
a2llc0Zvckhvc3RuYW1lKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKQordm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewotICAgIEFTU0VSVF9V
TlVTRUQoY29udGV4dCwgIWNvbnRleHQpOyAvLyBOb3QgeWV0IGltcGxlbWVudGVkIGZvciBjb29r
aWUgamFycyBvdGhlciB0aGFuIHRoZSBzaGFyZWQgb25lLgorICAgIEFTU0VSVF9VTlVTRUQoc2Vz
c2lvbiwgIXNlc3Npb24uY29udGV4dCgpKTsgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBmb3IgY29v
a2llIGphcnMgb3RoZXIgdGhhbiB0aGUgc2hhcmVkIG9uZS4KICAgICBTaGFyZWRDb29raWVKYXJR
dCogamFyID0gU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOwogICAgIGlmIChqYXIpCiAgICAg
ICAgIGphci0+ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGhvc3RuYW1lKTsKIH0KIAotdm9pZCBk
ZWxldGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQordm9pZCBkZWxldGVB
bGxDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKIHsKLSAgICBBU1NFUlRf
VU5VU0VEKGNvbnRleHQsICFjb250ZXh0KTsgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBmb3IgY29v
a2llIGphcnMgb3RoZXIgdGhhbiB0aGUgc2hhcmVkIG9uZS4KKyAgICBBU1NFUlRfVU5VU0VEKHNl
c3Npb24sICFzZXNzaW9uLmNvbnRleHQoKSk7IC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9yIGNv
b2tpZSBqYXJzIG90aGVyIHRoYW4gdGhlIHNoYXJlZCBvbmUuCiAgICAgU2hhcmVkQ29va2llSmFy
UXQqIGphciA9IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKICAgICBpZiAoamFyKQogICAg
ICAgICBqYXItPmRlbGV0ZUFsbENvb2tpZXMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAJKHJldmlzaW9u
IDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVK
YXJTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsMTEgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdGF0aWMgU291cENvb2tpZUphciogY29va2llSmFyRm9yQ29udGV4dChO
ZXR3b3JraW5nQ29udGV4dCogY29udGV4dCkKK3N0YXRpYyBTb3VwQ29va2llSmFyKiBjb29raWVK
YXJGb3JTZXNzaW9uKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKIHsKLSAgICByZXR1
cm4gU09VUF9DT09LSUVfSkFSKHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShjb250ZXh0LT5zb3Vw
U2Vzc2lvbigpLCBTT1VQX1RZUEVfQ09PS0lFX0pBUikpOworICAgIGlmICghc2Vzc2lvbi5jb250
ZXh0KCkpCisgICAgICAgIHJldHVybiBzb3VwQ29va2llSmFyKCk7CisgICAgcmV0dXJuIFNPVVBf
Q09PS0lFX0pBUihzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUoc2Vzc2lvbi5jb250ZXh0KCktPnNv
dXBTZXNzaW9uKCksIFNPVVBfVFlQRV9DT09LSUVfSkFSKSk7CiB9CiAKIHN0YXRpYyBHUmVmUHRy
PFNvdXBDb29raWVKYXI+JiBkZWZhdWx0Q29va2llSmFyKCkKQEAgLTczLDkgKzc1LDkgQEAgc3Rh
dGljIGlubGluZSBib29sIGh0dHBPbmx5Q29va2llRXhpc3RzKAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZh
bHVlKQordm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB2YWx1ZSkKIHsKLSAgICBTb3VwQ29va2llSmFyKiBqYXIgPSBjb250ZXh0ID8gY29va2llSmFy
Rm9yQ29udGV4dChjb250ZXh0KSA6IHNvdXBDb29raWVKYXIoKTsKKyAgICBTb3VwQ29va2llSmFy
KiBqYXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Npb24pOwogICAgIGlmICghamFyKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTEwNyw5ICsxMDksOSBAQCB2b2lkIHNldENvb2tpZXNGcm9tRE9N
KE5ldHdvcmtpbmdDb250ZXh0CiAgICAgc291cF9jb29raWVzX2ZyZWUoZXhpc3RpbmdDb29raWVz
KTsKIH0KIAotc3RhdGljIFN0cmluZyBjb29raWVzRm9yQ29udGV4dChOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBib29sIGZvckhUVFBIZWFkZXIpCitzdGF0aWMg
U3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgS1VSTCYgdXJsLCBib29sIGZvckhUVFBIZWFkZXIpCiB7Ci0gICAgU291cENvb2tpZUph
ciogamFyID0gY29udGV4dCA/IGNvb2tpZUphckZvckNvbnRleHQoY29udGV4dCkgOiBzb3VwQ29v
a2llSmFyKCk7CisgICAgU291cENvb2tpZUphciogamFyID0gY29va2llSmFyRm9yU2Vzc2lvbihz
ZXNzaW9uKTsKICAgICBpZiAoIWphcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCkBAIC0x
MTgsMjUgKzEyMCwyNSBAQCBzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JDb250ZXh0KE5ldHdvcmtp
CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoY29va2llcy5nZXQoKSk7CiB9CiAKLVN0cmlu
ZyBjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiwg
Y29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVy
biBjb29raWVzRm9yQ29udGV4dChjb250ZXh0LCB1cmwsIGZhbHNlKTsKKyAgICByZXR1cm4gY29v
a2llc0ZvclNlc3Npb24oc2Vzc2lvbiwgdXJsLCBmYWxzZSk7CiB9CiAKLVN0cmluZyBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3Qg
S1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIGNv
b2tpZXNGb3JDb250ZXh0KGNvbnRleHQsIHVybCwgdHJ1ZSk7CisgICAgcmV0dXJuIGNvb2tpZXNG
b3JTZXNzaW9uKHNlc3Npb24sIHVybCwgdHJ1ZSk7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQo
TmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBj
b25zdCBLVVJMJiAvKnVybCovKQorYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAv
KnVybCovKQogewotICAgIHJldHVybiAhIWNvb2tpZUphckZvckNvbnRleHQoY29udGV4dCk7Cisg
ICAgcmV0dXJuICEhY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKIH0KIAotYm9vbCBnZXRS
YXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0
UGFydHkqLywgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jv
b2wgZ2V0UmF3Q29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdD
b29raWVzKQogewogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKLSAgICBTb3VwQ29va2llSmFyKiBq
YXIgPSBjb250ZXh0ID8gY29va2llSmFyRm9yQ29udGV4dChjb250ZXh0KSA6IHNvdXBDb29raWVK
YXIoKTsKKyAgICBTb3VwQ29va2llSmFyKiBqYXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Np
b24pOwogICAgIGlmICghamFyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE1Nyw5ICsx
NTksOSBAQCBib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3ZvaWQgZGVsZXRlQ29v
a2llKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgU291cENvb2tpZUphciogamFyID0gY29udGV4dCA/IGNv
b2tpZUphckZvckNvbnRleHQoY29udGV4dCkgOiBzb3VwQ29va2llSmFyKCk7CisgICAgU291cENv
b2tpZUphciogamFyID0gY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKICAgICBpZiAoIWph
cikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNzgsOSArMTgwLDkgQEAgdm9pZCBkZWxldGVDb29r
aWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbgogICAgIH0KIH0KIAotdm9pZCBnZXRIb3N0bmFtZXNX
aXRoQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgSGFzaFNldDxTdHJpbmc+JiBo
b3N0bmFtZXMpCit2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7Ci0gICAgU291cENv
b2tpZUphciogY29va2llSmFyID0gY29udGV4dCA/IGNvb2tpZUphckZvckNvbnRleHQoY29udGV4
dCkgOiBzb3VwQ29va2llSmFyKCk7CisgICAgU291cENvb2tpZUphciogY29va2llSmFyID0gY29v
a2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKICAgICBHT3duUHRyPEdTTGlzdD4gY29va2llcyhz
b3VwX2Nvb2tpZV9qYXJfYWxsX2Nvb2tpZXMoY29va2llSmFyKSk7CiAgICAgZm9yIChHU0xpc3Qq
IGl0ZW0gPSBjb29raWVzLmdldCgpOyBpdGVtOyBpdGVtID0gZ19zbGlzdF9uZXh0KGl0ZW0pKSB7
CiAgICAgICAgIEdPd25QdHI8U291cENvb2tpZT4gY29va2llKHN0YXRpY19jYXN0PFNvdXBDb29r
aWUqPihpdGVtLT5kYXRhKSk7CkBAIC0xOTAsMTAgKzE5MiwxMCBAQCB2b2lkIGdldEhvc3RuYW1l
c1dpdGhDb29raWVzKE5ldHdvcmtpbmdDCiAgICAgfQogfQogCi12b2lkIGRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBob3N0
bmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKICAgICBDU3RyaW5nIGhvc3RO
YW1lU3RyaW5nID0gaG9zdG5hbWUudXRmOCgpOwotICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUph
ciA9IGNvbnRleHQgPyBjb29raWVKYXJGb3JDb250ZXh0KGNvbnRleHQpIDogc291cENvb2tpZUph
cigpOworICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphciA9IGNvb2tpZUphckZvclNlc3Npb24o
c2Vzc2lvbik7CiAgICAgR093blB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29raWVfamFyX2Fs
bF9jb29raWVzKGNvb2tpZUphcikpOwogICAgIGZvciAoR1NMaXN0KiBpdGVtID0gY29va2llcy5n
ZXQoKTsgaXRlbTsgaXRlbSA9IGdfc2xpc3RfbmV4dChpdGVtKSkgewogICAgICAgICBTb3VwQ29v
a2llKiBjb29raWUgPSBzdGF0aWNfY2FzdDxTb3VwQ29va2llKj4oaXRlbS0+ZGF0YSk7CkBAIC0y
MDMsOSArMjA1LDkgQEAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZwog
ICAgIH0KIH0KIAotdm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250
ZXh0KQordm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
bikKIHsKLSAgICBTb3VwQ29va2llSmFyKiBjb29raWVKYXIgPSBjb250ZXh0ID8gY29va2llSmFy
Rm9yQ29udGV4dChjb250ZXh0KSA6IHNvdXBDb29raWVKYXIoKTsKKyAgICBTb3VwQ29va2llSmFy
KiBjb29raWVKYXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Npb24pOwogICAgIEdPd25QdHI8
R1NMaXN0PiBjb29raWVzKHNvdXBfY29va2llX2phcl9hbGxfY29va2llcyhjb29raWVKYXIpKTsK
ICAgICBmb3IgKEdTTGlzdCogaXRlbSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3Ns
aXN0X25leHQoaXRlbSkpIHsKICAgICAgICAgU291cENvb2tpZSogY29va2llID0gc3RhdGljX2Nh
c3Q8U291cENvb2tpZSo+KGl0ZW0tPmRhdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAJ
KHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBA
CiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQu
aCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUVycm9yLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3dpbi9Db29raWVKYXJXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHAJKHJldmlzaW9uIDEzODQwNykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNvb2tpZS5oIgogI2lu
Y2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgPFdpbmlu
ZXQuaD4KQEAgLTM1LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIHNl
dENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYsIGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyBGSVhNRTogRGVhbCB3aXRoIGZpcnN0UGFydHkgYXJn
dW1lbnQuCiAgICAgU3RyaW5nIHN0ciA9IHVybC5zdHJpbmcoKTsKQEAgLTQzLDcgKzQ0LDcgQEAg
dm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dAogICAgIEludGVybmV0U2V0
Q29va2llKHN0ci5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCAwLCB2YWwuY2hhcmFj
dGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSk7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKE5l
dHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBj
b29raWVzRm9yRE9NKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBL
VVJMJiB1cmwpCiB7CiAgICAgLy8gRklYTUU6IERlYWwgd2l0aCBmaXJzdFBhcnR5IGFyZ3VtZW50
LgogCkBAIC02NCw0MCArNjUsNDAgQEAgU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2luZ0Nv
bnRleHQqLAogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KGJ1ZmZlcik7CiB9CiAKLVN0cmluZyBj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewogICAgIC8vIEZJWE1FOiBp
bmNsdWRlIEh0dHBPbmx5IGNvb2tpZQotICAgIHJldHVybiBjb29raWVzRm9yRE9NKGNvbnRleHQs
IGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JET00oc2Vzc2lvbi5jb250
ZXh0KCksIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBL
VVJMJiAvKnVybCovKQorYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCov
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJM
JiAvKnVybCovLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2ll
cyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0
eSovLCBjb25zdCBLVVJMJiAvKnVybCovLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsK
ICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogICAgIHJhd0Nvb2tpZXMuY2xlYXIo
KTsKICAgICByZXR1cm4gZmFsc2U7IC8vIHJldHVybiB0cnVlIHdoZW4gaW1wbGVtZW50ZWQKIH0K
IAotdm9pZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiwgY29u
c3QgU3RyaW5nJikKK3ZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxl
bWVudGVkCiB9CiAKLXZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya2luZ0NvbnRl
eHQqLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKK3ZvaWQgZ2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMp
CiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxldGVD
b29raWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBTdHJpbmcmIGhvc3Ru
YW1lKQordm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBs
ZW1lbnRlZAogfQogCi12b2lkIGRlbGV0ZUFsbENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqKQor
dm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpCiB7CiAgICAgLy8g
RklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvd2luL1Jlc291cmNlSGFuZGxlV2luLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUhhbmRsZVdpbi5jcHAJKHJl
dmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jl
c291cmNlSGFuZGxlV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgIkRhdGFVUkwuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
NCwxNiArMTQ0LDkgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Uwog
ICAgIG1fc2VyaWFsTG9hZGluZ0VuYWJsZWQgPSBlbmFibGVkOwogfQogCi1zdGF0aWMgUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQqIG5ldHdvcmtpbmdDb250ZXh0KGJvb2wgcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCkKK3N0YXRpYyBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKGJv
b2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKIHsKLSAgICAvLyBUaGlzIG5ldHdvcmtpbmcgY29u
dGV4dCBpcyBvbmx5IG5lZWRlZCB0byBnZXQgc3RvcmFnZSBzZXNzaW9uIGZyb20uCi0gICAgaWYg
KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKLSAgICAgICAgc3RhdGljIFJlbW90ZU5ldHdvcmtp
bmdDb250ZXh0KiBjb250ZXh0ID0gUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShmYWxz
ZSwgZmFsc2UsIHRydWUpLmxlYWtSZWYoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQ7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgc3RhdGljIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0
ID0gUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShmYWxzZSwgZmFsc2UsIGZhbHNlKS5s
ZWFrUmVmKCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0OwotICAgIH0KKyAgICByZXR1cm4gcHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCA/IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpwcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCkgOiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vz
c2lvbigpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERv
d25sb2FkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgdWludDY0X3QgZG93bmxvYWRJRCwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpAQCAtMTY0LDMyICsxNTcsMzIgQEAgdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcgogCiB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcmIHJl
c3VsdCkKIHsKLSAgICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVzRm9yRE9NKG5ldHdvcmtpbmdD
b250ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJl
c3VsdCA9IFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGNvb2tpZVN0cmluZykKIHsKLSAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShuZXR3
b3JraW5nQ29udGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsLCBj
b29raWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHN0b3JhZ2VTZXNz
aW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmlu
Zyk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFi
bGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsLCBib29sJiByZXN1bHQpCiB7Ci0gICAgcmVzdWx0ID0gV2ViQ29yZTo6
Y29va2llc0VuYWJsZWQobmV0d29ya2luZ0NvbnRleHQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCks
IGZpcnN0UGFydHksIHVybCk7CisgICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQo
c3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCk7
CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcmIHJlc3VsdCkKIHsKLSAgICByZXN1
bHQgPSBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShuZXR3b3JraW5nQ29u
dGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXN1
bHQgPSBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzdG9yYWdlU2Vzc2lv
bihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAogdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyhib29sIHByaXZhdGVC
cm93c2luZ0VuYWJsZWQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwg
VmVjdG9yPENvb2tpZT4mIHJlc3VsdCkKIHsKLSAgICBXZWJDb3JlOjpnZXRSYXdDb29raWVzKG5l
dHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmws
IHJlc3VsdCk7CisgICAgV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzdG9yYWdlU2Vzc2lvbihwcml2
YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsLCByZXN1bHQpOwogfQogCiB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUoYm9vbCBwcml2YXRl
QnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFt
ZSkKIHsKLSAgICBXZWJDb3JlOjpkZWxldGVDb29raWUobmV0d29ya2luZ0NvbnRleHQocHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCksIHVybCwgY29va2llTmFtZSk7CisgICAgV2ViQ29yZTo6ZGVsZXRl
Q29va2llKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCB1cmwsIGNvb2tp
ZU5hbWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01haW5NYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFpbk1h
Yy5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
bWFjL05ldHdvcmtQcm9jZXNzTWFpbk1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEs
OSBAQAogI2ltcG9ydCAiQ29tbWFuZExpbmUuaCIKICNpbXBvcnQgIkVudmlyb25tZW50VXRpbGl0
aWVzLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgorI2ltcG9ydCAiV2ViU3lzdGVtSW50
ZXJmYWNlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1J1bkxvb3AuaD4KICNpbXBvcnQgPFdlYktpdFN5
c3RlbUludGVyZmFjZS5oPgotI2ltcG9ydCA8V2ViU3lzdGVtSW50ZXJmYWNlLmg+CiAjaW1wb3J0
IDxtYWNoL21hY2hfZXJyb3IuaD4KICNpbXBvcnQgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGlu
Zy5oPgogI2ltcG9ydCA8c2VydmVycy9ib290c3RyYXAuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29u
dGV4dC5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiAr
NDIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbigpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7
CiAKKyAgICBzdGF0aWMgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBwcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCk7IC8vIENhbiBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBzZXNzaW9uIGV4
aXN0cy4KKwogcHJpdmF0ZToKICAgICBSZW1vdGVOZXR3b3JraW5nQ29udGV4dChib29sIG5lZWRz
U2l0ZVNwZWNpZmljUXVpcmtzLCBib29sIGxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQs
IGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CiAKQEAgLTQ5LDggKzUxLDcgQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgYm9vbCBuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBsb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVk
KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGluUHJpdmF0ZUJyb3dzaW5nTW9k
ZSgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBz
dG9yYWdlU2Vzc2lvbigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IE9WRVJSSURFOwogICAg
IHZpcnR1YWwgTlNPcGVyYXRpb25RdWV1ZSAqc2NoZWR1bGVkT3BlcmF0aW9uUXVldWUoKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0IE9WRVJSSURFOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFj
L1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0JKHdv
cmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgcHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb247CitzdGF0aWMgT3duUHRyPE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbj4mIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkKK3sKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoT3duUHRyPE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbj4sIHNlc3Npb24sICgpKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKK30KIAog
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0KGJvb2wgbmVl
ZHNTaXRlU3BlY2lmaWNRdWlya3MsIGJvb2wgbG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxl
ZCwgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogICAgIDogbV9uZWVkc1NpdGVTcGVjaWZp
Y1F1aXJrcyhuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcykKQEAgLTYzLDE5ICs2OCwyMCBAQCBib29s
IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpsb2NhbEZpbGVDCiAgICAgcmV0dXJuIG1fbG9jYWxG
aWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZDsKIH0KIAotYm9vbCBSZW1vdGVOZXR3b3JraW5nQ29u
dGV4dDo6aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QKK05ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9wcml2YXRlQnJvd3NpbmdFbmFibGVkOworICAgIGlmIChtX3ByaXZhdGVCcm93
c2luZ0VuYWJsZWQpIHsKKyAgICAgICAgQVNTRVJUKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNz
aW9uKCkpOworICAgICAgICByZXR1cm4gKnByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCk7
CisgICAgfQorCisgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3Jh
Z2VTZXNzaW9uKCk7CiB9CiAKLUNGVVJMU3RvcmFnZVNlc3Npb25SZWYgUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewotICAg
IGlmIChpblByaXZhdGVCcm93c2luZ01vZGUoKSkgewotICAgICAgICBBU1NFUlQocHJpdmF0ZUJy
b3dzaW5nU3RvcmFnZVNlc3Npb24pOwotICAgICAgICByZXR1cm4gcHJpdmF0ZUJyb3dzaW5nU3Rv
cmFnZVNlc3Npb247Ci0gICAgfQotICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IFJldHVy
biBhIGRlZmF1bHQgc2Vzc2lvbiB0aGF0J3MgdXNlZCBmb3IgdGVzdGluZy4KLSAgICByZXR1cm4g
MDsKKyAgICBBU1NFUlQocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSk7CisgICAgcmV0
dXJuICpwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpOwogfQogCiBOU09wZXJhdGlvblF1
ZXVlICpSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6c2NoZWR1bGVkT3BlcmF0aW9uUXVldWUoKSBj
b25zdApAQCAtMTA4LDIzICsxMTQsMTggQEAgdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6
c2V0UHJpdmF0ZQogCiB2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlm
IChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbikKKyAgICBpZiAocHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFwcml2YXRl
QnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkuaXNOdWxsKCkpOwogICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVudGlmaWVyID0gU3RyaW5nKHByaXZhdGVCcm93c2lu
Z1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKSArICIuUHJpdmF0ZUJyb3dzaW5nIikuY3Jl
YXRlQ0ZTdHJpbmcoKTsKIAotICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uID0gV0tD
cmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpKTsKKyAgICBwcml2
YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVh
dGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRl
bnRpZmllckJhc2UoKSk7CiB9CiAKIHZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ry
b3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKLSAgICBpZiAoIXByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDRlJlbGVhc2UocHJpdmF0ZUJy
b3dzaW5nU3RvcmFnZVNlc3Npb24pOwotICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9u
ID0gMDsKKyAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpID0gbnVsbHB0cjsKIH0K
IAogfQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xz
L21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1h
bmFnZXJNYWMubW0JKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9O
ZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIKICNpbXBvcnQgPFdlYkNvcmUvS1VSTC5o
PgorI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTA0Myw3ICsx
MDQzLDYgQEAKIAkJRTFCNzg0NzMxNjNGMjUzRTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtpbmdD
b250ZXh0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTFCNzg0NzIxNjNGMjUzRTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tICov
OyB9OwogCQlFMUNDMUI5MDEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUNDMUI4RTEyRDdFQURGMDA2
MjU4MzggLyogUHJpbnRJbmZvLmggKi87IH07CiAJCUUxQ0MxQjkxMTJEN0VBREYwMDYyNTgzOCAv
KiBQcmludEluZm9NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMUNDMUI4RjEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvTWFjLm1tICovOyB9
OwotCQlFMUQyMjk3MTE2NTJEQzUyMDBCQUE0QkQgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFEMjI5
NkUxNjUyREI5QzAwQkFBNEJEIC8qIFdlYlBsYXRmb3JtU3RyYXRlZ2llc01hYy5tbSAqLzsgfTsK
IAkJRTFFREZEQTYxNjI4ODY4RTAwMzlFQ0RBIC8qIE1haW5NYWNQcm9jZXNzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNkZBMzEwMTFFMzkyMUUw
MERCMTM3MSAvKiBNYWluTWFjUHJvY2Vzcy5jcHAgKi87IH07CiAJCUUxRURGREE3MTYyODg2OTYw
MDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRURGRDlCMTYyODdEMEIwMDM5RUNEQSAv
KiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbSAqLzsgfTsKIAkJRTFFREZEQTgxNjI4ODY5
OTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVERkRBMjE2Mjg4MzhDMDAzOUVDREEgLyog
U2hhcmVkV29ya2VyUHJvY2Vzc01hYy5tbSAqLzsgfTsKQEAgLTIzNDQsNyArMjM0Myw2IEBACiAJ
CUUxQjc4NDcyMTYzRjI1M0UwMDA3QjY5MiAvKiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZU5ldHdvcmtpbmdD
b250ZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUNDMUI4RTEyRDdFQURG
MDA2MjU4MzggLyogUHJpbnRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFByaW50SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUNDMUI4RjEyRDdF
QURGMDA2MjU4MzggLyogUHJpbnRJbmZvTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gUHJpbnRJbmZvTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlFMUQyMjk2RTE2NTJEQjlDMDBCQUE0QkQgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUVERkQ5ODE2
Mjg3QkQxMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01haW4uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzc01haW4uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFFREZEOUIxNjI4N0QwQjAwMzlFQ0RBIC8qIFNoYXJlZFdv
cmtlclByb2Nlc3NNYWluTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzc01haW5NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUxRURGRDlEMTYyODdGMTkwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb2Nlc3Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM3MzMsNyArMzczMSw2IEBACiAJCQkJ
QkMxMTFBREYxMTJGNUJDMjAwMzM3QkFCIC8qIFdlYkVycm9yc01hYy5tbSAqLywKIAkJCQk5Mzkx
RjI4MzEyMUIzOEY1MDBFQkY3RTggLyogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oICovLAog
CQkJCTkzOTFGMjg0MTIxQjM4RjUwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
Lm1tICovLAotCQkJCUUxRDIyOTZFMTY1MkRCOUMwMEJBQTRCRCAvKiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXNNYWMubW0gKi8sCiAJCQkJQkNDNDNBQzYxMjdCOTlERTAwMzE3RjE2IC8qIFdlYlBvcHVw
TWVudU1hYy5tbSAqLywKIAkJCQlCQ0M1NzE1OTExNUFEQUVGMDAxQ0NBRjkgLyogV2ViU3lzdGVt
SW50ZXJmYWNlLmggKi8sCiAJCQkJQkNDNTcxNUExMTVBREFFRjAwMUNDQUY5IC8qIFdlYlN5c3Rl
bUludGVyZmFjZS5tbSAqLywKQEAgLTU5NzgsNyArNTk3NSw2IEBACiAJCQkJNTEyMTc0NjAxNjRD
MjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxMjE3NDY0MTY0QzIxMzcwMDM3QTVDMSAvKiBXZWJSZXNvdXJjZUJ1ZmZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQUYxQUM2QjE2NTE3NTlFMDBDMTdEN0YgLyogUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24ubW0gaW4gU291cmNlcyAqLywKLQkJCQlFMUQyMjk3MTE2NTJEQzUyMDBCQUE0
QkQgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFB
M0Q3NUIxNjUxQjQ0RjAwODcxM0QwIC8qIFJlbW90ZUxheWVyVHJlZUhvc3QubW0gaW4gU291cmNl
cyAqLywKIAkJCQkxQUEzRDc2MTE2NTFCN0QzMDA4NzEzRDAgLyogUmVtb3RlTGF5ZXJUcmVlSG9z
dE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUZEMThCNTE2NTFGQkFE
MDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAxMzg0
MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTWVtb3J5
U3RhdGlzdGljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdp
blByZWZsaWdodFJlc3VsdENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Gb250Q2FjaGUuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAJKHJldmlzaW9uIDEz
ODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIldlYkNv
b2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29va2llU3RvcmFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvb2tpZUphci5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTU1LDcgKzU2LDcgQEAgdm9pZCBXZWJD
b29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNXaXRoQwogewogICAgIEhhc2hTZXQ8U3RyaW5nPiBo
b3N0bmFtZXM7CiAKLSAgICBXZWJDb3JlOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcygwLCBob3N0
bmFtZXMpOworICAgIFdlYkNvcmU6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIGhvc3RuYW1lcyk7CiAKICAgICBW
ZWN0b3I8U3RyaW5nPiBob3N0bmFtZUxpc3Q7CiAgICAgY29weVRvVmVjdG9yKGhvc3RuYW1lcywg
aG9zdG5hbWVMaXN0KTsKQEAgLTY1LDEyICs2NiwxMiBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6
OmdldEhvc3RuYW1lc1dpdGhDCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2ll
c0Zvckhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7Ci0gICAgV2ViQ29yZTo6ZGVs
ZXRlQ29va2llc0Zvckhvc3RuYW1lKDAsIGhvc3RuYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxldGVD
b29raWVzRm9ySG9zdG5hbWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKSwgaG9zdG5hbWUpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFs
bENvb2tpZXMoKQogewotICAgIFdlYkNvcmU6OmRlbGV0ZUFsbENvb2tpZXMoMCk7CisgICAgV2Vi
Q29yZTo6ZGVsZXRlQWxsQ29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9y
YWdlU2Vzc2lvbigpKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzdGFydE9ic2Vydmlu
Z0Nvb2tpZUNoYW5nZXMoKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9h
ZHMvbWFjL0Rvd25sb2FkTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQkocmV2aXNpb24gMTM4NDA3KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBv
cnQgIkRvd25sb2FkLmgiCiAKKyNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25NYWMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUu
aD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNp
bmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgor
I2luY2x1ZGUgIldlYlN5c3RlbUludGVyZmFjZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0FQSUNhc3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGUuaD4KQEAgLTMwMyw3ICszMDQsOCBAQCB2b2lkIElu
amVjdGVkQnVuZGxlOjpzd2l0Y2hOZXR3b3JrTG9hZGVyCiB7CiAjaWYgKFBMQVRGT1JNKE1BQykg
fHwgVVNFKENGTkVUV09SSykpICYmICFQTEFURk9STShXSU4pCiAgICAgLy8gRklYTUUgKE5ldHdv
cmtQcm9jZXNzKTogRG8gdGhpcyBpbiBuZXR3b3JrIHByb2Nlc3MsIHRvby4KLSAgICBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0Ojpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7CisgICAgSW5p
dFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UoKTsKKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3
aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5j
cHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9LVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2FkZXJTdHJhdGVneS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvb2tpZUphci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUGxhdGZvcm1QYXN0ZWJvYXJkLmg+CkBAIC0xMTMsOTAgKzExNCw4MyBAQCB2
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bm90aWZ5Q29va2llCiAgICAgV2ViQ29va2llTWFu
YWdlcjo6c2hhcmVkKCkuZGlzcGF0Y2hDb29raWVzRGlkQ2hhbmdlKCk7CiB9CiAKLSNpZiBQTEFU
Rk9STShXSU4pICYmIFVTRShDRk5FVFdPUkspCi1SZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFn
ZVJlZj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWZhdWx0Q29va2llU3RvcmFnZSgpCi17Ci0g
ICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYKLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKICNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nl
c3MoKSkgewogICAgICAgICBTdHJpbmcgcmVzdWx0OwotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6
OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NKGNvbnRl
eHQgJiYgY29udGV4dC0+aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCksIGZpcnN0UGFydHksIHVybCks
IE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTTo6
UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0
d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00oc2Vzc2lvbi5pc1ByaXZhdGVC
cm93c2luZ1Nlc3Npb24oKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShyZXN1bHQpLCAwKSkKICAg
ICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
CiAjZW5kaWYKIAotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKGNvbnRleHQsIGZp
cnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lv
biwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNl
dENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQor
dm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1By
b2Nlc3MoKSkgewotICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlv
bigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShjb250ZXh0ICYmIGNvbnRleHQtPmluUHJpdmF0ZUJy
b3dzaW5nTW9kZSgpLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyksIDApOworICAgICAg
ICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVz
RnJvbURPTShzZXNzaW9uLmlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCBmaXJzdFBhcnR5LCB1
cmwsIGNvb2tpZVN0cmluZyksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAK
LSAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmws
IGNvb2tpZVN0cmluZyk7CisgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbiwg
Zmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKICNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0
d29ya1Byb2Nlc3MoKSkgewogICAgICAgICBib29sIHJlc3VsdDsKLSAgICAgICAgaWYgKCFXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJs
ZWQoY29udGV4dCAmJiBjb250ZXh0LT5pblByaXZhdGVCcm93c2luZ01vZGUoKSwgZmlyc3RQYXJ0
eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVz
RW5hYmxlZDo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hh
cmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkKHNlc3Npb24u
aXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJsZWQ6OlJlcGx5KHJlc3Vs
dCksIDApKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKGNv
bnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFi
bGVkKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IEtVUkwmIHVybCkKIHsKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAg
IGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAg
ICBTdHJpbmcgcmVzdWx0OwotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdv
cmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb250
ZXh0ICYmIGNvbnRleHQtPmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpLCBmaXJzdFBhcnR5LCB1cmwp
LCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlOjpSZXBseShyZXN1bHQpLCAwKSkKKyAgICAgICAgaWYgKCFXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoc2Vzc2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgZmlyc3RQ
YXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZTo6UmVwbHkocmVzdWx0KSwgMCkpCiAgICAgICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogI2VuZGlm
CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29u
dGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENv
b2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29v
a2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7
CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVk
KCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llcyhjb250ZXh0ICYm
IGNvbnRleHQtPmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXM6OlJlcGx5
KHJhd0Nvb2tpZXMpLCAwKSkKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3
b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llcyhzZXNzaW9uLmlzUHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbigpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAwKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
I2VuZGlmCiAKLSAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhjb250ZXh0LCBmaXJz
dFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOworICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29r
aWVzKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7CiB9CiAKLXZvaWQgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQog
ewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgp
Lm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkRlbGV0ZUNvb2tpZShjb250ZXh0ICYmIGNvbnRleHQt
PmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpLCB1cmwsIGNvb2tpZU5hbWUpLCAwKTsKKyAgICAgICAg
V2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RGVsZXRlQ29va2ll
KHNlc3Npb24uaXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIHVybCwgY29va2llTmFtZSksIDAp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAKLSAgICBXZWJDb3JlOjpkZWxldGVD
b29raWUoY29udGV4dCwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxldGVDb29r
aWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0KIAogLy8gRGF0YWJhc2VTdHJhdGVneQpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCShyZXZpc2lvbiAxMzg0MDcpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NywxNSArNTcsMTIgQEAgcHJpdmF0ZToKIAog
ICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneQogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlD
b29raWVzQ2hhbmdlZCgpIE9WRVJSSURFOwotI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVU
V09SSykKLSAgICB2aXJ0dWFsIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBkZWZh
dWx0Q29va2llU3RvcmFnZSgpIE9WRVJSSURFOwotI2VuZGlmCi0gICAgdmlydHVhbCBTdHJpbmcg
Y29va2llc0ZvckRPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwg
Y29uc3QgU3RyaW5nJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVk
KFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgU3RyaW5n
IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0
KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYp
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKFdlYkNvcmU6Ok5ldHdv
cmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0
IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0
cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpL
VVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwogCiAgICAg
Ly8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCShyZXZp
c2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEw
ICszNCw4IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCBzZXRQcml2YXRlQnJv
d3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYpOwotICAgIHN0
YXRpYyB2b2lkIHN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKICAgICBzdGF0aWMgdm9pZCBl
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKLSAgICBzdGF0aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJl
ZiBkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKICAgICBzdGF0aWMgdm9pZCBzZXRDb29raWVBY2Nl
cHRQb2xpY3lGb3JBbGxDb250ZXh0cyhIVFRQQ29va2llQWNjZXB0UG9saWN5KTsKIAogcHJpdmF0
ZToKQEAgLTQ4LDggKzQ2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBuZWVkc1Np
dGVTcGVjaWZpY1F1aXJrcygpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBsb2Nh
bEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBib29sIGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1
YWwgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vz
c2lvbigpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6U2NoZWR1bGVQYWly
SGFzaFNldCogc2NoZWR1bGVkUnVuTG9vcFBhaXJzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBPVkVSUklERTsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0JKHJldmlzaW9uIDEzODQwNykKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDYgQEAKICNpbXBv
cnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgogCi0j
aW1wb3J0IDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2VDRk5ldC5oPgogI2ltcG9ydCA8V2ViQ29yZS9G
cmFtZUxvYWRlckNsaWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KQEAgLTMyLDggKzMxLDExIEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIENGVVJMU3RvcmFnZVNl
c3Npb25SZWYgZGVmYXVsdENGU3RvcmFnZVNlc3Npb247Ci1zdGF0aWMgQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbjsKK3N0YXRpYyBPd25QdHI8TmV0
d29ya1N0b3JhZ2VTZXNzaW9uPiYgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKQorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4sIHNl
c3Npb24sICgpKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKK30KIAogYm9vbCBXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjpuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygpIGNvbnN0CiB7CkBAIC02Nywy
NiArNjksMTcgQEAgdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRQcml2YQogICAg
IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKSA9IGlkZW50aWZp
ZXI7CiB9CiAKLXZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3dpdGNoVG9OZXdUZXN0
aW5nU2Vzc2lvbigpCi17Ci0gICAgLy8gU2V0IGEgcHJpdmF0ZSBzZXNzaW9uIGZvciB0ZXN0aW5n
IHRvIGF2b2lkIGludGVyZmVyaW5nIHdpdGggZ2xvYmFsIGNvb2tpZXMuIFRoaXMgc2hvdWxkIGJl
IGRpZmZlcmVudCBmcm9tIHByaXZhdGUgYnJvd3Npbmcgc2Vzc2lvbi4KLSAgICBpZiAoZGVmYXVs
dENGU3RvcmFnZVNlc3Npb24pCi0gICAgICAgIENGUmVsZWFzZShkZWZhdWx0Q0ZTdG9yYWdlU2Vz
c2lvbik7Ci0gICAgZGVmYXVsdENGU3RvcmFnZVNlc3Npb24gPSBXS0NyZWF0ZVByaXZhdGVTdG9y
YWdlU2Vzc2lvbihDRlNUUigiUHJpdmF0ZSBXZWJLaXQgU2Vzc2lvbiIpKTsKLX0KLQogdm9pZCBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkK
IHsKICAgICAvLyBGSVhNRSAoTmV0d29ya1Byb2Nlc3MpOiBEb24ndCBjcmVhdGUgYW4gdW5uZWNl
c3Nhcnkgc2Vzc2lvbiB3aGVuIHVzaW5nIG5ldHdvcmsgcHJvY2Vzcy4KIAogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKQor
ICAgIGlmIChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBTdHJpbmcgYmFzZSA9IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRp
ZmllckJhc2UoKS5pc051bGwoKSA/IFN0cmluZyhbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRs
ZUlkZW50aWZpZXJdKSA6IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJh
c2UoKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmSWRlbnRpZmllciA9IFN0cmluZyhi
YXNlICsgIi5Qcml2YXRlQnJvd3NpbmciKS5jcmVhdGVDRlN0cmluZygpOworICAgIFN0cmluZyBp
ZGVudGlmaWVyQmFzZSA9IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJh
c2UoKS5pc051bGwoKSA/IFN0cmluZyhbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50
aWZpZXJdKSA6IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKTsK
IAotICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uID0gV0tDcmVhdGVQcml2YXRlU3Rv
cmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpKTsKKyAgICBwcml2YXRlQnJvd3NpbmdTdG9y
YWdlU2Vzc2lvbigpID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKGlkZW50aWZpZXJCYXNlKTsKIH0KIAogdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0OjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCkBAIC05NCwzOSArODcsMjgg
QEAgdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UAogICAgIGlmICghcHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIENGUmVs
ZWFzZShwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbik7Ci0gICAgcHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb24gPSAwOwotfQotCi1DRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIFdlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpCi17Ci0gICAgcmV0dXJu
IGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uOwotfQotCi1ib29sIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZyYW1l
KCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLT5wcml2YXRl
QnJvd3NpbmdFbmFibGVkKCk7CisgICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSA9
IG51bGxwdHI7CiB9CiAKLUNGVVJMU3RvcmFnZVNlc3Npb25SZWYgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAorTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7Ci0gICAg
aWYgKGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpKSB7Ci0gICAgICAgIEFTU0VSVChwcml2YXRlQnJv
d3NpbmdTdG9yYWdlU2Vzc2lvbik7Ci0gICAgICAgIHJldHVybiBwcml2YXRlQnJvd3NpbmdTdG9y
YWdlU2Vzc2lvbjsKKyAgICBib29sIGluUHJpdmF0ZUJyb3dzaW5nTW9kZSA9IGZyYW1lKCkgJiYg
ZnJhbWUoKS0+c2V0dGluZ3MoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLT5wcml2YXRlQnJvd3Np
bmdFbmFibGVkKCk7CisgICAgaWYgKGluUHJpdmF0ZUJyb3dzaW5nTW9kZSkgeworICAgICAgICBB
U1NFUlQocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSk7CisgICAgICAgIHJldHVybiAq
cHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKTsKICAgICB9Ci0gICAgcmV0dXJuIGRlZmF1
bHRDRlN0b3JhZ2VTZXNzaW9uOworICAgIHJldHVybiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRl
ZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQogCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kgcG9saWN5KQogewogICAgIFtbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29v
a2llU3RvcmFnZV0gc2V0Q29va2llQWNjZXB0UG9saWN5OnN0YXRpY19jYXN0PE5TSFRUUENvb2tp
ZUFjY2VwdFBvbGljeT4ocG9saWN5KV07CiAKLSAgICBpZiAoUmV0YWluUHRyPENGSFRUUENvb2tp
ZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgp
KQorICAgIGlmIChSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFn
ZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2ll
U3RvcmFnZSgpKQogICAgICAgICBXS1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3koY29va2llU3Rv
cmFnZS5nZXQoKSwgcG9saWN5KTsKIAotICAgIGlmIChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vz
c2lvbikgewotICAgICAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gcHJpdmF0
ZUJyb3dzaW5nQ29va2llU3RvcmFnZSA9IGFkb3B0Q0YoV0tDb3B5SFRUUENvb2tpZVN0b3JhZ2Uo
cHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pKTsKLSAgICAgICAgV0tTZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KHByaXZhdGVCcm93c2luZ0Nvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7
CisgICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpIHsKKyAgICAgICAgV0tT
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkt
PmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgcG9saWN5KTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlBsYXRmb3JtU3RyYXRl
Z2llc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXNNYWMubW0JKHJldmlzaW9uIDEzODQw
NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlBs
YXRmb3JtU3RyYXRlZ2llc01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw0OSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oIgotCi0jaW5jbHVkZSAiV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgotI2lu
Y2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdl
UmVmPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlZmF1bHRDb29raWVTdG9yYWdlKCkKLXsKLSAg
ICBpZiAoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzZXNzaW9uID0gV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkpCi0gICAgICAgIHJldHVybiBhZG9wdENG
KFdLQ29weUhUVFBDb29raWVTdG9yYWdlKHNlc3Npb24pKTsKLQotI2lmIFVTRShDRk5FVFdPUksp
Ci0gICAgcmV0dXJuIFdLR2V0RGVmYXVsdEhUVFBDb29raWVTdG9yYWdlKCk7Ci0jZWxzZQotICAg
IC8vIFdoZW4gdXNpbmcgTlNVUkxDb25uZWN0aW9uLCB3ZSBhbHNvIHVzZSBpdHMgc2hhcmVkIGNv
b2tpZSBzdG9yYWdlLgotICAgIHJldHVybiAwOwotI2VuZGlmCi19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9KU0VsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTUmFuZ2Uu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL01haW5SZXNvdXJjZUxvYWRlci5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvTmV0d29ya2luZ0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vZGVUcmF2ZXJz
YWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdp
bkRvY3VtZW50Lmg+CkBAIC0yNDgsNyArMjQ5LDcgQEAgdm9pZCBXZWJGcmFtZTo6c3RhcnREb3du
bG9hZChjb25zdCBXZWJDbwogCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAo
V2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgYm9v
bCBwcml2YXRlQnJvd3NpbmdFbmFibGVkID0gbV9jb3JlRnJhbWUtPmxvYWRlcigpLT5uZXR3b3Jr
aW5nQ29udGV4dCgpLT5pblByaXZhdGVCcm93c2luZ01vZGUoKTsKKyAgICAgICAgYm9vbCBwcml2
YXRlQnJvd3NpbmdFbmFibGVkID0gbV9jb3JlRnJhbWUtPmxvYWRlcigpLT5uZXR3b3JraW5nQ29u
dGV4dCgpLT5zdG9yYWdlU2Vzc2lvbigpLmlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwogICAg
ICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTdGFydERv
d25sb2FkKHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3Qp
LCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHJldmlzaW9uIDEzODQw
NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9IaXRU
ZXN0UmVzdWx0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxDb252ZXJ0ZXIuaD4KICNpbXBvcnQg
PFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JraW5nQ29u
dGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgpA
QCAtNjc4LDcgKzY3OSw3IEBAIGJvb2wgV2ViUGFnZTo6cGxhdGZvcm1IYXNMb2NhbERhdGFGb3JV
UkwKICAgICBOU011dGFibGVVUkxSZXF1ZXN0KiByZXF1ZXN0ID0gW1tOU011dGFibGVVUkxSZXF1
ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDp1cmxdOwogICAgIFtyZXF1ZXN0IHNldFZhbHVlOihOU1N0
cmluZyopdXNlckFnZW50KCkgZm9ySFRUUEhlYWRlckZpZWxkOkAiVXNlci1BZ2VudCJdOwogICAg
IE5TQ2FjaGVkVVJMUmVzcG9uc2UgKmNhY2hlZFJlc3BvbnNlOwotICAgIGlmIChDRlVSTFN0b3Jh
Z2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uID0gY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPmxv
YWRlcigpLT5uZXR3b3JraW5nQ29udGV4dCgpLT5zdG9yYWdlU2Vzc2lvbigpKQorICAgIGlmIChD
RlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uID0gY29yZVBhZ2UoKS0+bWFpbkZy
YW1lKCktPmxvYWRlcigpLT5uZXR3b3JraW5nQ29udGV4dCgpLT5zdG9yYWdlU2Vzc2lvbigpLnBs
YXRmb3JtU2Vzc2lvbigpKQogICAgICAgICBjYWNoZWRSZXNwb25zZSA9IFdLQ2FjaGVkUmVzcG9u
c2VGb3JSZXF1ZXN0KHN0b3JhZ2VTZXNzaW9uLCByZXF1ZXN0KTsKICAgICBlbHNlCiAgICAgICAg
IGNhY2hlZFJlc3BvbnNlID0gW1tOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXSBjYWNoZWRSZXNw
b25zZUZvclJlcXVlc3Q6cmVxdWVzdF07CkBAIC02OTIsNyArNjkzLDcgQEAgc3RhdGljIE5TQ2Fj
aGVkVVJMUmVzcG9uc2UgKmNhY2hlZFJlc3BvbgogICAgIFJldGFpblB0cjxOU011dGFibGVVUkxS
ZXF1ZXN0PiByZXF1ZXN0KEFkb3B0TlMsIFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBhbGxvY10gaW5p
dFdpdGhVUkw6dXJsXSk7CiAgICAgW3JlcXVlc3QuZ2V0KCkgc2V0VmFsdWU6KE5TU3RyaW5nICop
d2ViUGFnZS0+dXNlckFnZW50KCkgZm9ySFRUUEhlYWRlckZpZWxkOkAiVXNlci1BZ2VudCJdOwog
Ci0gICAgaWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24gPSB3ZWJQYWdl
LT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPm5ldHdvcmtpbmdDb250ZXh0KCkt
PnN0b3JhZ2VTZXNzaW9uKCkpCisgICAgaWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFn
ZVNlc3Npb24gPSB3ZWJQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPm5l
dHdvcmtpbmdDb250ZXh0KCktPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCkpCiAg
ICAgICAgIHJldHVybiBXS0NhY2hlZFJlc3BvbnNlRm9yUmVxdWVzdChzdG9yYWdlU2Vzc2lvbiwg
cmVxdWVzdC5nZXQoKSk7CiAKICAgICByZXR1cm4gW1tOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hl
XSBjYWNoZWRSZXNwb25zZUZvclJlcXVlc3Q6cmVxdWVzdC5nZXQoKV07CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRl
Z2llc0VmbC5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2
LDM0ICs4NiwzNCBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6bm90aWZ5Q29va2llCiB7
CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNvb2tpZXNGb3JET00oTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
IHVybCkKK1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNvb2tpZXNGb3JET00oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oY29u
dGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRP
TShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIFBsYXRmb3JtU3RyYXRlZ2ll
c0VmbDo6c2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVT
dHJpbmcpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6c2V0Q29va2llc0Zyb21ET00oY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewotICAgIFdl
YkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwgY29va2ll
U3RyaW5nKTsKKyAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShzZXNzaW9uLCBmaXJzdFBh
cnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CiB9CiAKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzRWZs
Ojpjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6
OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVybiBXZWJD
b3JlOjpjb29raWVzRW5hYmxlZChjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVy
biBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQog
Ci1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJu
IFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnRleHQsIGZpcnN0UGFy
dHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLWJvb2wgUGxhdGZvcm1TdHJhdGVn
aWVzRWZsOjpnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29r
aWVzKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewotICAgIHJldHVybiBX
ZWJDb3JlOjpnZXRSYXdDb29raWVzKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2ll
cyk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0
eSwgdXJsLCByYXdDb29raWVzKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmRl
bGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6ZGVs
ZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0gICAgV2ViQ29yZTo6ZGVsZXRl
Q29va2llKGNvbnRleHQsIHVybCwgY29va2llTmFtZSk7CisgICAgV2ViQ29yZTo6ZGVsZXRlQ29v
a2llKHNlc3Npb24sIHVybCwgY29va2llTmFtZSk7CiB9CiAKIHZvaWQgUGxhdGZvcm1TdHJhdGVn
aWVzRWZsOjpyZWZyZXNoUGx1Z2lucygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaAkocmV2aXNpb24g
MTM4NDA3KQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJh
dGVnaWVzRWZsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDEyICs0NywxMiBAQCBwcml2YXRlOgog
CiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIG5vdGlm
eUNvb2tpZXNDaGFuZ2VkKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShXZWJD
b3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21E
T00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVh
bCBib29sIGNvb2tpZXNFbmFibGVkKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZp
cnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFdlYkNvcmU6Ok5ldHdv
cmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKFdlYkNvcmU6Ok5l
dHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdmlydHVhbCB2
b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9y
RE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYs
IGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VS
TCYpOworICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gV2ViQ29yZTo6
RGF0YWJhc2VTdHJhdGVneQogICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2ll
c0d0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
UGxhdGZvcm1TdHJhdGVnaWVzR3RrLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODAsMzQgKzgwLDM0IEBAIHZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpu
b3RpZnlDb29raWUKIHsKIH0KIAotU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y29va2ll
c0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y29va2ll
c0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwm
IGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29v
a2llc0ZvckRPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3Jl
Ojpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgUGxh
dGZvcm1TdHJhdGVnaWVzR3RrOjpzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCog
Y29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpzZXRDb29r
aWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJp
bmcpCiB7Ci0gICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oY29udGV4dCwgZmlyc3RQYXJ0
eSwgdXJsLCBjb29raWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNl
c3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBQbGF0Zm9y
bVN0cmF0ZWdpZXNHdGs6OmNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29sIFBsYXRmb3Jt
U3RyYXRlZ2llc0d0azo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0g
ICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKGNvbnRleHQsIGZpcnN0UGFydHksIHVy
bCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHNlc3Npb24sIGZpcnN0UGFy
dHksIHVybCk7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVz
R3RrOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkK
IHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29u
dGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBQ
bGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENv
b2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Z2V0UmF3Q29v
a2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7
Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoY29udGV4dCwgZmlyc3RQYXJ0eSwg
dXJsLCByYXdDb29raWVzKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzZXNz
aW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12b2lkIFBsYXRmb3JtU3Ry
YXRlZ2llc0d0azo6ZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgUGxhdGZvcm1TdHJh
dGVnaWVzR3RrOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKLSAgICBX
ZWJDb3JlOjpkZWxldGVDb29raWUoY29udGV4dCwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBXZWJD
b3JlOjpkZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0KIAogLy8gUGx1
Z2luU3RyYXRlZ3kKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRm
b3JtU3RyYXRlZ2llc0d0ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBT
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuaAko
d29ya2luZyBjb3B5KQpAQCAtNDYsMTIgKzQ2LDEyIEBAIHByaXZhdGU6CiAKICAgICAvLyBXZWJD
b3JlOjpDb29raWVzU3RyYXRlZ3kKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5n
ZWQoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKFdlYkNvcmU6Ok5ldHdvcmtp
bmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShXZWJDb3JlOjpO
ZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wgY29va2ll
c0VuYWJsZWQoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBTdHJpbmcg
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7
Ci0gICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRl
eHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJM
JiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29v
a2llKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNv
bnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVz
RnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5n
Jik7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmly
dHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VS
TCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0
ZWd5CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgpJbmRleDogU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0JKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiAr
MTA4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvTW91c2VFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsdWdpblZpZXdCYXNlLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL1Byb3RlY3Rpb25TcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9y
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1Jlc291cmNlTG9hZGVyLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lv
biAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEzICsyNyw4IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
KGZyYW1lKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5nU3Rv
cmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgdm9p
ZCBzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7CiAgICAgc3RhdGljIHZvaWQgZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCk7Ci0gICAgc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgZGVmYXVs
dFN0b3JhZ2VTZXNzaW9uKCk7Ci0KLSAgICBzdGF0aWMgdm9pZCBzZXRDb29raWVBY2NlcHRQb2xp
Y3lGb3JUZXN0aW5nQ29udGV4dChOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpOwogCiBwcml2YXRl
OgogICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQoV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQpA
QCAtNDMsOCArMzgsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIG5lZWRzU2l0ZVNw
ZWNpZmljUXVpcmtzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGxvY2FsRmls
ZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJv
b2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBD
RlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9u
KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpTY2hlZHVsZVBhaXJIYXNo
U2V0KiBzY2hlZHVsZWRSdW5Mb29wUGFpcnMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFs
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYpIGNvbnN0IE9WRVJSSURFOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dC5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjEs
NiArMjEsNyBAQAogI2ltcG9ydCAiV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgogCiAjaW1w
b3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyQ2xpZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2V0dGluZ3MuaD4KQEAg
LTI4LDggKzI5LDExIEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgQ0ZV
UkxTdG9yYWdlU2Vzc2lvblJlZiBkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbjsKLXN0YXRpYyBDRlVS
TFN0b3JhZ2VTZXNzaW9uUmVmIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uOworc3RhdGlj
IE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vz
c2lvbigpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChPd25QdHI8TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uPiwgc2Vzc2lvbiwgKCkpOworICAgIHJldHVybiBzZXNzaW9uOworfQogCiBib29sIFdl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6Om5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkgY29uc3QK
IHsKQEAgLTUxLDY5ICs1NSwyNyBAQCBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6CiAgICAgcmV0dXJuIGZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQoKS0+YmxvY2tlZEVy
cm9yKHJlcXVlc3QpOwogfQogCi1zdGF0aWMgU3RyaW5nJiBwcml2YXRlQnJvd3NpbmdTdG9yYWdl
U2Vzc2lvbklkZW50aWZpZXJCYXNlKCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwot
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBiYXNlLCAoKSk7Ci0gICAgcmV0dXJuIGJh
c2U7Ci19Ci0KLXZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0UHJpdmF0ZUJyb3dz
aW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIp
Ci17Ci0gICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpID0g
aWRlbnRpZmllcjsKLX0KLQotdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpzd2l0Y2hU
b05ld1Rlc3RpbmdTZXNzaW9uKCkKLXsKLSAgICAvLyBTZXQgYSBwcml2YXRlIHNlc3Npb24gZm9y
IHRlc3RpbmcgdG8gYXZvaWQgaW50ZXJmZXJpbmcgd2l0aCBnbG9iYWwgY29va2llcy4gVGhpcyBz
aG91bGQgYmUgZGlmZmVyZW50IGZyb20gcHJpdmF0ZSBicm93c2luZyBzZXNzaW9uLgotICAgIGlm
IChkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbikKLSAgICAgICAgQ0ZSZWxlYXNlKGRlZmF1bHRDRlN0
b3JhZ2VTZXNzaW9uKTsKLSAgICBkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbiA9IFdLQ3JlYXRlUHJp
dmF0ZVN0b3JhZ2VTZXNzaW9uKENGU1RSKCJQcml2YXRlIFdlYktpdCBTZXNzaW9uIikpOwotfQot
CiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKHByaXZhdGVC
cm93c2luZ1N0b3JhZ2VTZXNzaW9uKQorICAgIGlmIChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vz
c2lvbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgYmFzZSA9IHByaXZhdGVCcm93
c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKS5pc051bGwoKSA/IFN0cmluZyhbW05T
QnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKSA6IHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IGNmSWRlbnRpZmllciA9IFN0cmluZyhiYXNlICsgIi5Qcml2YXRlQnJvd3NpbmciKS5jcmVhdGVD
RlN0cmluZygpOwotCi0gICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24gPSBXS0NyZWF0
ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCkpOworICAgIHByaXZhdGVC
cm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlm
aWVyXSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJveVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oKQogewotICAgIGlmICghcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNl
c3Npb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIENGUmVsZWFzZShwcml2YXRlQnJvd3NpbmdT
dG9yYWdlU2Vzc2lvbik7Ci0gICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24gPSAwOwot
fQotCi1DRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRl
ZmF1bHRTdG9yYWdlU2Vzc2lvbigpCi17Ci0gICAgcmV0dXJuIGRlZmF1bHRDRlN0b3JhZ2VTZXNz
aW9uOworICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkgPSBudWxscHRyOwogfQog
Ci1ib29sIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgp
IGNvbnN0CitOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6
OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZnJhbWUoKSAmJiBmcmFtZSgp
LT5zZXR0aW5ncygpICYmIGZyYW1lKCktPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoKTsKLX0KLQotQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0Ci17Ci0gICAgaWYgKGluUHJpdmF0ZUJyb3dzaW5n
TW9kZSgpKSB7Ci0gICAgICAgIEFTU0VSVChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbik7
Ci0gICAgICAgIHJldHVybiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbjsKKyAgICBib29s
IGluUHJpdmF0ZUJyb3dzaW5nTW9kZSA9IGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKSAm
JiBmcmFtZSgpLT5zZXR0aW5ncygpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgaWYg
KGluUHJpdmF0ZUJyb3dzaW5nTW9kZSkgeworICAgICAgICBBU1NFUlQocHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb24oKSk7CisgICAgICAgIHJldHVybiAqcHJpdmF0ZUJyb3dzaW5nU3RvcmFn
ZVNlc3Npb24oKTsKICAgICB9Ci0gICAgcmV0dXJuIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uOwor
ICAgIHJldHVybiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigp
OwogfQogCi12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBv
bGljeUZvclRlc3RpbmdDb250ZXh0KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCi17
Ci0gICAgQVNTRVJUKGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uKTsKLSAgICBSZXRhaW5QdHI8Q0ZI
VFRQQ29va2llU3RvcmFnZVJlZj4gZGVmYXVsdENvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKFdLQ29w
eUhUVFBDb29raWVTdG9yYWdlKGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uKSk7Ci0gICAgV0tTZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KGRlZmF1bHRDb29raWVTdG9yYWdlLmdldCgpLCBwb2xpY3kp
OwotfQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MywxMyArNTMsMTIgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OkNv
b2tpZXNTdHJhdGVneQogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDb29raWVzQ2hhbmdlZCgpIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGRl
ZmF1bHRDb29raWVTdG9yYWdlKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2ll
c0ZvckRPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29va2llc0Zyb21ET00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3Qg
U3RyaW5nJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKFdlYkNv
cmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKFdlYkNvcmU6Ok5ldHdvcmtpbmdD
b250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2
b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBj
b29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
Ym9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktV
UkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwogCiAgICAgLy8gV2Vi
Q29yZTo6RGF0YWJhc2VTdHJhdGVneQogICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRh
dGlvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0JKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQkod29y
a2luZyBjb3B5KQpAQCAtODcsNDcgKzg3LDM0IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpub3RpZnlDb29raWUKIHsKIH0KIAotUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVmYXVsdENvb2tpZVN0b3JhZ2UoKQorU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkK
IHsKLSAgICBpZiAoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzZXNzaW9uID0gV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkpCi0gICAgICAgIHJldHVybiBh
ZG9wdENGKFdLQ29weUhUVFBDb29raWVTdG9yYWdlKHNlc3Npb24pKTsKLQotI2lmIFVTRShDRk5F
VFdPUkspCi0gICAgcmV0dXJuIFdLR2V0RGVmYXVsdEhUVFBDb29raWVTdG9yYWdlKCk7Ci0jZWxz
ZQotICAgIC8vIFdoZW4gdXNpbmcgTlNVUkxDb25uZWN0aW9uLCB3ZSBhbHNvIHVzZSBpdHMgc2hh
cmVkIGNvb2tpZSBzdG9yYWdlLgotICAgIHJldHVybiAwOwotI2VuZGlmCi19Ci0KLVN0cmluZyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKLXsKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOwor
ICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVy
bCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTShO
ZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb29raWVTdHJpbmcpCiB7Ci0gICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00o
Y29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNl
dENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsK
IH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKE5ldHdvcmtp
bmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1
cmwpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKGNvbnRl
eHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVk
KHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHks
IGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2Vi
Q29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwg
dXJsKTsKIH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMoTmV0
d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtV
UkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tp
ZT4mIHJhd0Nvb2tpZXMpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoY29u
dGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6
Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQog
Ci12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkK
K3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29v
a2llTmFtZSkKIHsKLSAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoY29udGV4dCwgdXJsLCBjb29r
aWVOYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVO
YW1lKTsKIH0KIAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlZnJlc2hQbHVnaW5zKCkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkocmV2
aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
cy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksOSBAQAogI2ltcG9ydCAiV2ViS2l0VmVy
c2lvbkNoZWNrcy5oIgogI2ltcG9ydCAiV2ViTlNEaWN0aW9uYXJ5RXh0cmFzLmgiCiAjaW1wb3J0
ICJXZWJOU1VSTEV4dHJhcy5oIgorI2ltcG9ydCAiV2ViU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1w
b3J0IDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L0Nvb2tpZVN0b3JhZ2VDRk5ldC5oPgorI2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KIApAQCAtMTI4NiwxMiArMTI4NywxMyBAQCArICh2b2lkKV9zZXRJQkNy
ZWF0b3JJRDooTlNTdHJpbmcgKilzdHJpCiAKICsgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJU
b05ld1Rlc3RpbmdTZXNzaW9uCiB7Ci0gICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3dp
dGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOworICAgIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNl
KCk7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9u
KCk7CiB9CiAKICsgKHZvaWQpX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFj
Y2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeQogewotICAgIFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZvclRlc3RpbmdDb250
ZXh0KHBvbGljeSk7CisgICAgV0tTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpLmdldCgp
LCBwb2xpY3kpOwogfQogCiAtIChCT09MKWlzRE9NUGFzdGVBbGxvd2VkCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTIwMTYsNyArMjAx
Niw3IEBAIC0gKE5TQ2FjaGVkVVJMUmVzcG9uc2UgKilfY2FjaGVkUmVzcG9uc2UKICAgICBpZiAo
IV9wcml2YXRlLT5wYWdlKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgaWYgKENGVVJMU3Rv
cmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24gPSBfcHJpdmF0ZS0+cGFnZS0+bWFpbkZyYW1l
KCktPmxvYWRlcigpLT5uZXR3b3JraW5nQ29udGV4dCgpLT5zdG9yYWdlU2Vzc2lvbigpKQorICAg
IGlmIChDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uID0gX3ByaXZhdGUtPnBh
Z2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+bmV0d29ya2luZ0NvbnRleHQoKS0+c3RvcmFnZVNl
c3Npb24oKS5wbGF0Zm9ybVNlc3Npb24oKSkKICAgICAgICAgY2FjaGVkUmVzcG9uc2UgPSBXS0Nh
Y2hlZFJlc3BvbnNlRm9yUmVxdWVzdChzdG9yYWdlU2Vzc2lvbiwgcmVxdWVzdC5nZXQoKSk7CiAg
ICAgZWxzZQogICAgICAgICBjYWNoZWRSZXNwb25zZSA9IFtbTlNVUkxDYWNoZSBzaGFyZWRVUkxD
YWNoZV0gY2FjaGVkUmVzcG9uc2VGb3JSZXF1ZXN0OnJlcXVlc3QuZ2V0KCldOwpJbmRleDogU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0
ZWdpZXNRdC5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSwz
NCArOTksMzQgQEAgdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6bm90aWZ5Q29va2llcwogewog
fQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNvb2tpZXNGb3JET00oTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVy
bCkKK1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShjb250ZXh0
LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHNl
c3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6
OnNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5n
KQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewotICAgIFdlYkNvcmU6
OnNldENvb2tpZXNGcm9tRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5n
KTsKKyAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1
cmwsIGNvb2tpZVN0cmluZyk7CiB9CiAKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNvb2tp
ZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb29raWVz
RW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwm
IGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29v
a2llc0VuYWJsZWQoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29y
ZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotU3RyaW5n
IFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3
b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsK
KyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lv
biwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Z2V0
UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wg
UGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmws
IFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewotICAgIHJldHVybiBXZWJDb3JlOjpnZXRS
YXdDb29raWVzKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7CisgICAgcmV0
dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdD
b29raWVzKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6ZGVsZXRlQ29va2llKE5l
dHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
Y29va2llTmFtZSkKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmRlbGV0ZUNvb2tpZShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShjb250ZXh0
LCB1cmwsIGNvb2tpZU5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1
cmwsIGNvb2tpZU5hbWUpOwogfQogCiB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpyZWZyZXNo
UGx1Z2lucygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3Jt
U3RyYXRlZ2llc1F0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU4LDEyICs1OCwxMiBAQCBwcml2YXRlOgogICAgIAogICAgIC8vIFdlYkNvcmU6
OkNvb2tpZXNTdHJhdGVneQogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDb29raWVzQ2hhbmdlZCgp
OwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oV2ViQ29yZTo6TmV0d29ya2luZ0Nv
bnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpL
VVJMJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKFdlYkNvcmU6Ok5ldHdv
cmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5h
YmxlZChXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNv
bnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCos
IGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBW
ZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUo
V2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3Qg
U3RyaW5nJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9t
RE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsK
KyAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNv
cmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFs
IGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2ll
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktV
UkwmLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kK
ICAgICAvLyAtIFVzaW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb29raWVNYW5hZ2VyQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvb2tpZU1hbmFnZXJDRk5ldC5jcHAJKHJldmlzaW9uIDEzODQwNykKKysr
IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvb2tpZU1hbmFnZXJDRk5ldC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAKICNp
bmNsdWRlIDxDRk5ldHdvcmsvQ0ZIVFRQQ29va2llc1ByaXYuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0Nvb2tpZVN0b3JhZ2VDRk5ldC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJW
aWV3LmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NCw3ICsxNTQsNiBAQAogI2lmIFVTRShDRk5FVFdPUksp
CiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ2FjaGVQcml2Lmg+CiAjaW5jbHVkZSA8Q0ZOZXR3
b3JrL0NGVVJMUHJvdG9jb2xQcml2Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Db29raWVTdG9yYWdl
Q0ZOZXQuaD4KICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50
ZXJmYWNlLmg+IAogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCShy
ZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNiBA
QAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaWYgVVNFKENGTkVUV09SSykKICNp
bmNsdWRlIDxDRk5ldHdvcmsvQ0ZIVFRQQ29va2llc1ByaXYuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0Nvb2tpZVN0b3JhZ2VDRk5ldC5oPgogI2VuZGlmCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5n
cy5oPgogI2lmIFVTRShDRk5FVFdPUkspCkBAIC0zMyw4ICszMiwxMSBAQAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKICNpZiBVU0UoQ0ZORVRXT1JLKQotc3RhdGljIENGVVJMU3RvcmFnZVNl
c3Npb25SZWYgZGVmYXVsdENGU3RvcmFnZVNlc3Npb247Ci1zdGF0aWMgQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbjsKK3N0YXRpYyBPd25QdHI8TmV0
d29ya1N0b3JhZ2VTZXNzaW9uPiYgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKQorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4sIHNl
c3Npb24sICgpKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKK30KICNlbmRpZgogCiBQYXNzUmVmUHRy
PFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmNy
ZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQpAQCAtNjksNzUgKzcx
LDQzIEBAIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0UHJpdmEKICAgICBwcml2
YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkgPSBpZGVudGlmaWVyOwog
fQogCi12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN3aXRjaFRvTmV3VGVzdGluZ1Nl
c3Npb24oKQotewotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgLy8gU2V0IGEgcHJpdmF0ZSBzZXNz
aW9uIGZvciB0ZXN0aW5nIHRvIGF2b2lkIGludGVyZmVyaW5nIHdpdGggZ2xvYmFsIGNvb2tpZXMu
IFRoaXMgc2hvdWxkIGJlIGRpZmZlcmVudCBmcm9tIHByaXZhdGUgYnJvd3Npbmcgc2Vzc2lvbi4K
LSAgICBkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbiA9IHdrQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNz
aW9uKENGU1RSKCJQcml2YXRlIFdlYktpdCBTZXNzaW9uIiksIGRlZmF1bHRDRlN0b3JhZ2VTZXNz
aW9uKTsKLSNlbmRpZgotfQotCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAjaWYgVVNFKENGTkVUV09SSykKLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b24pCisgICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFN0cmluZyBiYXNlID0gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25J
ZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpID8gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJp
bmdSZWY+KENGQnVuZGxlR2V0VmFsdWVGb3JJbmZvRGljdGlvbmFyeUtleShDRkJ1bmRsZUdldE1h
aW5CdW5kbGUoKSwga0NGQnVuZGxlSWRlbnRpZmllcktleSkpKSA6IHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IGNmSWRlbnRpZmllciA9IFN0cmluZyhiYXNlICsgIi5Qcml2YXRlQnJvd3NpbmciKS5jcmVhdGVD
RlN0cmluZygpOworICAgIFN0cmluZyBpZGVudGlmaWVyQmFzZSA9IHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKS5pc051bGwoKSA/IFN0cmluZyhyZWludGVycHJl
dF9jYXN0PENGU3RyaW5nUmVmPihDRkJ1bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rpb25hcnlLZXko
Q0ZCdW5kbGVHZXRNYWluQnVuZGxlKCksIGtDRkJ1bmRsZUlkZW50aWZpZXJLZXkpKSkgOiBwcml2
YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCk7CiAKLSAgICBwcml2YXRl
QnJvd3NpbmdTdG9yYWdlU2Vzc2lvbiA9IHdrQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKGNm
SWRlbnRpZmllci5nZXQoKSwgZGVmYXVsdENGU3RvcmFnZVNlc3Npb24pOworICAgIHByaXZhdGVC
cm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oaWRlbnRpZmllckJhc2UpOwogI2VuZGlmCiB9CiAKIHZvaWQg
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
KQogewogI2lmIFVTRShDRk5FVFdPUkspCi0gICAgaWYgKCFwcml2YXRlQnJvd3NpbmdTdG9yYWdl
U2Vzc2lvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0ZSZWxlYXNlKHByaXZhdGVCcm93c2lu
Z1N0b3JhZ2VTZXNzaW9uKTsKLSAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbiA9IDA7
CisgICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSA9IG51bGxwdHI7CiAjZW5kaWYK
IH0KIAogI2lmIFVTRShDRk5FVFdPUkspCi1DRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIFdlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpCitOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gZGVmYXVsdENGU3RvcmFnZVNlc3Npb247Ci19Ci0KLWJvb2wgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpICYmIGZyYW1lKCktPnNl
dHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKLX0KLQotQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0
Ci17Ci0gICAgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkID0gaW5Qcml2YXRlQnJvd3NpbmdN
b2RlKCk7Ci0gICAgaWYgKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKLSAgICAgICAgQVNTRVJU
KHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKTsKLSAgICAgICAgcmV0dXJuIHByaXZhdGVC
cm93c2luZ1N0b3JhZ2VTZXNzaW9uOworICAgIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlID0g
ZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpICYmIGZyYW1lKCktPnNldHRpbmdzKCktPnBy
aXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBpZiAoaW5Qcml2YXRlQnJvd3NpbmdNb2RlKSB7
CisgICAgICAgIEFTU0VSVChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpKTsKKyAgICAg
ICAgcmV0dXJuICpwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpOwogICAgIH0KLSAgICBy
ZXR1cm4gZGVmYXVsdENGU3RvcmFnZVNlc3Npb247Ci19Ci0KLXZvaWQgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yVGVzdGluZ0NvbnRleHQoQ0ZIVFRQ
Q29va2llU3RvcmFnZUFjY2VwdFBvbGljeSBwb2xpY3kpCi17Ci0gICAgQVNTRVJUKGRlZmF1bHRD
RlN0b3JhZ2VTZXNzaW9uKTsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4g
ZGVmYXVsdENvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKHdrQ29weUhUVFBDb29raWVTdG9yYWdlKGRl
ZmF1bHRDRlN0b3JhZ2VTZXNzaW9uKSk7Ci0gICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tp
ZUFjY2VwdFBvbGljeShkZWZhdWx0Q29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKKyAgICBy
ZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0K
IAogdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29raWVBY2NlcHRQb2xpY3lG
b3JBbGxDb250ZXh0cyhDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5IHBvbGljeSkKIHsK
LSAgICBpZiAoUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2Ug
PSBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpKQorICAgIGlmIChSZXRhaW5QdHI8Q0ZIVFRQ
Q29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpKQogICAgICAgICBDRkhUVFBD
b29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBv
bGljeSk7CiAKLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pIHsKLSAgICAg
ICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IHByaXZhdGVCcm93c2luZ0Nvb2tp
ZVN0b3JhZ2UgPSBhZG9wdENGKHdrQ29weUhUVFBDb29raWVTdG9yYWdlKHByaXZhdGVCcm93c2lu
Z1N0b3JhZ2VTZXNzaW9uKSk7Ci0gICAgICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVB
Y2NlcHRQb2xpY3kocHJpdmF0ZUJyb3dzaW5nQ29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsK
LSAgICB9CisgICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpCisgICAgICAg
IENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3kocHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb24oKS0+Y29va2llU3RvcmFnZSgpLmdldCgpLCBwb2xpY3kpOwogfQogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE0ICsyOSwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlKFdlYkNvcmU6OkZy
YW1lKiwgY29uc3QgV1RGOjpTdHJpbmcmIHVzZXJBZ2VudCk7CiAKICAgICBzdGF0aWMgdm9pZCBz
ZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmlu
ZyYpOwotICAgIHN0YXRpYyB2b2lkIHN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKICAgICBz
dGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CiAgICAgc3RhdGljIHZv
aWQgZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKIAogI2lmIFVTRShDRk5FVFdPUksp
Ci0gICAgc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgZGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCk7Ci0KLSAgICBzdGF0aWMgdm9pZCBzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JUZXN0aW5nQ29u
dGV4dChDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5KTsKICAgICBzdGF0aWMgdm9pZCBz
ZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhDRkhUVFBDb29raWVTdG9yYWdlQWNj
ZXB0UG9saWN5KTsKICNlbmRpZgogCkBAIC01MCw4ICs0Niw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBXVEY6OlN0cmluZyB1c2VyQWdlbnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdURjo6U3Ry
aW5nIHJlZmVycmVyKCkgY29uc3Q7CiAjaWYgVVNFKENGTkVUV09SSykKLSAgICB2aXJ0dWFsIGJv
b2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBDRlVSTFN0b3Jh
Z2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3Q7CiAjZW5kaWYK
ICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDQ0ICs4Niwz
NCBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bm90aWZ5Q29va2llCiB7CiB9CiAKLSNp
ZiBVU0UoQ0ZORVRXT1JLKQotUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6ZGVmYXVsdENvb2tpZVN0b3JhZ2UoKQorU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAg
ICBpZiAoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzZXNzaW9uID0gV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkpCi0gICAgICAgIHJldHVybiBhZG9wdENG
KHdrQ29weUhUVFBDb29raWVTdG9yYWdlKHNlc3Npb24pKTsKLQotICAgIHJldHVybiB3a0dldERl
ZmF1bHRIVFRQQ29va2llU3RvcmFnZSgpOwotfQotI2VuZGlmCi0KLVN0cmluZyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKLXsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6Y29va2llc0ZvckRPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVy
biBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAK
LXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5n
Q29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBj
b29raWVTdHJpbmcpCiB7Ci0gICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oY29udGV4dCwg
Zmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNldENvb2tpZXNG
cm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9v
bCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29s
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1
cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKGNvbnRleHQsIGZpcnN0
UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHNlc3Npb24s
IGZpcnN0UGFydHksIHVybCk7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtV
UkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0K
IAotYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwg
VmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nv
b2tpZXMpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoY29udGV4dCwgZmly
c3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29v
a2llcyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12b2lkIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkK
IHsKLSAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoY29udGV4dCwgdXJsLCBjb29raWVOYW1lKTsK
KyAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0K
IAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlZnJlc2hQbHVnaW5zKCkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTIs
MTUgKzUyLDEyIEBAIHByaXZhdGU6CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kK
ICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQoKTsKLSNpZiBVU0UoQ0ZORVRX
T1JLKQotICAgIHZpcnR1YWwgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGRlZmF1
bHRDb29raWVTdG9yYWdlKCk7Ci0jZW5kaWYKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9y
RE9NKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29r
aWVzRnJvbURPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7
Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoV2ViQ29y
ZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoV2Vi
Q29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNv
b2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZp
cnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVk
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpLVVJMJik7CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAg
dmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBX
ZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVu
dGF0aW9uLgpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9y
bVN0cmF0ZWdpZXNXaW5DRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9X
ZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5jcHAJKHJldmlzaW9uIDEzODQw
NykKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVn
aWVzV2luQ0UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MywzNCArODMsMzQgQEAgdm9pZCBQbGF0
Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6bm90aWZ5Q29vawogewogfQogCi1TdHJpbmcgUGxhdGZvcm1T
dHJhdGVnaWVzV2luQ0U6OmNvb2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBQbGF0Zm9y
bVN0cmF0ZWdpZXNXaW5DRTo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsK
LSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1
cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0UGFy
dHksIHVybCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OnNldENvb2tpZXNG
cm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBQbGF0
Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewotICAgIFdlYkNvcmU6OnNldENvb2tp
ZXNGcm9tRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBX
ZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tp
ZVN0cmluZyk7CiB9CiAKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmNvb2tpZXNFbmFi
bGVkKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJiB1cmwpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjb29raWVzRW5h
YmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2ll
c0VuYWJsZWQoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6
Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotU3RyaW5nIFBs
YXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3
b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJs
KTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vz
c2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5D
RTo6Z2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykK
K2Jvb2wgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewotICAgIHJldHVybiBXZWJD
b3JlOjpnZXRSYXdDb29raWVzKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7
CisgICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwg
dXJsLCByYXdDb29raWVzKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6ZGVs
ZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmRl
bGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIFdlYkNvcmU6OmRlbGV0
ZUNvb2tpZShjb250ZXh0LCB1cmwsIGNvb2tpZU5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0ZUNv
b2tpZShzZXNzaW9uLCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCiB2b2lkIFBsYXRmb3JtU3RyYXRl
Z2llc1dpbkNFOjpyZWZyZXNoUGx1Z2lucygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dl
YkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5o
CShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0
L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEyICs1MSwx
MiBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5CiAgICAgdmly
dHVhbCB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29v
a2llc0ZvckRPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0Q29va2llc0Zyb21ET00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5n
Jik7Ci0gICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKFdlYkNvcmU6Ok5ldHdvcmtpbmdD
b250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
S1VSTCYpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29r
aWVzKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7
Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4
dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFN0
cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVz
RW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVh
bCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYp
OworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwogCiAg
ICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQogICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBp
bXBsZW1lbnRhdGlvbi4K
</data>
<flag name="commit-queue"
          id="197905"
          type_id="3"
          status="-"
          setter="gtk-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180596</attachid>
            <date>2012-12-21 23:13:15 -0800</date>
            <delta_ts>2012-12-21 23:42:34 -0800</delta_ts>
            <desc>patch for EWS</desc>
            <filename>StorageSession.txt</filename>
            <type>text/plain</type>
            <size>174720</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjAyOCw2ICsyMDI4LDcgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRUUFZhbGlkYXRpb24u
Y3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcAogICAgIHBsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCisgICAgcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29u
dGVudFR5cGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuY3BwCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNTc2MCw2ICs1NzYwLDcgQEAgd2ViY29y
ZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Byb3h5U2VydmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0YXRlTm90aWZpZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdGF0ZU5vdGlmaWVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9u
IDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAg
LTEwNjEsNiArMTA2MSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRU
UFZhbGlkYXRpb24uY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwIFwK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCBcCisgICAgcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcCBcCiAgICAgcGxhdGZv
cm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsv
UHJvdGVjdGlvblNwYWNlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5j
cHAgXApAQCAtMjI3Myw2ICsyMjc0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0
d29yay9IVFRQVmFsaWRhdGlvbi5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBTdGF0dXND
b2Rlcy5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmluZy5oIFwKKyAgICBwbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIFwKICAgICBwbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtpbmdDb250ZXh0LmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
YXRlTm90aWZpZXIuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5o
IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjA3LDcgKzIwNyw3IEBA
IF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yRDFFdgogX19aTjdXZWJDb3JlMTJjYWNoZVN0b3Jh
Z2VFdgogX19aTjdXZWJDb3JlMTJjcmVhdGVNYXJrdXBFUEtOU180Tm9kZUVOU18xM0VDaGlsZHJl
bk9ubHlFUE4zV1RGNlZlY3RvcklQUzBfTG0wRUVFTlNfMTNFQWJzb2x1dGVVUkxzRVBOUzVfSU5T
XzEzUXVhbGlmaWVkTmFtZUVMbTBFRUUKIF9fWk43V2ViQ29yZTEyY3JlYXRlTWFya3VwRVBLTlNf
NVJhbmdlRVBOM1dURjZWZWN0b3JJUE5TXzROb2RlRUxtMEVFRU5TXzIzRUFubm90YXRlRm9ySW50
ZXJjaGFuZ2VFYk5TXzEzRUFic29sdXRlVVJMc0UKLV9fWk43V2ViQ29yZTEyZGVsZXRlQ29va2ll
RVBOU18xN05ldHdvcmtpbmdDb250ZXh0RVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdFCitfX1pO
N1dlYkNvcmUxMmRlbGV0ZUNvb2tpZUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNf
NEtVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMmdjQ29udHJvbGxlckV2CiBfX1pO
N1dlYkNvcmUxMmljb25EYXRhYmFzZUV2CiBfX1pON1dlYkNvcmUxMnRvVWludDhBcnJheUVOM0pT
QzdKU1ZhbHVlRQpAQCAtMjM2LDEwICsyMzYsMTAgQEAgX19aTjdXZWJDb3JlMTNSZXNvdXJjZUVy
cm9yQzFFUDdOU0Vycm9yCiBfX1pON1dlYkNvcmUxM1Jlc291cmNlRXJyb3JDMUVQOV9fQ0ZFcnJv
cgogX19aTjdXZWJDb3JlMTNTdHlsZWRFbGVtZW50MjJzZXRJbmxpbmVTdHlsZVByb3BlcnR5RU5T
XzEzQ1NTUHJvcGVydHlJREVSS04zV1RGNlN0cmluZ0ViCiBfX1pON1dlYkNvcmUxM1N0eWxlZEVs
ZW1lbnQyMnNldElubGluZVN0eWxlUHJvcGVydHlFTlNfMTNDU1NQcm9wZXJ0eUlERWROU18xN0NT
U1ByaW1pdGl2ZVZhbHVlOVVuaXRUeXBlc0ViCi1fX1pON1dlYkNvcmUxM2Nvb2tpZXNGb3JET01F
UE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VSTEVTNF8KK19fWk43V2ViQ29yZTEzY29v
a2llc0ZvckRPTUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfNEtVUkxFUzVfCiBf
X1pON1dlYkNvcmUxM2NyZWF0ZVdyYXBwZXJFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUds
b2JhbE9iamVjdEVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUxM2RpcmVjdG9yeU5hbWVFUktOM1dU
RjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxM2dldFJhd0Nvb2tpZXNFUE5TXzE3TmV0d29ya2luZ0Nv
bnRleHRFUktOU180S1VSTEVTNF9STjNXVEY2VmVjdG9ySU5TXzZDb29raWVFTG0wRUVFCitfX1pO
N1dlYkNvcmUxM2dldFJhd0Nvb2tpZXNFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05T
XzRLVVJMRVM1X1JOM1dURjZWZWN0b3JJTlNfNkNvb2tpZUVMbTBFRUUKIF9fWk43V2ViQ29yZTEz
dG9BcnJheUJ1ZmZlckVOM0pTQzdKU1ZhbHVlRQogX19aTjdXZWJDb3JlMTN0b0hUTUxFbGVtZW50
RVBOU18yMUZvcm1Bc3NvY2lhdGVkRWxlbWVudEUKIF9fWk43V2ViQ29yZTEzdG9KU0RPTVdpbmRv
d0VOM0pTQzdKU1ZhbHVlRQpAQCAtMjU0LDYgKzI1NCwxMCBAQCBfX1pON1dlYkNvcmUxNERvY3Vt
ZW50TG9hZGVyMTNhdHRhY2hUb0ZyCiBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTVkZXRh
Y2hGcm9tRnJhbWVFdgogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjE4YWRkQXJjaGl2ZVJl
c291cmNlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzE1QXJjaGl2ZVJlc291cmNlRUVFCiBfX1pON1dl
YkNvcmUxNFJlc291cmNlTG9hZGVyMzJkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUVS
S05TXzIzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VFCitfX1pON1dlYkNvcmUxNGNvb2tpZXNFbmFi
bGVkRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU180S1VSTEVTNV8KK19fWk43V2Vi
Q29yZTE3c2V0Q29va2llc0Zyb21ET01FUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05T
XzRLVVJMRVM1X1JLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMjFOZXR3b3JrU3RvcmFnZVNl
c3Npb24yMWRlZmF1bHRTdG9yYWdlU2Vzc2lvbkV2CitfX1pON1dlYkNvcmUyMU5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjI1c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbkV2CiBfX1pON1dlYkNvcmUyMVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTExZGVzZXJpYWxpemVFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMxXzE0
SlNHbG9iYWxPYmplY3RFUE4zV1RGNlZlY3RvcklOUzZfNlJlZlB0cklOU18xMU1lc3NhZ2VQb3J0
RUVFTG0xRUVFTlNfMjJTZXJpYWxpemF0aW9uRXJyb3JNb2RlRQogX19aTjdXZWJDb3JlMjFTZXJp
YWxpemVkU2NyaXB0VmFsdWU2Y3JlYXRlRVBOM0pTQzlFeGVjU3RhdGVFTlMxXzdKU1ZhbHVlRVBO
M1dURjZWZWN0b3JJTlM1XzZSZWZQdHJJTlNfMTFNZXNzYWdlUG9ydEVFRUxtMUVFRVBOUzZfSU5T
N19JTlM1XzExQXJyYXlCdWZmZXJFRUVMbTFFRUVOU18yMlNlcmlhbGl6YXRpb25FcnJvck1vZGVF
CiBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTZjcmVhdGVFUktOM1dURjZTdHJp
bmdFCkBAIC0yODQsNyArMjg4LDYgQEAgX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjlzZWxl
Y3RBbGxFdgogX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbkMxRVBOU181RnJhbWVFCiBfX1pO
N1dlYkNvcmUxNExvYWRlclN0cmF0ZWd5MjFyZXNvdXJjZUxvYWRTY2hlZHVsZXJFdgogX19aTjdX
ZWJDb3JlMTRQbHVnaW5Eb2N1bWVudDEwcGx1Z2luTm9kZUV2Ci1fX1pON1dlYkNvcmUxNGNvb2tp
ZXNFbmFibGVkRVBOU18xN05ldHdvcmtpbmdDb250ZXh0RVJLTlNfNEtVUkxFUzRfCiBfX1pOSzdX
ZWJDb3JlNUZyYW1lMjV0cmFja2VkUmVwYWludFJlY3RzQXNUZXh0RXYKIF9fWk43V2ViQ29yZTlG
cmFtZVZpZXcxN3NldFRyYWNrc1JlcGFpbnRzRWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMHJl
c2V0VHJhY2tlZFJlcGFpbnRzRXYKQEAgLTQ4OCw3ICs0OTEsNyBAQCBfX1pON1dlYkNvcmUxNlZp
c2libGVTZWxlY3Rpb25DMUVSS05TXzE1CiBfX1pON1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb25D
MUVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRWIKIF9fWk43V2ViQ29yZTE2Y3JlYXRlRnVsbE1hcmt1
cEVQS05TXzROb2RlRQogX19aTjdXZWJDb3JlMTZjcmVhdGVGdWxsTWFya3VwRVBLTlNfNVJhbmdl
RQotX19aTjdXZWJDb3JlMTZkZWxldGVBbGxDb29raWVzRVBOU18xN05ldHdvcmtpbmdDb250ZXh0
RQorX19aTjdXZWJDb3JlMTZkZWxldGVBbGxDb29raWVzRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNl
c3Npb25FCiBfX1pON1dlYkNvcmUxNmVuY2xvc2luZ0ludFJlY3RFUktOU185RmxvYXRSZWN0RQog
X19aTjdXZWJDb3JlMTZpc0VuZE9mUGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNf
MjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCiBfX1pON1dlYkNvcmUxNmlzVXNlclZpc2li
bGVVUkxFUDhOU1N0cmluZwpAQCAtNTExLDcgKzUxNCw2IEBAIF9fWk43V2ViQ29yZTE3U3VicmVz
b3VyY2VMb2FkZXI2Y3JlYXRlRVAKIF9fWk43V2ViQ29yZTE3Vmlld3BvcnRBcmd1bWVudHMxOWRl
cHJlY2F0ZWRUYXJnZXREUElFCiBfX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0dXJlRVBOU18x
N0pTRE9NR2xvYmFsT2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNsYXNzSW5mb0UKIF9f
Wk43V2ViQ29yZTE3b3BlblRlbXBvcmFyeUZpbGVFUktOM1dURjZTdHJpbmdFUmkKLV9fWk43V2Vi
Q29yZTE3c2V0Q29va2llc0Zyb21ET01FUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VS
TEVTNF9SS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE3dXNlclZpc2libGVTdHJpbmdFUDVO
U1VSTAogX19aTjdXZWJDb3JlMThET01XaW5kb3dFeHRlbnNpb25DMUVQTlNfNUZyYW1lRVBOU18x
NURPTVdyYXBwZXJXb3JsZEUKIF9fWk43V2ViQ29yZTE4SFRNTENvbnRlbnRFbGVtZW50NmNyZWF0
ZUVQTlNfOERvY3VtZW50RQpAQCAtNTk1LDYgKzU5Nyw3IEBAIF9fWk43V2ViQ29yZTIwcHJvdG9j
b2xJc0phdmFTY3JpcHRFUktOM1cKIF9fWk43V2ViQ29yZTIwU3BhY2VTcGxpdFN0cmluZ0RhdGFE
MUV2CiBfX1pON1dlYkNvcmUyMUJhY2tGb3J3YXJkQ29udHJvbGxlcjExaXRlbUF0SW5kZXhFaQog
X19aTjdXZWJDb3JlMjFNZW1vcnlQcmVzc3VyZUhhbmRsZXI3aW5zdGFsbEV2CitfX1pON1dlYkNv
cmUyMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjI4Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkVS
S04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIxUGxhdGZvcm1LZXlib2FyZEV2ZW50MjRkaXNh
bWJpZ3VhdGVLZXlEb3duRXZlbnRFTlNfMTNQbGF0Zm9ybUV2ZW50NFR5cGVFYgogX19aTjdXZWJD
b3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIxOXN0YXJ0UmVzb3VyY2VMb2FkZXJFUE5TXzE0UmVz
b3VyY2VMb2FkZXJFCiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjIwc2VydmVQ
ZW5kaW5nUmVxdWVzdHNFTlNfMjBSZXNvdXJjZUxvYWRQcmlvcml0eUUKQEAgLTY1MCw3ICs2NTMs
NyBAQCBfX1pON1dlYkNvcmUyM2NyZWF0ZUZyYWdtZW50RnJvbU5vZGVzRVBOCiBfX1pON1dlYkNv
cmUyM2RhdGFGb3JVUkxDb21wb25lbnRUeXBlRVA1TlNVUkxsCiBfX1pON1dlYkNvcmUyM2RlY29k
ZUhvc3ROYW1lV2l0aFJhbmdlRVA4TlNTdHJpbmc4X05TUmFuZ2UKIF9fWk43V2ViQ29yZTIzZW5j
b2RlSG9zdE5hbWVXaXRoUmFuZ2VFUDhOU1N0cmluZzhfTlNSYW5nZQotX19aTjdXZWJDb3JlMjNn
ZXRIb3N0bmFtZXNXaXRoQ29va2llc0VQTlNfMTdOZXR3b3JraW5nQ29udGV4dEVSTjNXVEY3SGFz
aFNldElOUzJfNlN0cmluZ0VOUzJfMTBTdHJpbmdIYXNoRU5TMl8xMEhhc2hUcmFpdHNJUzRfRUVF
RQorX19aTjdXZWJDb3JlMjNnZXRIb3N0bmFtZXNXaXRoQ29va2llc0VSS05TXzIxTmV0d29ya1N0
b3JhZ2VTZXNzaW9uRVJOM1dURjdIYXNoU2V0SU5TM182U3RyaW5nRU5TM18xMFN0cmluZ0hhc2hF
TlMzXzEwSGFzaFRyYWl0c0lTNV9FRUVFCiBfX1pON1dlYkNvcmUyNEJpbmFyeVByb3BlcnR5TGlz
dFdyaXRlcjE3d3JpdGVQcm9wZXJ0eUxpc3RFdgogX19aTjdXZWJDb3JlMjRDYWNoZWRSZXNvdXJj
ZUhhbmRsZUJhc2UxMXNldFJlc291cmNlRVBOU18xNENhY2hlZFJlc291cmNlRQogX19aTjdXZWJD
b3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIxMGZpcnN0Q2hpbGRFdgpAQCAtNjY5LDcgKzY3
Miw3IEBAIF9fWk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyQzIKIF9fWk43V2Vi
Q29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyRDJFdgogX19aTjdXZWJDb3JlMjRjcmVhdGVG
cmFnbWVudEZyb21NYXJrdXBFUE5TXzhEb2N1bWVudEVSS04zV1RGNlN0cmluZ0VTNV9OU18yN0Zy
YWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbkUKIF9fWk43V2ViQ29yZTI0ZGVjb2RlVVJMRXNjYXBl
U2VxdWVuY2VzRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMjRkZWxldGVDb29raWVzRm9y
SG9zdG5hbWVFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOM1dURjZTdHJpbmdFCitfX1pON1dl
YkNvcmUyNGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNz
aW9uRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjRmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b25FUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyNG5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdl
ZEUKIF9fWk43V2ViQ29yZTI1SGlzdG9yeVByb3BlcnR5TGlzdFdyaXRlcjExcmVsZWFzZURhdGFF
dgpAQCAtNjk2LDEwICs2OTksOSBAQCBfX1pON1dlYkNvcmUyN0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvCiBfX1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazE0c2V0T3Jp
ZW50YXRpb25FTjNXVEYxMFBhc3NSZWZQdHJJTlNfMjFEZXZpY2VPcmllbnRhdGlvbkRhdGFFRUUK
IF9fWk43V2ViQ29yZTI3RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrQzFFdgogX19aTjdXZWJD
b3JlMjdzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXNFdgotX19aTjdXZWJDb3JlMjZkZWZhdWx0
Q0ZIVFRQQ29va2llU3RvcmFnZUV2CiBfX1pON1dlYkNvcmUyOGVuY29kZVdpdGhVUkxFc2NhcGVT
ZXF1ZW5jZXNFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyOHJlbW92ZUxhbmd1YWdlQ2hh
bmdlT2JzZXJ2ZXJFUHYKLV9fWk43V2ViQ29yZTI5Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWVFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VSTEVTNF8KK19fWk43V2ViQ29yZTI5
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWVFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lv
bkVSS05TXzRLVVJMRVM1XwogX19aTjdXZWJDb3JlMjlpc0NoYXJhY3RlclNtYXJ0UmVwbGFjZUV4
ZW1wdEVpYgogX19aTjdXZWJDb3JlMzBob3N0TmFtZU5lZWRzRGVjb2RpbmdXaXRoUmFuZ2VFUDhO
U1N0cmluZzhfTlNSYW5nZQogX19aTjdXZWJDb3JlMzBob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRo
UmFuZ2VFUDhOU1N0cmluZzhfTlNSYW5nZQpAQCAtMTMzMCw2ICsxMzMyLDcgQEAgX19aTks3V2Vi
Q29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U2aXNIVAogX19aTks3V2ViQ29yZTIwUmVzb3VyY2VS
ZXNwb25zZUJhc2U4bWltZVR5cGVFdgogX19aTks3V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9s
bGVyMTJmb3J3YXJkQ291bnRFdgogX19aTks3V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9sbGVy
OWJhY2tDb3VudEV2CitfX1pOSzdXZWJDb3JlMjFOZXR3b3JrU3RvcmFnZVNlc3Npb24xM2Nvb2tp
ZVN0b3JhZ2VFdgogX19aTks3V2ViQ29yZTIxUmVuZGVyTGF5ZXJDb21wb3NpdG9yMTFzY3JvbGxM
YXllckV2CiBfX1pOSzdXZWJDb3JlMjFSZW5kZXJMYXllckNvbXBvc2l0b3IxNXJvb3RSZW5kZXJM
YXllckV2CiBfX1pOSzdXZWJDb3JlMjFVc2VyQ29udGVudFVSTFBhdHRlcm43bWF0Y2hlc0VSS05T
XzRLVVJMRQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC00MzY3LDYgKzQzNjcsNyBA
QAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmNwcCcsCkBAIC00Mzg2LDcg
KzQzODcsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRp
b25DRi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZO
ZXQuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VD
Rk5ldC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9y
YWdlQ0ZOZXQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9jZi9Eb3dubG9hZEJ1bmRsZS5o
JywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzI2MjEsNiArMzI2MjEsMTAgQEAKIAkJCQkJ
PgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3Jt
XG5ldHdvcmtcTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJ
CQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXE5ldHdvcmtp
bmdDb250ZXh0LmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBAIC0zMjg0NCwxMCArMzI4NDgsNiBA
QAogCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJCQkJPC9GaWxlPgogCQkJCQk8RmlsZQot
CQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXENvb2tpZVN0b3JhZ2VD
Rk5ldC5oIgotCQkJCQkJPgotCQkJCQk8L0ZpbGU+Ci0JCQkJCTxGaWxlCiAJCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAi
CiAJCQkJCQk+CiAJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTMyOTQwLDYgKzMyOTQwLDEw
IEBACiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAi
CisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKIAkJCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGxhdGZvcm1cbmV0d29ya1xjZlxQcm94eVNlcnZlckNGTmV0LmNwcCIKIAkJCQkJCT4KIAkJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDM3LDcgKzIwMzcsNiBAQAogCQk3RUU2ODQ2MTEyRDI2RTM4MDBFNzk0MTUgLyogQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdFRTY4NDRFMTJEMjZFMzgwMEU3OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdFRTY4NDYyMTJEMjZFMzgwMEU3OTQxNSAvKiBDb29raWVKYXJDRk5ldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ0RjEyRDI2RTM4
MDBFNzk0MTUgLyogQ29va2llSmFyQ0ZOZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2MzEyRDI2RTM4
MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDUwMTJEMjZFMzgwMEU3OTQxNSAvKiBDb29r
aWVTdG9yYWdlQ0ZOZXQuY3BwICovOyB9OwotCQk3RUU2ODQ2NDEyRDI2RTM4MDBFNzk0MTUgLyog
Q29va2llU3RvcmFnZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VF
Njg0NjUxMkQyNkUzODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NTIxMkQyNkUz
ODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2
NjEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1MzEyRDI2RTM4MDBFNzk0
MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgKi87IH07CiAJCTdFRTY4NDY3MTJEMjZFMzgw
MEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1NDEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURh
dGFTdHJlYW1DRk5ldC5oICovOyB9OwpAQCAtNjA5NSw2ICs2MDk0LDggQEAKIAkJRTEzNEY1QUIx
MkVFMzQzRjAwNEVDNThEIC8qIEludFJlY3RIYXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTM0RjVBQTEyRUUzNDNGMDA0RUM1OEQgLyogSW50UmVj
dEhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMTM5ODY2MzE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTM5ODY2MTE1NDc4NDc0MDAx
RTNGNjUgLyogU3R5bGVSZXNvbHZlci5jcHAgKi87IH07CiAJCUUxMzk4NjY0MTU0Nzg0NzQwMDFF
M0Y2NSAvKiBTdHlsZVJlc29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTM5ODY2MjE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5o
ICovOyB9OworCQlFMTNFRjM0NDE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTNF
RjM0MjE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTEzRUYzNDkxNjg1MEM0
NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxM0VGMzQ3MTY4NTBDNDcwMDM0Qzgz
RiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgKi87IH07CiAJCUUxM0YwMUYxMTI3
MEUxOTAwMERGQkE3MSAvKiBDb29raWVTdG9yYWdlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEzRjAxRjAxMjcwRTE5MDAwREZCQTcxIC8qIENv
b2tpZVN0b3JhZ2VNYWMubW0gKi87IH07CiAJCUUxNDI0QzhBMTY0QjNCNEUwMEYzMkQ0MCAvKiBQ
bGF0Zm9ybUNvb2tpZUphci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTE0MjRDODkxNjRCM0I0RTAwRjMyRDQwIC8qIFBsYXRmb3JtQ29va2llSmFyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTE0MjRD
OTAxNjRCNDYwQjAwRjMyRDQwIC8qIENvb2tpZUphck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNDI0QzhGMTY0QjQ2MEIwMEYzMkQ0MCAvKiBD
b29raWVKYXJNYWMubW0gKi87IH07CkBAIC05MzcwLDcgKzkzNzEsNiBAQAogCQk3RUU2ODQ0RTEy
RDI2RTM4MDBFNzk0MTUgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NEYxMkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZUph
ckNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvb2tpZUph
ckNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTAxMkQyNkUz
ODAwRTc5NDE1IC8qIENvb2tpZVN0b3JhZ2VDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDb29raWVTdG9yYWdlQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNG
TmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tpZVN0b3JhZ2VDRk5l
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1MjEyRDI2RTM4MDBFNzk0
MTUgLyogQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTMxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybURhdGFT
dHJlYW1DRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDU0MTJE
MjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZvcm1EYXRhU3RyZWFtQ0ZOZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEzNTc2LDYgKzEzNTc2LDggQEAKIAkJRTEzNEY1QUExMkVFMzQzRjAwNEVD
NThEIC8qIEludFJlY3RIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
dFJlY3RIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMzk4NjYxMTU0Nzg0
NzQwMDFFM0Y2NSAvKiBTdHlsZVJlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0eWxlUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMTM5ODY2MjE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZVJlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUxM0VGMzQyMTY4NEVDRjQwMDM0QzgzRiAvKiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxM0VGMzQ3MTY4NTBD
NDcwMDM0QzgzRiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxM0YwMUVBMTI3MEUxMEQwMERGQkE3MSAv
KiBDb29raWVTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tp
ZVN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEzRjAxRjAxMjcwRTE5
MDAwREZCQTcxIC8qIENvb2tpZVN0b3JhZ2VNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBDb29raWVTdG9yYWdlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMTQyNEM4OTE2NEIzQjRFMDBGMzJENDAgLyogUGxhdGZvcm1Db29raWVKYXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxhdGZvcm1Db29raWVKYXIuaDsg
cGF0aCA9IG5ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE1ODMzLDYgKzE1ODM1LDcgQEAKIAkJCQkzN0REQ0Q5MjEzODQ0RkQ1MDAwOEI3
OTMgLyogTUlNRUhlYWRlci5jcHAgKi8sCiAJCQkJMzdERENEOTMxMzg0NEZENTAwMDhCNzkzIC8q
IE1JTUVIZWFkZXIuaCAqLywKIAkJCQk2MjhEMjE0QjEyMTMxRUQxMDA1NURDRkMgLyogTmV0d29y
a2luZ0NvbnRleHQuaCAqLywKKwkJCQlFMTNFRjM0MjE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmggKi8sCiAJCQkJMUE3RkE2MUEwRERBM0JCRTAwMjhGOEE1IC8qIE5l
dHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCAqLywKIAkJCQkxQTdGQTYxODBEREEzQjNBMDAyOEY4QTUg
LyogTmV0d29ya1N0YXRlTm90aWZpZXIuaCAqLywKIAkJCQk0NDc5NTgwMjE2NDNCNDdCMDAxRTBB
N0YgLyogUGFyc2VkQ29udGVudFR5cGUuY3BwICovLApAQCAtMjA0MDMsMTMgKzIwNDA2LDEzIEBA
CiAJCQkJN0VFNjg0NEUxMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmggKi8sCiAJCQkJN0VFNjg0NEYxMkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZUphckNGTmV0LmNw
cCAqLywKIAkJCQk3RUU2ODQ1MDEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0
LmNwcCAqLywKLQkJCQk3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNG
TmV0LmggKi8sCiAJCQkJN0VFNjg0NTIxMkQyNkUzODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9y
YWdlQ0ZOZXQuY3BwICovLAogCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5l
dC5jcHAgKi8sCiAJCQkJN0VFNjg0NTMxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU0MTJEMjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0
cmVhbUNGTmV0LmggKi8sCiAJCQkJN0VFNjg0NTUxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1
bkxvb3BDRi5jcHAgKi8sCiAJCQkJN0VFNjg0NTYxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1
bkxvb3BDRi5oICovLAorCQkJCUUxM0VGMzQ3MTY4NTBDNDcwMDM0QzgzRiAvKiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb25DRk5ldC5jcHAgKi8sCiAJCQkJMUFGOEUxQzExMjU2NzNFMDAwMjMwRkY3IC8q
IFByb3h5U2VydmVyQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAv
KiBSZXNvdXJjZUVycm9yLmggKi8sCiAJCQkJN0VFNjg0NTgxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlRXJyb3JDRi5jcHAgKi8sCkBAIC0yMjg5NCw3ICsyMjg5Nyw2IEBACiAJCQkJRDhCNjE1
MkYxMDMyNDk1MTAwQzg1NTRBIC8qIENvb2tpZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzM5QjVC
NjMxMzFEQUEzMjAwRjQ4RDAyIC8qIENvb2tpZXNTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzNEMDIxMkQxMzFEQjM3QjAwNDA5MUE4IC8qIENvb2tpZVN0b3JhZ2UuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTdFRTY4NDY0MTJEMjZFMzgwMEU3OTQxNSAvKiBDb29raWVTdG9yYWdlQ0ZOZXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZFNkZENDg4MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29yZGlu
YXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZEMDQwQTE5ODlDQTAwN0ZCOEM1IC8qIENv
dW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCOTc5MEU4MjA2OTIwMEIyNTk2NSAvKiBD
b3VudGVyQ29udGVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTk4Miw2ICsyNTk4NCw3IEBACiAJ
CQkJRjM3QTU2MjMxNjc5Q0Y3QjAwQzU3MDQ2IC8qIEhlYXBHcmFwaFNlcmlhbGl6ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjg4OTBBMTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCODg5MEYxNjdEMzAxNjAwMTBDREE1
IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTEzRUYz
NDQxNjg0RUNGNDAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0yOTEwMCw2ICsyOTEwMyw3IEBACiAJCQkJMEZCODg5MEIxNjdEMkZBMTAwMTBDREE1
IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCODg5
MEUxNjdEMzAxNjAwMTBDREE1IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyMDlCNDU2QjE2Nzk2QTdFMDBFNTRFNEUgLyogSlNDcnlwdG9DdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTEzRUYzNDkxNjg1MEM0NzAwMzRDODNGIC8qIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nvb2tpZUphci5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db29raWVKYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTmV0
d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvb2tpZUphci5oIgogCiAjaWYg
VVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCkBAIC00Myw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4dChjb25z
dCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CisgICAgLy8gRklYTUU6IFJldHVybmluZyAwIG1lYW5z
IGZhbGxpbmcgYmFjayB0byBkZWZhdWx0IGNvbnRleHQuIFRoYXQncyBub3QgYSBjaG9pY2UgdGhh
dCBpcyBhcHByb3ByaWF0ZSB0byBkbyBhdCBydW50aW1lCiAgICAgaWYgKCFkb2N1bWVudCkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CkBA
IC01NCw1NyArNTYsNjggQEAgc3RhdGljIE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29u
dAogICAgIHJldHVybiBsb2FkZXItPm5ldHdvcmtpbmdDb250ZXh0KCk7CiB9CiAKKyNpZiBQTEFU
Rk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCitpbmxpbmUgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzdG9yYWdlU2Vzc2lvbihjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQgPSBuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCk7CisgICAg
cmV0dXJuIGNvbnRleHQgPyBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpIDogTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKK30KKyNkZWZpbmUgU0VTU0lPTihk
b2N1bWVudCkgc3RvcmFnZVNlc3Npb24oZG9jdW1lbnQpCisjZWxzZQorI2RlZmluZSBTRVNTSU9O
KGRvY3VtZW50KSBOZXR3b3JrU3RvcmFnZVNlc3Npb24obmV0d29ya2luZ0NvbnRleHQoZG9jdW1l
bnQpKQorI2VuZGlmCisKIFN0cmluZyBjb29raWVzKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgS1VSTCYgdXJsKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAgIHJl
dHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmNvb2tpZXNGb3JE
T00obmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgdXJsKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNT
dHJhdGVneSgpLT5jb29raWVzRm9yRE9NKFNFU1NJT04oZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsKICNlbHNlCi0gICAgcmV0dXJuIGNvb2tpZXNGb3JE
T00obmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgdXJsKTsKKyAgICByZXR1cm4gY29va2llc0ZvckRPTShTRVNTSU9OKGRvY3VtZW50
KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVybCk7CiAjZW5kaWYKIH0KIAog
dm9pZCBzZXRDb29raWVzKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykK
LSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPnNldENvb2tpZXNG
cm9tRE9NKG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlG
b3JDb29raWVzKCksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+Y29va2llc1N0cmF0ZWd5KCktPnNldENvb2tpZXNGcm9tRE9NKFNFU1NJT04oZG9jdW1lbnQp
LCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBjb29raWVTdHJpbmcpOwog
I2Vsc2UKLSAgICBzZXRDb29raWVzRnJvbURPTShuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCks
IGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZVN0cmluZyk7Cisg
ICAgc2V0Q29va2llc0Zyb21ET00oU0VTU0lPTihkb2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZVN0cmluZyk7CiAjZW5kaWYKIH0KIAogYm9vbCBj
b29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAjaWYgVVNFKFBMQVRG
T1JNX1NUUkFURUdJRVMpCi0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVz
U3RyYXRlZ3koKS0+Y29va2llc0VuYWJsZWQobmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBk
b2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgZG9jdW1lbnQtPmNvb2tpZVVSTCgpKTsK
KyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5jb29r
aWVzRW5hYmxlZChTRVNTSU9OKGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29r
aWVzKCksIGRvY3VtZW50LT5jb29raWVVUkwoKSk7CiAjZWxzZQotICAgIHJldHVybiBjb29raWVz
RW5hYmxlZChuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCBkb2N1bWVudC0+Y29va2llVVJMKCkpOworICAgIHJldHVybiBjb29raWVz
RW5hYmxlZChTRVNTSU9OKGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVz
KCksIGRvY3VtZW50LT5jb29raWVVUkwoKSk7CiAjZW5kaWYKIH0KIAogU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VS
TCYgdXJsKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAgIHJldHVybiBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFy
dHlGb3JDb29raWVzKCksIHVybCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5j
b29raWVzU3RyYXRlZ3koKS0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU0VTU0lPTihk
b2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpOwogI2Vsc2UK
LSAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUobmV0d29ya2luZ0NvbnRl
eHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsKKyAg
ICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU0VTU0lPTihkb2N1bWVudCks
IGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpOwogI2VuZGlmCiB9CiAKIGJv
b2wgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVy
bCwgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMpCiB7CiAjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJ
RVMpCi0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+
Z2V0UmF3Q29va2llcyhuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCksIGRvY3VtZW50LT5maXJz
dFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOworICAgIHJldHVybiBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmdldFJhd0Nvb2tpZXMoU0VTU0lPTihkb2N1
bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOwog
I2Vsc2UKLSAgICByZXR1cm4gZ2V0UmF3Q29va2llcyhuZXR3b3JraW5nQ29udGV4dChkb2N1bWVu
dCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOworICAg
IHJldHVybiBnZXRSYXdDb29raWVzKFNFU1NJT04oZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBjb29raWVzKTsKICNlbmRpZgogfQogCiB2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb29raWVOYW1lKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+ZGVsZXRlQ29va2llKG5l
dHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmRlbGV0ZUNvb2tpZShTRVNTSU9OKGRv
Y3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKICNlbHNlCi0gICAgZGVsZXRlQ29va2llKG5ldHdv
cmtpbmdDb250ZXh0KGRvY3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBkZWxldGVDb29r
aWUoU0VTU0lPTihkb2N1bWVudCksIHVybCwgY29va2llTmFtZSk7CiAjZW5kaWYKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxMzg0
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlSG9z
dC5oIgogI2luY2x1ZGUgIkFzeW5jRmlsZVN0cmVhbS5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gMTM4NDA3KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJDYWNoZVBvbGljeS5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJQdXJnZVByaW9yaXR5LmgiCisjaW5jbHVkZSAi
UmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0
LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAkocmV2
aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDMwICszMywyMiBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKE1B
QykgfHwgVVNFKENGTkVUV09SSykKLXR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0
b3JhZ2UqICBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgS1VSTDsKLWNsYXNzIE5ldHdvcmtpbmdDb250ZXh0OworY2xhc3MgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOwogc3RydWN0IENvb2tpZTsKIAogY2xhc3MgQ29va2llc1N0cmF0
ZWd5IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQoKSA9
IDA7CiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBS
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gZGVmYXVsdENvb2tpZVN0b3JhZ2UoKSA9
IDA7Ci0jZW5kaWYKLQotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2lu
Z0NvbnRleHQqLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmlu
ZykgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4
dCosIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmKSA9IDA7Ci0gICAgdmlydHVh
bCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOwotICAgIHZpcnR1YWwg
Ym9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+JikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiBjb29raWVOYW1lKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY29v
a2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXRS
YXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgfkNvb2tpZXNTdHJhdGVneSgpIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAkocmV2aXNpb24gMTM4
NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5k
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1
ZXN0LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOZXR3b3JrU3RvcmFnZVNlc3Np
b25faAorI2RlZmluZSBOZXR3b3JrU3RvcmFnZVNlc3Npb25faAorCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgUExBVEZP
Uk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQordHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTFN0
b3JhZ2VTZXNzaW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwordHlwZWRlZiBzdHJ1Y3QgT3Bh
cXVlQ0ZIVFRQQ29va2llU3RvcmFnZSogIENGSFRUUENvb2tpZVN0b3JhZ2VSZWY7CisjZW5kaWYK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOZXR3b3JraW5nQ29udGV4dDsKKworY2xh
c3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3
b3JrU3RvcmFnZVNlc3Npb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsK
KyAgICBzdGF0aWMgUGFzc093blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IGNyZWF0ZVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyQmFzZSk7CisKKyAgICBz
dGF0aWMgdm9pZCBzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7CisKKyNpZiBQTEFURk9STShN
QUMpIHx8IFVTRShDRk5FVFdPUkspCisgICAgLy8gTWF5IGJlIG51bGwsIGluIHdoaWNoIGNhc2Ug
YSBGb3VuZGF0aW9uIGRlZmF1bHQgc2hvdWxkIGJlIHVzZWQuCisgICAgQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZiBwbGF0Zm9ybVNlc3Npb24oKSB7IHJldHVybiBtX3BsYXRmb3JtU2Vzc2lvbi5nZXQo
KTsgfQorICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdl
KCkgY29uc3Q7CisgICAgYm9vbCBpc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSBjb25zdCB7IHJl
dHVybiBtX2lzUHJpdmF0ZTsgfQorI2Vsc2UKKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24oTmV0
d29ya2luZ0NvbnRleHQqKTsKKyAgICB+TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCk7CisgICAgTmV0
d29ya2luZ0NvbnRleHQqIGNvbnRleHQoKSBjb25zdDsKKyNlbmRpZgorCitwcml2YXRlOgorI2lm
IFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Np
b24oQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBwbGF0Zm9ybVNlc3Npb24pOworICAgIE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbigpOworICAgIFJldGFpblB0cjxDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmPiBt
X3BsYXRmb3JtU2Vzc2lvbjsKKyAgICBib29sIG1faXNQcml2YXRlOworI2Vsc2UKKyAgICBSZWZQ
dHI8TmV0d29ya2luZ0NvbnRleHQ+IG1fY29udGV4dDsKKyNlbmRpZgorfTsKKworI2lmIFBMQVRG
T1JNKFdJTikKKy8vIE5lZWRlZCBmb3IgV2ViS2l0MSBBUEkgb25seS4KK3ZvaWQgb3ZlcnJpZGVD
b29raWVTdG9yYWdlKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYpOworQ0ZIVFRQQ29va2llU3RvcmFn
ZVJlZiBvdmVycmlkZW5Db29raWVTdG9yYWdlKCk7CisjZW5kaWYKKworfQorCisjZW5kaWYgLy8g
TmV0d29ya1N0b3JhZ2VTZXNzaW9uX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uU3R1Yi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmgiCisKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCisg
ICAgOiBtX2NvbnRleHQoY29udGV4dCkKK3sKK30KKworTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjp+
TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkKK3sKK30KKworTmV0d29ya2luZ0NvbnRleHQqIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6Y29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY29udGV4
dC5nZXQoKTsKK30KKworUGFzc093blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihjb25zdCBTdHJpbmcm
KQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOworfQorCitOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VT
ZXNzaW9uKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biwgc2Vzc2lvbiwgKDApKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKK30KKwordm9pZCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKQoreworfQorCit9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JraW5n
Q29udGV4dC5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDcgKzIwLDkg
QEAKICNpZm5kZWYgTmV0d29ya2luZ0NvbnRleHRfaAogI2RlZmluZSBOZXR3b3JraW5nQ29udGV4
dF9oCiAKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lmIFBMQVRGT1JN
KE1BQykKICNpbmNsdWRlICJTY2hlZHVsZVBhaXIuaCIKQEAgLTQwLDEwICs0Miw2IEBAIGNsYXNz
IFdlYkNvb2tpZUphcjsKIE9CSkNfQ0xBU1MgTlNPcGVyYXRpb25RdWV1ZTsKICNlbmRpZgogCi0j
aWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQotdHlwZWRlZiBjb25zdCBzdHJ1Y3Qg
X19DRlVSTFN0b3JhZ2VTZXNzaW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwotI2VuZGlmCi0K
ICNpZiBQTEFURk9STShRVCkKIFFUX0JFR0lOX05BTUVTUEFDRQogY2xhc3MgUU9iamVjdDsKQEAg
LTY4LDYgKzY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCisgICAgLy8gRklYTUU6
IFdyYXAgV2ViQ29va2llSmFyIGludG8gYSBOZXR3b3JrU3RvcmFnZVNlc3Npb24gdG8gbWFrZSB0
aGUgY29kZSBjcm9zcy1wbGF0Zm9ybS4KICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViQ29va2llSmFy
KiBjb29raWVKYXIoKSBjb25zdCA9IDA7CiAjZW5kaWYKIApAQCAtODAsMTEgKzc5LDEyIEBAIHB1
YmxpYzoKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQotICAg
IHZpcnR1YWwgYm9vbCBpblByaXZhdGVCcm93c2luZ01vZGUoKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgPSAwOwor
CisgICAgdmlydHVhbCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29u
c3QgPSAwOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShRVCkKKyAgICAvLyBGSVhNRTogV3JhcCBR
TmV0d29ya0FjY2Vzc01hbmFnZXIgaW50byBhIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB0byBtYWtl
IHRoZSBjb2RlIGNyb3NzLXBsYXRmb3JtLgogICAgIHZpcnR1YWwgUU9iamVjdCogb3JpZ2luYXRp
bmdPYmplY3QoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBRTmV0d29ya0FjY2Vzc01hbmFnZXIq
IG5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBtaW1l
U25pZmZpbmdFbmFibGVkKCkgY29uc3QgPSAwOwpAQCAtOTgsNiArOTgsNyBAQCBwdWJsaWM6CiAj
ZW5kaWYKIAogI2lmIFVTRShTT1VQKQorICAgIC8vIEZJWE1FOiBXcmFwIFNvdXBTZXNzaW9uIGlu
dG8gYSBOZXR3b3JrU3RvcmFnZVNlc3Npb24gdG8gbWFrZSB0aGUgY29kZSBjcm9zcy1wbGF0Zm9y
bS4KICAgICB2aXJ0dWFsIFNvdXBTZXNzaW9uKiBzb3VwU2Vzc2lvbigpIGNvbnN0ID0gMDsKICAg
ICB2aXJ0dWFsIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdlSUQoKSBjb25zdCA9IDA7CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3Jt
Q29va2llSmFyLmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTkgKzM0
LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEtVUkw7Ci1jbGFzcyBOZXR3b3Jr
aW5nQ29udGV4dDsKK2NsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIHN0cnVjdCBDb29raWU7
CiAKIC8vIElmIG5ldHdvcmtpbmcgY29udGV4dCBpcyBudWxsLCBkZWZhdWx0IGNvb2tpZSBzdG9y
YWdlIGlzIHVzZWQuCi1TdHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCosIGNv
bnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmKTsKLXZvaWQgc2V0Q29va2llc0Zyb21E
T00oTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJik7Ci1ib29sIGNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0
KiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpOwotU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYpOwotYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250
ZXh0KiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+
Jik7Ci12b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmKTsKLXZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya2luZ0Nv
bnRleHQqLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcyk7Ci12b2lkIGRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpOwot
dm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0Kik7CitTdHJpbmcgY29va2ll
c0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJik7Cit2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBjb25z
dCBTdHJpbmcmKTsKK2Jvb2wgY29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpOworU3RyaW5nIGNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmKTsKK2Jvb2wgZ2V0UmF3Q29va2llcyhj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJiwgVmVjdG9yPENvb2tpZT4mKTsKK3ZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKTsKK3ZvaWQgZ2V0
SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNl
dDxTdHJpbmc+JiBob3N0bmFtZXMpOwordm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7Cit2b2lk
IGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJik7CiAKIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhh
bmRsZS5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBA
CiAKICNpbmNsdWRlICJCbG9iUmVnaXN0cnkuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5j
bHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVu
dC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuaAkocmV2
aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxMyArMjYsMTMgQEAKICNpZm5kZWYgUmVz
b3VyY2VIYW5kbGVfaAogI2RlZmluZSBSZXNvdXJjZUhhbmRsZV9oCiAKLSNpbmNsdWRlICJBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2xpZW50Lmgi
CiAjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgotI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0
LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CiAKICNpZiBVU0UoU09VUCkKK3R5cGVkZWYgc3RydWN0IF9HVGxzQ2VydGlmaWNhdGUgR1Rsc0Nl
cnRpZmljYXRlOwogdHlwZWRlZiBzdHJ1Y3QgX1NvdXBTZXNzaW9uIFNvdXBTZXNzaW9uOwogdHlw
ZWRlZiBzdHJ1Y3QgX1NvdXBSZXF1ZXN0IFNvdXBSZXF1ZXN0OwogI2VuZGlmCkBAIC03OCw2ICs3
OCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogY2xhc3MgQ3JlZGVudGlhbDsK
IGNsYXNzIEZyYW1lOwogY2xhc3MgS1VSTDsKK2NsYXNzIE5ldHdvcmtpbmdDb250ZXh0OwogY2xh
c3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNl
SGFuZGxlQ2xpZW50OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9D
b29raWVKYXJDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZOZXQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw5ICsyOSw4IEBACiAjaWYgVVNFKENGTkVUV09SSykKIAogI2luY2x1ZGUg
IkNvb2tpZS5oIgotI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2VDRk5ldC5oIgogI2luY2x1ZGUgIktV
UkwuaCIKLSNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIk5ldHdvcmtT
dG9yYWdlU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAi
U29mdExpbmtpbmcuaCIKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIVFRQQ29va2llc1ByaXYuaD4K
QEAgLTk1LDE1ICs5NCwxMiBAQCBzdGF0aWMgUmV0YWluUHRyPENGQXJyYXlSZWY+IGZpbHRlckNv
b2tpCiAgICAgcmV0dXJuIGZpbHRlcmVkQ29va2llczsKIH0KIAotdm9pZCBzZXRDb29raWVzRnJv
bURPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBzZXRDb29raWVzRnJv
bURPTShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyA8cmRh
cjovL3Byb2JsZW0vNTYzMjg4Mz4gQ0ZIVFRQQ29va2llU3RvcmFnZSBzdG9yZXMgYW4gZW1wdHkg
Y29va2llLCB3aGljaCB3b3VsZCBiZSBzZW50IGFzICJDb29raWU6ID0iLgogICAgIGlmICh2YWx1
ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29r
aWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBB
U1NFUlQoY29va2llU3RvcmFnZSk7Ci0KICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybENGKEFk
b3B0Q0YsIHVybC5jcmVhdGVDRlVSTCgpKTsKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGZpcnN0
UGFydHlGb3JDb29raWVzQ0YoQWRvcHRDRiwgZmlyc3RQYXJ0eS5jcmVhdGVDRlVSTCgpKTsKIApA
QCAtMTE5LDU0ICsxMTUsNDMgQEAgdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29u
dGV4dAogICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQ
Q29va2llQ3JlYXRlV2l0aFJlc3BvbnNlSGVhZGVyRmllbGRzKGtDRkFsbG9jYXRvckRlZmF1bHQs
CiAgICAgICAgIGhlYWRlckZpZWxkc0NGLmdldCgpLCB1cmxDRi5nZXQoKSkpOwogCi0gICAgQ0ZI
VFRQQ29va2llU3RvcmFnZVNldENvb2tpZXMoY29va2llU3RvcmFnZS5nZXQoKSwgZmlsdGVyQ29v
a2llcyhjb29raWVzQ0YuZ2V0KCkpLmdldCgpLCB1cmxDRi5nZXQoKSwgZmlyc3RQYXJ0eUZvckNv
b2tpZXNDRi5nZXQoKSk7CisgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZXMoc2Vzc2lv
bi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIGZpbHRlckNvb2tpZXMoY29va2llc0NGLmdldCgpKS5n
ZXQoKSwgdXJsQ0YuZ2V0KCksIGZpcnN0UGFydHlGb3JDb29raWVzQ0YuZ2V0KCkpOwogfQogCi1T
dHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VS
TCYsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBS
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQg
PyBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29r
aWVTdG9yYWdlKCk7Ci0gICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwotCiAgICAgUmV0YWluUHRy
PENGVVJMUmVmPiB1cmxDRihBZG9wdENGLCB1cmwuY3JlYXRlQ0ZVUkwoKSk7CiAKICAgICBib29s
IHNlY3VyZSA9IHVybC5wcm90b2NvbElzKCJodHRwcyIpOwotICAgIFJldGFpblB0cjxDRkFycmF5
UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzRm9y
VVJMKGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHVybENGLmdldCgpLCBzZWN1cmUpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZBcnJheVJlZj4gY29va2llc0NGKEFkb3B0Q0YsIENGSFRUUENvb2tpZVN0b3JhZ2VD
b3B5Q29va2llc0ZvclVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsQ0YuZ2V0
KCksIHNlY3VyZSkpOwogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGhlYWRlckNGKEFk
b3B0Q0YsIENGSFRUUENvb2tpZUNvcHlSZXF1ZXN0SGVhZGVyRmllbGRzKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIGZpbHRlckNvb2tpZXMoY29va2llc0NGLmdldCgpKS5nZXQoKSkpOwogICAgIHJldHVy
biAoQ0ZTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoaGVhZGVyQ0YuZ2V0KCksIHNfY29v
a2llQ0YpOwogfQogCi1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBL
VVJMJiB1cmwpCitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3Qg
S1VSTCYgdXJsKQogewotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29r
aWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQp
IDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFn
ZSk7Ci0KICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybENGKEFkb3B0Q0YsIHVybC5jcmVhdGVD
RlVSTCgpKTsKIAogICAgIGJvb2wgc2VjdXJlID0gdXJsLnByb3RvY29sSXMoImh0dHBzIik7Ci0g
ICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVT
dG9yYWdlQ29weUNvb2tpZXNGb3JVUkwoY29va2llU3RvcmFnZS5nZXQoKSwgdXJsQ0YuZ2V0KCks
IHNlY3VyZSkpOworICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwg
Q0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzRm9yVVJMKHNlc3Npb24uY29va2llU3RvcmFn
ZSgpLmdldCgpLCB1cmxDRi5nZXQoKSwgc2VjdXJlKSk7CiAgICAgUmV0YWluUHRyPENGRGljdGlv
bmFyeVJlZj4gaGVhZGVyQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llQ29weVJlcXVlc3RIZWFkZXJG
aWVsZHMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY29va2llc0NGLmdldCgpKSk7CiAgICAgcmV0dXJu
IChDRlN0cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShoZWFkZXJDRi5nZXQoKSwgc19jb29r
aWVDRik7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQorYm9v
bCBjb29raWVzRW5hYmxlZChOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQogewotICAgIFJldGFpblB0
cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJl
bnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3Jh
Z2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7Ci0KLSAgICBDRkhUVFBDb29raWVTdG9y
YWdlQWNjZXB0UG9saWN5IHBvbGljeSA9IENGSFRUUENvb2tpZVN0b3JhZ2VHZXRDb29raWVBY2Nl
cHRQb2xpY3koY29va2llU3RvcmFnZS5nZXQoKSk7CisgICAgQ0ZIVFRQQ29va2llU3RvcmFnZUFj
Y2VwdFBvbGljeSBwb2xpY3kgPSBDRkhUVFBDb29raWVTdG9yYWdlR2V0Q29va2llQWNjZXB0UG9s
aWN5KHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpKTsKICAgICByZXR1cm4gcG9saWN5ID09
IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFp
biB8fCBwb2xpY3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeUFsd2F5czsKIH0K
IAotYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBL
VVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3
Q29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxD
b29raWU+JiByYXdDb29raWVzKQogewogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKLSAgICBSZXRh
aW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBj
dXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVT
dG9yYWdlKCk7Ci0gICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwogCiAgICAgUmV0YWluUHRyPENG
VVJMUmVmPiB1cmxDRihBZG9wdENGLCB1cmwuY3JlYXRlQ0ZVUkwoKSk7CiAKICAgICBib29sIHNl
bmRTZWN1cmVDb29raWVzID0gdXJsLnByb3RvY29sSXMoImh0dHBzIik7Ci0gICAgUmV0YWluUHRy
PENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVTdG9yYWdlQ29weUNv
b2tpZXNGb3JVUkwoY29va2llU3RvcmFnZS5nZXQoKSwgdXJsQ0YuZ2V0KCksIHNlbmRTZWN1cmVD
b29raWVzKSk7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBD
RkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdl
KCkuZ2V0KCksIHVybENGLmdldCgpLCBzZW5kU2VjdXJlQ29va2llcykpOwogCiAgICAgQ0ZJbmRl
eCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChjb29raWVzQ0YuZ2V0KCkpOwogICAgIHJhd0Nvb2tp
ZXMucmVzZXJ2ZUNhcGFjaXR5KGNvdW50KTsKQEAgLTE5MCwxMCArMTc1LDkgQEAgYm9vbCBnZXRS
YXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjbwogICAgIHJldHVybiB0cnVlOwogfQogCi12
b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lKQog
ewotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0g
Y29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENG
SFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7CisgICAgUmV0
YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBzZXNzaW9uLmNv
b2tpZVN0b3JhZ2UoKTsKIAogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsQ0YoQWRvcHRDRiwg
dXJsLmNyZWF0ZUNGVVJMKCkpOwogCkBAIC0yMTAsMTIgKzE5NCw5IEBAIHZvaWQgZGVsZXRlQ29v
a2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb24KICAgICB9CiB9CiAKLXZvaWQgZ2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIEhhc2hTZXQ8U3RyaW5nPiYg
aG9zdG5hbWVzKQordm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQogewotICAgIFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1
cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0
b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZB
cnJheVJlZj4gY29va2llc0NGKEFkb3B0Q0YsIENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2ll
cyhjb29raWVTdG9yYWdlLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tp
ZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXMoc2Vzc2lvbi5jb29r
aWVTdG9yYWdlKCkuZ2V0KCkpKTsKICAgICBpZiAoIWNvb2tpZXNDRikKICAgICAgICAgcmV0dXJu
OwogCkBAIC0yMjcsMTAgKzIwOCw5IEBAIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0
d29ya2luZ0MKICAgICB9CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdv
cmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQordm9pZCBkZWxl
dGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBTdHJpbmcmIGhvc3RuYW1lKQogewotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdl
UmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdl
KGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29v
a2llU3RvcmFnZSk7CisgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tp
ZVN0b3JhZ2UgPSBzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKTsKIAogICAgIFJldGFpblB0cjxDRkFy
cmF5UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVz
KGNvb2tpZVN0b3JhZ2UuZ2V0KCkpKTsKICAgICBpZiAoIWNvb2tpZXNDRikKQEAgLTI0NSwxMiAr
MjI1LDkgQEAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZwogICAgIH0K
IH0KIAotdm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQor
dm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKIHsK
LSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNv
bnRleHQgPyBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhU
VFBDb29raWVTdG9yYWdlKCk7Ci0gICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwotCi0gICAgQ0ZI
VFRQQ29va2llU3RvcmFnZURlbGV0ZUFsbENvb2tpZXMoY29va2llU3RvcmFnZS5nZXQoKSk7Cisg
ICAgQ0ZIVFRQQ29va2llU3RvcmFnZURlbGV0ZUFsbENvb2tpZXMoc2Vzc2lvbi5jb29raWVTdG9y
YWdlKCkuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdl
Q0ZOZXQuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDkg
KzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb29raWVTdG9yYWdlLmgi
CiAKLSNpbmNsdWRlICJDb29raWVTdG9yYWdlQ0ZOZXQuaCIKLQotI2luY2x1ZGUgIlJlc291cmNl
SGFuZGxlLmgiCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTQ4LDU2ICs0Niw2IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFBMQVRGT1JNKFdJTikKIAotc3RhdGljIFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiYgY29va2llU3RvcmFnZU92ZXJyaWRlKCkKLXsK
LSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVm
PiwgY29va2llU3RvcmFnZSwgKCkpOwotICAgIHJldHVybiBjb29raWVTdG9yYWdlOwotfQotCi0j
ZW5kaWYKLQotUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGN1cnJlbnRDRkhUVFBD
b29raWVTdG9yYWdlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQotewotI2lmIFBMQVRGT1JN
KFdJTikKLSAgICBpZiAoUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiBvdmVycmlk
ZSA9IGNvb2tpZVN0b3JhZ2VPdmVycmlkZSgpKQotICAgICAgICByZXR1cm4gb3ZlcnJpZGU7Ci0j
ZW5kaWYKLQotICAgIGlmIChDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHNlc3Npb24gPSBjb250ZXh0
LT5zdG9yYWdlU2Vzc2lvbigpKQotICAgICAgICByZXR1cm4gUmV0YWluUHRyPENGSFRUUENvb2tp
ZVN0b3JhZ2VSZWY+KEFkb3B0Q0YsIHdrQ29weUhUVFBDb29raWVTdG9yYWdlKHNlc3Npb24pKTsK
LQotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgcmV0dXJuIHdrR2V0RGVmYXVsdEhUVFBDb29raWVT
dG9yYWdlKCk7Ci0jZWxzZQotICAgIC8vIFdoZW4gdXNpbmcgTlNVUkxDb25uZWN0aW9uLCB3ZSBh
bHNvIHVzZSBpdHMgc2hhcmVkIGNvb2tpZSBzdG9yYWdlLgotICAgIHJldHVybiAwOwotI2VuZGlm
Ci19Ci0KLVJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBkZWZhdWx0Q0ZIVFRQQ29v
a2llU3RvcmFnZSgpCi17Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIGlmIChSZXRhaW5QdHI8Q0ZI
VFRQQ29va2llU3RvcmFnZVJlZj4mIG92ZXJyaWRlID0gY29va2llU3RvcmFnZU92ZXJyaWRlKCkp
Ci0gICAgICAgIHJldHVybiBvdmVycmlkZTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIHBsYXRmb3Jt
U3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+ZGVmYXVsdENvb2tpZVN0b3JhZ2UoKTsK
LX0KLQotI2lmIFBMQVRGT1JNKFdJTikKLQotdm9pZCBvdmVycmlkZUNvb2tpZVN0b3JhZ2UoQ0ZI
VFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKQotewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7Ci0gICAgLy8gRklYTUU6IFdoeSBkb24ndCB3ZSByZXRhaW4gaXQ/IFRoZSBvbmx5
IGNhbGxlciBpcyBhbiBBUEkgbWV0aG9kIHRoYXQgdGFrZXMgY29va2llIHN0b3JhZ2UgYXMgYSBy
YXcgYXJndW1lbnQuCi0gICAgY29va2llU3RvcmFnZU92ZXJyaWRlKCkuYWRvcHRDRihjb29raWVT
dG9yYWdlKTsKLX0KLQotQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBvdmVycmlkZW5Db29raWVTdG9y
YWdlKCkKLXsKLSAgICByZXR1cm4gY29va2llU3RvcmFnZU92ZXJyaWRlKCkuZ2V0KCk7Ci19Ci0K
IHN0YXRpYyB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkT25NYWluVGhyZWFkKHZvaWQqKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC0xMzAsNyArNzgsNyBAQCB2b2lkIHN0YXJ0
T2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpCiAgICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBjb29r
aWVTdG9yYWdlT2JzZXJ2ZXJSdW5Mb29wKCk7CiAgICAgQVNTRVJUKHJ1bkxvb3ApOwogCi0gICAg
UmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBkZWZhdWx0
Q0ZIVFRQQ29va2llU3RvcmFnZSgpOworICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdl
UmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFn
ZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCk7CiAgICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwog
CiAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNjaGVkdWxlV2l0aFJ1bkxvb3AoY29va2llU3RvcmFn
ZS5nZXQoKSwgcnVuTG9vcCwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKQEAgLTE0NCw3ICs5Miw3
IEBAIHZvaWQgc3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKQogICAgIENGUnVuTG9vcFJlZiBy
dW5Mb29wID0gY29va2llU3RvcmFnZU9ic2VydmVyUnVuTG9vcCgpOwogICAgIEFTU0VSVChydW5M
b29wKTsKIAotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9y
YWdlID0gZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKKyAgICBSZXRhaW5QdHI8Q0ZIVFRQ
Q29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpOwogICAgIEFTU0VSVChjb29r
aWVTdG9yYWdlKTsKIAogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VSZW1vdmVPYnNlcnZlcihjb29r
aWVTdG9yYWdlLmdldCgpLCBydW5Mb29wLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUsIG5vdGlmeUNv
b2tpZXNDaGFuZ2VkLCAwKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvQ29va2llU3RvcmFnZUNGTmV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuaAkocmV2aXNpb24gMTM4NDA3KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBDb29r
aWVTdG9yYWdlQ0ZOZXRfaAotI2RlZmluZSBDb29raWVTdG9yYWdlQ0ZOZXRfaAotCi0jaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgotCi10eXBlZGVmIHN0cnVjdCBPcGFxdWVDRkhUVFBDb29raWVT
dG9yYWdlKiAgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBOZXR3b3JraW5nQ29udGV4dDsKLQotUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWY+IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKE5ldHdvcmtpbmdDb250ZXh0Kik7IC8v
IFdpbGwgYmUgbnVsbCB3aGVuIHVzaW5nIHNoYXJlZCBOU0hUVFBDb29raWVTdG9yYWdlLgotUmV0
YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdl
KCk7IC8vIERvZXNuJ3QgdGFrZSBjdXJyZW50IHNlc3Npb24gaW50byBhY2NvdW50LgotCi0jaWYg
UExBVEZPUk0oV0lOKQotLy8gTmVlZGVkIGZvciBXZWJLaXQxIEFQSSBvbmx5Lgotdm9pZCBvdmVy
cmlkZUNvb2tpZVN0b3JhZ2UoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZik7Ci1DRkhUVFBDb29raWVT
dG9yYWdlUmVmIG92ZXJyaWRlbkNvb2tpZVN0b3JhZ2UoKTsKLSNlbmRpZgotCi19Ci0KLSNlbmRp
ZiAvLyBDb29raWVTdG9yYWdlQ0ZOZXRfaApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25D
Rk5ldC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisKKyNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNl
LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitOZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbihDRlVSTFN0b3Jh
Z2VTZXNzaW9uUmVmIHBsYXRmb3JtU2Vzc2lvbikKKyAgICA6IG1fcGxhdGZvcm1TZXNzaW9uKHBs
YXRmb3JtU2Vzc2lvbikKKyAgICAsIG1faXNQcml2YXRlKGZhbHNlKQoreworfQorCitzdGF0aWMg
T3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4mIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Np
b24oKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbj4sIHNlc3Npb24sICgpKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKK30KKwordm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKQoreworICAgIC8v
IFNldCBhIHByaXZhdGUgc2Vzc2lvbiBmb3IgdGVzdGluZyB0byBhdm9pZCBpbnRlcmZlcmluZyB3
aXRoIGdsb2JhbCBjb29raWVzLiBUaGlzIHNob3VsZCBiZSBkaWZmZXJlbnQgZnJvbSBwcml2YXRl
IGJyb3dzaW5nIHNlc3Npb24uCisgICAgLy8gRklYTUU6IEl0IGxvb2tzIGxpa2UgY3JlYXRpbmcg
YSBuZXcgc2Vzc2lvbiB3aXRoIHRoZSBzYW1lIGlkZW50aWZpZXIgbWF5IGJlIGp1c3QgY3JlYXRp
bmcgYSByZWZlcmVuY2UgdG8gdGhlIHNhbWUgc3RvcmFnZS4gU2VlIDxyZGFyOi8vcHJvYmxlbS8x
MTU3MTQ1MD4gYW5kIDxyZGFyOi8vcHJvYmxlbS8xMjM4NDM4MD4uCisjaWYgUExBVEZPUk0oTUFD
KQorICAgIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSA9IGFkb3B0UHRyKG5ldyBOZXR3
b3JrU3RvcmFnZVNlc3Npb24od2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTVFIoIlBy
aXZhdGUgV2ViS2l0IFNlc3Npb24iKSkpKTsKKyNlbHNlCisgICAgZGVmYXVsdE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbigpID0gYWRvcHRQdHIobmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbih3a0NyZWF0
ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlNUUigiUHJpdmF0ZSBXZWJLaXQgU2Vzc2lvbiIpLCBk
ZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCktPnBsYXRmb3JtU2Vzc2lvbigpKSkpOworI2Vu
ZGlmCit9CisKKyNpZiBQTEFURk9STShXSU4pCitzdGF0aWMgUmV0YWluUHRyPENGSFRUUENvb2tp
ZVN0b3JhZ2VSZWY+JiBjb29raWVTdG9yYWdlT3ZlcnJpZGUoKQoreworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+LCBjb29raWVTdG9yYWdl
LCAoKSk7CisgICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2U7Cit9CisKK3ZvaWQgb3ZlcnJpZGVDb29r
aWVTdG9yYWdlKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSkKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIC8vIEZJWE1FOiBXaHkgZG9uJ3Qgd2UgcmV0YWlu
IGl0PyBUaGUgb25seSBjYWxsZXIgaXMgYW4gQVBJIG1ldGhvZCB0aGF0IHRha2VzIGNvb2tpZSBz
dG9yYWdlIGFzIGEgcmF3IGFyZ3VtZW50LgorICAgIGNvb2tpZVN0b3JhZ2VPdmVycmlkZSgpLmFk
b3B0Q0YoY29va2llU3RvcmFnZSk7Cit9CisKK0NGSFRUUENvb2tpZVN0b3JhZ2VSZWYgb3ZlcnJp
ZGVuQ29va2llU3RvcmFnZSgpCit7CisgICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2VPdmVycmlkZSgp
LmdldCgpOworfQorI2VuZGlmCisKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKQoreworICAgIHJldHVybiAqZGVmYXVs
dE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOworfQorCitQYXNzT3duUHRyPE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckJhc2UpCit7CisgICAgUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBjZklkZW50aWZpZXIgPSBTdHJpbmcoaWRlbnRpZmllckJhc2UgKyAiLlByaXZhdGVC
cm93c2luZyIpLmNyZWF0ZUNGU3RyaW5nKCk7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgT3du
UHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gc2Vzc2lvbiA9IGFkb3B0UHRyKG5ldyBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24od2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVy
LmdldCgpKSkpOworI2Vsc2UKKyAgICBPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBzZXNz
aW9uID0gYWRvcHRQdHIobmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbih3a0NyZWF0ZVByaXZhdGVT
dG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCksIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNl
c3Npb24oKS0+cGxhdGZvcm1TZXNzaW9uKCkpKSk7CisjZW5kaWYKKyAgICBzZXNzaW9uLT5tX2lz
UHJpdmF0ZSA9IHRydWU7CisKKyAgICByZXR1cm4gc2Vzc2lvbi5yZWxlYXNlKCk7Cit9CisKK1Jl
dGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNv
b2tpZVN0b3JhZ2UoKSBjb25zdAoreworI2lmIFBMQVRGT1JNKFdJTikKKyAgICBpZiAoUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiBvdmVycmlkZSA9IGNvb2tpZVN0b3JhZ2VPdmVy
cmlkZSgpKQorICAgICAgICByZXR1cm4gb3ZlcnJpZGU7CisjZW5kaWYKKworICAgIGlmIChtX3Bs
YXRmb3JtU2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9y
YWdlUmVmPihBZG9wdENGLCB3a0NvcHlIVFRQQ29va2llU3RvcmFnZShtX3BsYXRmb3JtU2Vzc2lv
bi5nZXQoKSkpOworCisjaWYgVVNFKENGTkVUV09SSykKKyAgICByZXR1cm4gd2tHZXREZWZhdWx0
SFRUUENvb2tpZVN0b3JhZ2UoKTsKKyNlbHNlCisgICAgLy8gV2hlbiB1c2luZyBOU1VSTENvbm5l
Y3Rpb24sIHdlIGFsc28gdXNlIGl0cyBzaGFyZWQgY29va2llIHN0b3JhZ2UuCisgICAgcmV0dXJu
IDA7CisjZW5kaWYKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCShyZXZpc2lvbiAx
Mzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFu
ZGxlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbkNGLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
aCIKLSNpbmNsdWRlICJDb29raWVTdG9yYWdlQ0ZOZXQuaCIKICNpbmNsdWRlICJDcmVkZW50aWFs
U3RvcmFnZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAi
Rm9ybURhdGFTdHJlYW1DRk5ldC5oIgpAQCAtMzgsNiArMzcsNyBAQAogI2luY2x1ZGUgIkxvYWRl
clJ1bkxvb3BDRi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJl
Z2lzdHJ5LmgiCisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZXNv
dXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZVJlc3BvbnNlLmgiCkBAIC0xNjUsNyArMTY1LDcgQEAgc3RhdGljIENGVVJMUmVx
dWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQwogICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBuZXdNZXRob2QgPSBhZG9wdENGKENGVVJMUmVxdWVzdENvcHlIVFRQUmVxdWVzdE1ldGhv
ZChjZlJlcXVlc3QpKTsKICAgICAgICAgICAgIGlmIChDRlN0cmluZ0NvbXBhcmVXaXRoT3B0aW9u
cyhsYXN0SFRUUE1ldGhvZC5nZXQoKSwgbmV3TWV0aG9kLmdldCgpLCBDRlJhbmdlTWFrZSgwLCBD
RlN0cmluZ0dldExlbmd0aChsYXN0SFRUUE1ldGhvZC5nZXQoKSkpLCBrQ0ZDb21wYXJlQ2FzZUlu
c2Vuc2l0aXZlKSkgewogICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRk11dGFibGVVUkxSZXF1
ZXN0UmVmPiBtdXRhYmxlUmVxdWVzdChBZG9wdENGLCBDRlVSTFJlcXVlc3RDcmVhdGVNdXRhYmxl
Q29weSgwLCBjZlJlcXVlc3QpKTsKLSAgICAgICAgICAgICAgICB3a1NldFJlcXVlc3RTdG9yYWdl
U2Vzc2lvbihoYW5kbGUtPnN0b3JhZ2VTZXNzaW9uKCksIG11dGFibGVSZXF1ZXN0LmdldCgpKTsK
KyAgICAgICAgICAgICAgICB3a1NldFJlcXVlc3RTdG9yYWdlU2Vzc2lvbihoYW5kbGUtPnN0b3Jh
Z2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCksIG11dGFibGVSZXF1ZXN0LmdldCgpKTsKICAg
ICAgICAgICAgICAgICBDRlVSTFJlcXVlc3RTZXRIVFRQUmVxdWVzdE1ldGhvZChtdXRhYmxlUmVx
dWVzdC5nZXQoKSwgbGFzdEhUVFBNZXRob2QuZ2V0KCkpOwogCiAgICAgICAgICAgICAgICAgRm9y
bURhdGEqIGJvZHkgPSBoYW5kbGUtPmZpcnN0UmVxdWVzdCgpLmh0dHBCb2R5KCk7CkBAIC0zOTks
NyArMzk5LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llUAogewog
ICAgIC8vIElmIGEgVVJMIGFscmVhZHkgaGFzIGNvb2tpZXMsIHRoZW4gd2UnbGwgcmVsYXggdGhl
IDNyZCBwYXJ0eSBjb29raWUgcG9saWN5IGFuZCBhY2NlcHQgbmV3IGNvb2tpZXMuCiAKLSAgICBS
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY2ZDb29raWVTdG9yYWdlID0gY3VycmVu
dENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCk7CisgICAgUmV0YWluUHRyPENGSFRUUENvb2tp
ZVN0b3JhZ2VSZWY+IGNmQ29va2llU3RvcmFnZSA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCku
Y29va2llU3RvcmFnZSgpOwogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kgY29v
a2llQWNjZXB0UG9saWN5ID0gQ0ZIVFRQQ29va2llU3RvcmFnZUdldENvb2tpZUFjY2VwdFBvbGlj
eShjZkNvb2tpZVN0b3JhZ2UuZ2V0KCkpOwogCiAgICAgaWYgKGNvb2tpZUFjY2VwdFBvbGljeSAh
PSBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21h
aW4pCkBAIC01MDYsNyArNTA2LDcgQEAgYm9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoTmV0d29y
a2luZ0NvbgogICAgIGlmICghY29udGV4dC0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBkLT5tX3N0b3JhZ2VTZXNzaW9uID0gY29udGV4dC0+c3RvcmFnZVNlc3Npb24o
KTsKKyAgICBkLT5tX3N0b3JhZ2VTZXNzaW9uID0gY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5w
bGF0Zm9ybVNlc3Npb24oKTsKIAogICAgIGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2Ug
PSAhY2xpZW50KCkgfHwgY2xpZW50KCktPnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKHRoaXMp
OwogCkBAIC03NDEsNyArNzQxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNl
U3luY2hybwogCiAgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBhZG9wdFJlZihu
ZXcgUmVzb3VyY2VIYW5kbGUocmVxdWVzdCwgY2xpZW50LmdldCgpLCBmYWxzZSAvKmRlZmVyc0xv
YWRpbmcqLywgdHJ1ZSAvKnNob3VsZENvbnRlbnRTbmlmZiovKSk7CiAKLSAgICBoYW5kbGUtPmQt
Pm1fc3RvcmFnZVNlc3Npb24gPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpOworICAgIGhhbmRs
ZS0+ZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZv
cm1TZXNzaW9uKCk7CiAKICAgICBpZiAoaGFuZGxlLT5kLT5tX3NjaGVkdWxlZEZhaWx1cmVUeXBl
ICE9IE5vRmFpbHVyZSkgewogICAgICAgICBlcnJvciA9IGNvbnRleHQtPmJsb2NrZWRFcnJvcihy
ZXF1ZXN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0v
Q29va2llSmFyQ2hyb21pdW0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMzg0
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL0Nvb2tpZUph
ckNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNTUgKzQxLDU1IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNv
b2tpZXMsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpCiB7Ci0gICAg
aWYgKCFjb250ZXh0KQorICAgIGlmICghc2Vzc2lvbi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBXZWJLaXQ6OldlYkNvb2tpZUphciogY29va2llSmFyID0gY29udGV4dC0+Y29va2ll
SmFyKCk7CisgICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9IHNlc3Npb24uY29u
dGV4dCgpLT5jb29raWVKYXIoKTsKICAgICBpZiAoY29va2llSmFyKQogICAgICAgICBjb29raWVK
YXItPnNldENvb2tpZSh1cmwsIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb29raWVTdHIpOwogfQog
Ci1TdHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3Qg
S1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29r
aWVzRm9yRE9NKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBpZiAoIWNvbnRleHQp
CisgICAgaWYgKCFzZXNzaW9uLmNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
ICAgIFN0cmluZyByZXN1bHQ7Ci0gICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9
IGNvbnRleHQtPmNvb2tpZUphcigpOworICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVK
YXIgPSBzZXNzaW9uLmNvbnRleHQoKS0+Y29va2llSmFyKCk7CiAgICAgaWYgKGNvb2tpZUphcikK
ICAgICAgICAgcmVzdWx0ID0gY29va2llSmFyLT5jb29raWVzKHVybCwgZmlyc3RQYXJ0eUZvckNv
b2tpZXMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgaWYgKCFj
b250ZXh0KQorICAgIGlmICghc2Vzc2lvbi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKICAgICBTdHJpbmcgcmVzdWx0OwotICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29r
aWVKYXIgPSBjb250ZXh0LT5jb29raWVKYXIoKTsKKyAgICBXZWJLaXQ6OldlYkNvb2tpZUphciog
Y29va2llSmFyID0gc2Vzc2lvbi5jb250ZXh0KCktPmNvb2tpZUphcigpOwogICAgIGlmIChjb29r
aWVKYXIpCiAgICAgICAgIHJlc3VsdCA9IGNvb2tpZUphci0+Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUodXJsLCBmaXJzdFBhcnR5Rm9yQ29va2llcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29u
c3QgS1VSTCYgY29va2llVVJMLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcykKK2Jv
b2wgY29va2llc0VuYWJsZWQoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiBjb29raWVVUkwsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzKQogewogICAg
IGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgaWYgKCFjb250ZXh0KQorICAgIGlmICghc2Vzc2lv
bi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgV2ViS2l0OjpXZWJDb29r
aWVKYXIqIGNvb2tpZUphciA9IGNvbnRleHQtPmNvb2tpZUphcigpOworICAgIFdlYktpdDo6V2Vi
Q29va2llSmFyKiBjb29raWVKYXIgPSBzZXNzaW9uLmNvbnRleHQoKS0+Y29va2llSmFyKCk7CiAg
ICAgaWYgKGNvb2tpZUphcikKICAgICAgICAgcmVzdWx0ID0gY29va2llSmFyLT5jb29raWVzRW5h
YmxlZChjb29raWVVUkwsIGZpcnN0UGFydHlGb3JDb29raWVzKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEtVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxD
b29raWU+JiByYXdDb29raWVzKQorYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtV
UkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmF3Q29va2llcy5j
bGVhcigpOwotICAgIGlmICghY29udGV4dCkKKyAgICBpZiAoIXNlc3Npb24uY29udGV4dCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgV2ViS2l0OjpXZWJWZWN0b3I8V2ViS2l0OjpXZWJD
b29raWU+IHdlYkNvb2tpZXM7Ci0gICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9
IGNvbnRleHQtPmNvb2tpZUphcigpOworICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVK
YXIgPSBzZXNzaW9uLmNvbnRleHQoKS0+Y29va2llSmFyKCk7CiAgICAgaWYgKGNvb2tpZUphcikK
ICAgICAgICAgY29va2llSmFyLT5yYXdDb29raWVzKHVybCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMs
IHdlYkNvb2tpZXMpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB3ZWJDb29raWVzLnNp
emUoKTsgKytpKSB7CkBAIC0xMDAsMjYgKzEwMCwyNiBAQCBib29sIGdldFJhd0Nvb2tpZXMoTmV0
d29ya2luZ0NvbnRleHQqIGNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgZGVsZXRlQ29v
a2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgY29va2llTmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7
Ci0gICAgaWYgKCFjb250ZXh0KQorICAgIGlmICghc2Vzc2lvbi5jb250ZXh0KCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBXZWJLaXQ6OldlYkNvb2tpZUphciogY29va2llSmFyID0gY29udGV4dC0+
Y29va2llSmFyKCk7CisgICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9IHNlc3Np
b24uY29udGV4dCgpLT5jb29raWVKYXIoKTsKICAgICBpZiAoY29va2llSmFyKQogICAgICAgICBj
b29raWVKYXItPmRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUpOwogfQogCi12b2lkIGdldEhv
c3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiAvKmNvbnRleHQqLywgSGFzaFNl
dDxTdHJpbmc+JiAvKmhvc3RuYW1lcyovKQordm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBIYXNoU2V0PFN0cmluZz4mIC8qaG9zdG5hbWVzKi8pCiB7
CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxldGVDb29r
aWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZ0NvbnRleHQqIC8qY29udGV4dCovLCBjb25zdCBTdHJp
bmcmIC8qaG9zdG5hbWUqLykKK3ZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYgLypob3N0bmFtZSovKQogewogICAgIC8vIEZJ
WE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRlQWxsQ29va2llcyhOZXR3
b3JraW5nQ29udGV4dCogLypjb250ZXh0Ki8pCit2b2lkIGRlbGV0ZUFsbENvb2tpZXMoTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJikKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9SZXNvdXJj
ZUhhbmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jaHJvbWl1bS9SZXNvdXJjZUhhbmRsZS5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3VyY2VIYW5kbGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKIAorI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0Lmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhh
bmRsZUludGVybmFsLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1
cmwuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDUwICsyNyw1
MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiBjb29raWVKYXI7CiAKLXZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQordm9p
ZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwg
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIGNvb2tpZUphci5z
ZXQodXJsLnN0cmluZygpLCB2YWx1ZSk7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKE5ldHdv
cmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29r
aWVzRm9yRE9NKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJM
JiB1cmwpCiB7CiAgICAgcmV0dXJuIGNvb2tpZUphci5nZXQodXJsLnN0cmluZygpKTsKIH0KIAot
U3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQorU3Ry
aW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgLy8g
RklYTUU6IGluY2x1ZGUgSHR0cE9ubHkgY29va2llLgogICAgIHJldHVybiBjb29raWVKYXIuZ2V0
KHVybC5zdHJpbmcoKSk7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVy
bCovKQorYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBL
VVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKIHsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLywgVmVjdG9y
PENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8s
IFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGlt
cGxlbWVudGVkCiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIHJldHVybiBmYWxzZTsgLy8g
cmV0dXJuIHRydWUgd2hlbiBpbXBsZW1lbnRlZAogfQogCi12b2lkIGRlbGV0ZUNvb2tpZShOZXR3
b3JraW5nQ29udGV4dCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQordm9pZCBkZWxldGVD
b29raWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYp
CiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBnZXRIb3N0
bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCosIEhhc2hTZXQ8U3RyaW5nPiYgaG9z
dG5hbWVzKQordm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKIHsKICAgICAvLyBGSVhNRTogTm90IHll
dCBpbXBsZW1lbnRlZAogfQogCi12b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShOZXR3b3Jr
aW5nQ29udGV4dCosIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZShOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1l
KQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRl
QWxsQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCopCit2b2lkIGRlbGV0ZUFsbENvb2tpZXMoTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJikKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRl
ZAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNl
SGFuZGxlQ3VybC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5k
bGUuaCIKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCisjaW5jbHVkZSAiTmV0
d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZU1hbmFn
ZXIuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUph
ck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9Db29raWVKYXJNYWMubW0JKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEs
OSArMzEsOCBAQAogI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJDb29raWUu
aCIKICNpbXBvcnQgIkNvb2tpZVN0b3JhZ2UuaCIKLSNpbXBvcnQgIkNvb2tpZVN0b3JhZ2VDRk5l
dC5oIgogI2ltcG9ydCAiS1VSTC5oIgotI2ltcG9ydCAiTmV0d29ya2luZ0NvbnRleHQuaCIKKyNp
bXBvcnQgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2ltcG9ydCAiV2ViQ29yZVN5c3RlbUlu
dGVyZmFjZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02MiwzMSArNjEsMjkgQEAgc3Rh
dGljIFJldGFpblB0cjxOU0FycmF5PiBmaWx0ZXJDb29raWVzKAogICAgIHJldHVybiBmaWx0ZXJl
ZENvb2tpZXM7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JE
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiwgY29u
c3QgS1VSTCYgdXJsKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAg
IFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4
dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENv
b2tpZVN0b3JhZ2UoKTsKLSAgICBOU0FycmF5ICpjb29raWVzID0gd2tIVFRQQ29va2llc0ZvclVS
TChjb29raWVTdG9yYWdlLmdldCgpLCB1cmwpOworICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hU
VFBDb29raWVzRm9yVVJMKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCB1cmwpOwogICAg
IHJldHVybiBbW05TSFRUUENvb2tpZSByZXF1ZXN0SGVhZGVyRmllbGRzV2l0aENvb2tpZXM6Zmls
dGVyQ29va2llcyhjb29raWVzKS5nZXQoKV0gb2JqZWN0Rm9yS2V5OkAiQ29va2llIl07CiAKICAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAot
U3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQorU3Ry
aW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVy
bCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBSZXRhaW5QdHI8
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBjdXJyZW50
Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdl
KCk7Ci0gICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXNGb3JVUkwoY29va2llU3Rv
cmFnZS5nZXQoKSwgdXJsKTsKKyAgICBOU0FycmF5ICpjb29raWVzID0gd2tIVFRQQ29va2llc0Zv
clVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsKTsKICAgICByZXR1cm4gW1tO
U0hUVFBDb29raWUgcmVxdWVzdEhlYWRlckZpZWxkc1dpdGhDb29raWVzOmNvb2tpZXNdIG9iamVj
dEZvcktleTpAIkNvb2tpZSJdOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKICAg
ICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLXZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikKIHsKICAgICBCRUdJTl9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKQEAgLTEwMywzMSArMTAwLDI4IEBAIHZvaWQgc2V0Q29v
a2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQKICAgICBSZXRhaW5QdHI8TlNBcnJheT4gZmls
dGVyZWRDb29raWVzID0gZmlsdGVyQ29va2llcyhbTlNIVFRQQ29va2llIGNvb2tpZXNXaXRoUmVz
cG9uc2VIZWFkZXJGaWVsZHM6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDpjb29r
aWVTdHJpbmcgZm9yS2V5OkAiU2V0LUNvb2tpZSJdIGZvclVSTDpjb29raWVVUkxdKTsKICAgICBB
U1NFUlQoW2ZpbHRlcmVkQ29va2llcy5nZXQoKSBjb3VudF0gPD0gMSk7CiAKLSAgICBSZXRhaW5Q
dHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBjdXJy
ZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVTdG9y
YWdlKCk7Ci0gICAgd2tTZXRIVFRQQ29va2llc0ZvclVSTChjb29raWVTdG9yYWdlLmdldCgpLCBm
aWx0ZXJlZENvb2tpZXMuZ2V0KCksIGNvb2tpZVVSTCwgZmlyc3RQYXJ0eSk7CisgICAgd2tTZXRI
VFRQQ29va2llc0ZvclVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgZmlsdGVyZWRD
b29raWVzLmdldCgpLCBjb29raWVVUkwsIGZpcnN0UGFydHkpOwogCiAgICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKIH0KIAotYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJs
Ki8pCitib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCiB7
CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRU
UENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwot
ICAgIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSBjb29raWVBY2NlcHRQb2xpY3kgPSBzdGF0aWNf
Y2FzdDxOU0hUVFBDb29raWVBY2NlcHRQb2xpY3k+KHdrR2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShjb29raWVTdG9yYWdlLmdldCgpKSk7CisgICAgTlNIVFRQQ29va2llQWNjZXB0UG9saWN5IGNv
b2tpZUFjY2VwdFBvbGljeSA9IHN0YXRpY19jYXN0PE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeT4o
d2tHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgp
KSk7CiAgICAgcmV0dXJuIGNvb2tpZUFjY2VwdFBvbGljeSA9PSBOU0hUVFBDb29raWVBY2NlcHRQ
b2xpY3lBbHdheXMgfHwgY29va2llQWNjZXB0UG9saWN5ID09IE5TSFRUUENvb2tpZUFjY2VwdFBv
bGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgZ2V0UmF3Q29va2llcyhOZXR3
b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0
IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIGdldFJhd0Nvb2tp
ZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZp
cnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykK
IHsKICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOwogCi0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3Jh
Z2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZh
dWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hUVFBD
b29raWVzRm9yVVJMKGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHVybCk7CisgICAgTlNBcnJheSAqY29v
a2llcyA9IHdrSFRUUENvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCks
IHVybCk7CiAgICAgTlNVSW50ZWdlciBjb3VudCA9IFtjb29raWVzIGNvdW50XTsKICAgICByYXdD
b29raWVzLnJlc2VydmVDYXBhY2l0eShjb3VudCk7CiAgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAw
OyBpIDwgY291bnQ7ICsraSkgewpAQCAtMTQxLDEyICsxMzUsMTIgQEAgYm9vbCBnZXRSYXdDb29r
aWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjbwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIGRl
bGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBj
b29raWVOYW1lKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAogICAgIE5T
VVJMICpjb29raWVVUkwgPSB1cmw7Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2Uo
Y29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOworICAgIFJldGFpblB0cjxD
RkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gc2Vzc2lvbi5jb29raWVTdG9y
YWdlKCk7CiAgICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXNGb3JVUkwoY29va2ll
U3RvcmFnZS5nZXQoKSwgY29va2llVVJMKTsKIAogICAgIE5TU3RyaW5nICpjb29raWVOYW1lU3Ry
aW5nID0gY29va2llTmFtZTsKQEAgLTE2MSwxMiArMTU1LDExIEBAIHZvaWQgZGVsZXRlQ29va2ll
KE5ldHdvcmtpbmdDb250ZXh0KiBjb24KICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwog
fQogCi12b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250
ZXh0LCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKK3ZvaWQgZ2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBIYXNoU2V0PFN0cmlu
Zz4mIGhvc3RuYW1lcykKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAg
ICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRl
eHQgPyBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBD
b29raWVTdG9yYWdlKCk7Ci0gICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXMoY29v
a2llU3RvcmFnZS5nZXQoKSk7CisgICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXMo
c2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCkpOwogICAgIAogICAgIGZvciAoTlNIVFRQQ29v
a2llKiBjb29raWUgaW4gY29va2llcykKICAgICAgICAgaG9zdG5hbWVzLmFkZChbY29va2llIGRv
bWFpbl0pOwpAQCAtMTc0LDExICsxNjcsMTEgQEAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2ll
cyhOZXR3b3JraW5nQwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKLXZvaWQg
ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIGhvc3RuYW1lKQordm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQog
ewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIFJldGFpblB0cjxDRkhU
VFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhU
VFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsK
KyAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IHNl
c3Npb24uY29va2llU3RvcmFnZSgpOwogICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hUVFBDb29r
aWVzKGNvb2tpZVN0b3JhZ2UuZ2V0KCkpOwogICAgIGlmICghY29va2llcykKICAgICAgICAgcmV0
dXJuOwpAQCAtMTkxLDEwICsxODQsOSBAQCB2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShO
ZXR3b3JraW5nCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAotdm9pZCBkZWxl
dGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQordm9pZCBkZWxldGVBbGxD
b29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKIHsKLSAgICBSZXRh
aW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBj
dXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVT
dG9yYWdlKCk7Ci0gICAgd2tEZWxldGVBbGxIVFRQQ29va2llcyhjb29raWVTdG9yYWdlLmdldCgp
KTsKKyAgICB3a0RlbGV0ZUFsbEhUVFBDb29raWVzKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdl
dCgpKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
Q29va2llU3RvcmFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9Db29raWVTdG9yYWdlTWFjLm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVTdG9yYWdlTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw2IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJDb29raWVTdG9yYWdlLmgiCi0jaW5jbHVkZSAiQ29va2llU3RvcmFnZUNGTmV0Lmgi
CiAKICNpbXBvcnQgIlJlc291cmNlSGFuZGxlLmgiCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCShy
ZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9S
ZXNvdXJjZUhhbmRsZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNiBAQAogI2lt
cG9ydCAiQmxvYlJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBv
cnQgIkNvb2tpZVN0b3JhZ2UuaCIKLSNpbXBvcnQgIkNvb2tpZVN0b3JhZ2VDRk5ldC5oIgogI2lt
cG9ydCAiQ3JlZGVudGlhbFN0b3JhZ2UuaCIKICNpbXBvcnQgIkNhY2hlZFJlc291cmNlTG9hZGVy
LmgiCiAjaW1wb3J0ICJFbXB0eVByb3RvY29sRGVmaW5pdGlvbnMuaCIKQEAgLTQyLDYgKzQxLDcg
QEAKICNpbXBvcnQgIkZyYW1lTG9hZGVyLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0
ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW1wb3J0ICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2lt
cG9ydCAiUGFnZS5oIgogI2ltcG9ydCAiUmVzb3VyY2VFcnJvci5oIgogI2ltcG9ydCAiUmVzb3Vy
Y2VSZXNwb25zZS5oIgpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHN0YXRpYyBib29sIHNob3VsZFJlbGF4
VGhpcmRQYXJ0eUNvb2tpZVAKIHsKICAgICAvLyBJZiBhIFVSTCBhbHJlYWR5IGhhcyBjb29raWVz
LCB0aGVuIHdlJ2xsIHJlbGF4IHRoZSAzcmQgcGFydHkgY29va2llIHBvbGljeSBhbmQgYWNjZXB0
IG5ldyBjb29raWVzLgogCi0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNm
Q29va2llU3RvcmFnZSA9IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpOworICAg
IFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjZkNvb2tpZVN0b3JhZ2UgPSBjb250
ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKTsKICAgICBOU0hUVFBDb29raWVB
Y2NlcHRQb2xpY3kgY29va2llQWNjZXB0UG9saWN5ID0gc3RhdGljX2Nhc3Q8TlNIVFRQQ29va2ll
QWNjZXB0UG9saWN5Pih3a0dldEhUVFBDb29raWVBY2NlcHRQb2xpY3koY2ZDb29raWVTdG9yYWdl
LmdldCgpKSk7CiAKICAgICBpZiAoY29va2llQWNjZXB0UG9saWN5ICE9IE5TSFRUUENvb2tpZUFj
Y2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluKQpAQCAtMjMwLDcgKzIzMCw3IEBA
IGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KE5ldHdvcmtpbmdDb24KICAgICBpZiAoIWNvbnRl
eHQtPmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZC0+bV9zdG9yYWdl
U2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCk7CisgICAgZC0+bV9zdG9yYWdlU2Vz
c2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCk7CiAKICAg
ICBBU1NFUlQoIWQtPm1fcHJveHkpOwogICAgIGQtPm1fcHJveHkuYWRvcHROUyh3a0NyZWF0ZU5T
VVJMQ29ubmVjdGlvbkRlbGVnYXRlUHJveHkoKSk7CkBAIC0zOTYsNyArMzk2LDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hybwogCiAgICAgUmVmUHRyPFJlc291cmNl
SGFuZGxlPiBoYW5kbGUgPSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5kbGUocmVxdWVzdCwgY2xp
ZW50LmdldCgpLCBmYWxzZSAvKmRlZmVyc0xvYWRpbmcqLywgdHJ1ZSAvKnNob3VsZENvbnRlbnRT
bmlmZiovKSk7CiAKLSAgICBoYW5kbGUtPmQtPm1fc3RvcmFnZVNlc3Npb24gPSBjb250ZXh0LT5z
dG9yYWdlU2Vzc2lvbigpOworICAgIGhhbmRsZS0+ZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRl
eHQtPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCk7CiAKICAgICBpZiAoY29udGV4
dCAmJiBoYW5kbGUtPmQtPm1fc2NoZWR1bGVkRmFpbHVyZVR5cGUgIT0gTm9GYWlsdXJlKSB7CiAg
ICAgICAgIGVycm9yID0gY29udGV4dC0+YmxvY2tlZEVycm9yKHJlcXVlc3QpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Db29raWVKYXJRdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Db29raWVKYXJRdC5jcHAJ
KHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQv
Q29va2llSmFyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxNSArNDYsMTUgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBzdGF0aWMgU2hhcmVkQ29va2llSmFyUXQqIHNfc2hhcmVkQ29va2ll
SmFyUXQgPSAwOwogCi12b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgdmFsdWUpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHZhbHVlKQogewotICAgIFFOZXR3b3JrQ29va2llSmFyKiBqYXIgPSBjb250ZXh0
ID8gY29udGV4dC0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBTaGFyZWRD
b29raWVKYXJRdDo6c2hhcmVkKCk7CisgICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IHNlc3Np
b24uY29udGV4dCgpID8gc2Vzc2lvbi5jb250ZXh0KCktPm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCkt
PmNvb2tpZUphcigpIDogU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOwogICAgIGlmICghamFy
KQogICAgICAgICByZXR1cm47CiAKICAgICBRVXJsIHVybEZvckNvb2tpZXModXJsKTsKICAgICBR
VXJsIGZpcnN0UGFydHlVcmwoZmlyc3RQYXJ0eSk7Ci0gICAgaWYgKCF0aGlyZFBhcnR5Q29va2ll
UG9saWN5UGVybWl0cyhjb250ZXh0LCB1cmxGb3JDb29raWVzLCBmaXJzdFBhcnR5VXJsKSkKKyAg
ICBpZiAoIXRoaXJkUGFydHlDb29raWVQb2xpY3lQZXJtaXRzKHNlc3Npb24uY29udGV4dCgpLCB1
cmxGb3JDb29raWVzLCBmaXJzdFBhcnR5VXJsKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUUxp
c3Q8UU5ldHdvcmtDb29raWU+IGNvb2tpZXMgPSBRTmV0d29ya0Nvb2tpZTo6cGFyc2VDb29raWVz
KFFTdHJpbmcodmFsdWUpLnRvTGF0aW4xKCkpOwpAQCAtNjksMTUgKzY5LDE1IEBAIHZvaWQgc2V0
Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQKICAgICBqYXItPnNldENvb2tpZXNGcm9t
VXJsKGNvb2tpZXMsIHVybEZvckNvb2tpZXMpOwogfQogCi1TdHJpbmcgY29va2llc0ZvckRPTShO
ZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAg
UU5ldHdvcmtDb29raWVKYXIqIGphciA9IGNvbnRleHQgPyBjb250ZXh0LT5uZXR3b3JrQWNjZXNz
TWFuYWdlcigpLT5jb29raWVKYXIoKSA6IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKKyAg
ICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gc2Vzc2lvbi5jb250ZXh0KCkgPyBzZXNzaW9uLmNv
bnRleHQoKS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBTaGFyZWRDb29r
aWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgaWYgKCFqYXIpCiAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKIAogICAgIFFVcmwgdXJsRm9yQ29va2llcyh1cmwpOwogICAgIFFVcmwgZmlyc3RQYXJ0eVVy
bChmaXJzdFBhcnR5KTsKLSAgICBpZiAoIXRoaXJkUGFydHlDb29raWVQb2xpY3lQZXJtaXRzKGNv
bnRleHQsIHVybEZvckNvb2tpZXMsIGZpcnN0UGFydHlVcmwpKQorICAgIGlmICghdGhpcmRQYXJ0
eUNvb2tpZVBvbGljeVBlcm1pdHMoc2Vzc2lvbi5jb250ZXh0KCksIHVybEZvckNvb2tpZXMsIGZp
cnN0UGFydHlVcmwpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBRTGlzdDxRTmV0
d29ya0Nvb2tpZT4gY29va2llcyA9IGphci0+Y29va2llc0ZvclVybCh1cmxGb3JDb29raWVzKTsK
QEAgLTk0LDkgKzk0LDkgQEAgU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQq
IAogICAgIHJldHVybiByZXN1bHRDb29raWVzLmpvaW4oUUxhdGluMVN0cmluZygiOyAiKSk7CiB9
CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkK
K1N0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwp
CiB7Ci0gICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IGNvbnRleHQgPyBjb250ZXh0LT5uZXR3
b3JrQWNjZXNzTWFuYWdlcigpLT5jb29raWVKYXIoKSA6IFNoYXJlZENvb2tpZUphclF0OjpzaGFy
ZWQoKTsKKyAgICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gc2Vzc2lvbi5jb250ZXh0KCkgPyBz
ZXNzaW9uLmNvbnRleHQoKS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBT
aGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgaWYgKCFqYXIpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKIApAQCAtMTExLDQzICsxMTEsNDMgQEAgU3RyaW5nIGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKE5ldAogICAgIHJldHVybiByZXN1bHRDb29raWVzLmpvaW4oUUxhdGlu
MVN0cmluZygiOyAiKSk7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVy
bCovKQorYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQogewotICAg
IFFOZXR3b3JrQ29va2llSmFyKiBqYXIgPSBjb250ZXh0ID8gY29udGV4dC0+bmV0d29ya0FjY2Vz
c01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7Cisg
ICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IHNlc3Npb24uY29udGV4dCgpID8gc2Vzc2lvbi5j
b250ZXh0KCktPm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCktPmNvb2tpZUphcigpIDogU2hhcmVkQ29v
a2llSmFyUXQ6OnNoYXJlZCgpOwogICAgIHJldHVybiAhIWphcjsKIH0KIAotYm9vbCBnZXRSYXdD
b29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFy
dHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiti
b29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLywgVmVjdG9yPENvb2tpZT4m
IHJhd0Nvb2tpZXMpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKICAgICBy
YXdDb29raWVzLmNsZWFyKCk7CiAgICAgcmV0dXJuIGZhbHNlOyAvLyByZXR1cm4gdHJ1ZSB3aGVu
IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0Kiwg
Y29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCit2b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKIHsKICAgICAvLyBGSVhN
RTogTm90IHlldCBpbXBsZW1lbnRlZAogfQogCi12b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVz
KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykK
K3ZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGNv
bnRleHQsICFjb250ZXh0KTsgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBmb3IgY29va2llIGphcnMg
b3RoZXIgdGhhbiB0aGUgc2hhcmVkIG9uZS4KKyAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb24sICFz
ZXNzaW9uLmNvbnRleHQoKSk7IC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9yIGNvb2tpZSBqYXJz
IG90aGVyIHRoYW4gdGhlIHNoYXJlZCBvbmUuCiAgICAgU2hhcmVkQ29va2llSmFyUXQqIGphciA9
IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKICAgICBpZiAoamFyKQogICAgICAgICBqYXIt
PmdldEhvc3RuYW1lc1dpdGhDb29raWVzKGhvc3RuYW1lcyk7CiB9CiAKLXZvaWQgZGVsZXRlQ29v
a2llc0Zvckhvc3RuYW1lKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKQordm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewotICAgIEFTU0VSVF9V
TlVTRUQoY29udGV4dCwgIWNvbnRleHQpOyAvLyBOb3QgeWV0IGltcGxlbWVudGVkIGZvciBjb29r
aWUgamFycyBvdGhlciB0aGFuIHRoZSBzaGFyZWQgb25lLgorICAgIEFTU0VSVF9VTlVTRUQoc2Vz
c2lvbiwgIXNlc3Npb24uY29udGV4dCgpKTsgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBmb3IgY29v
a2llIGphcnMgb3RoZXIgdGhhbiB0aGUgc2hhcmVkIG9uZS4KICAgICBTaGFyZWRDb29raWVKYXJR
dCogamFyID0gU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOwogICAgIGlmIChqYXIpCiAgICAg
ICAgIGphci0+ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGhvc3RuYW1lKTsKIH0KIAotdm9pZCBk
ZWxldGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQordm9pZCBkZWxldGVB
bGxDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKIHsKLSAgICBBU1NFUlRf
VU5VU0VEKGNvbnRleHQsICFjb250ZXh0KTsgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBmb3IgY29v
a2llIGphcnMgb3RoZXIgdGhhbiB0aGUgc2hhcmVkIG9uZS4KKyAgICBBU1NFUlRfVU5VU0VEKHNl
c3Npb24sICFzZXNzaW9uLmNvbnRleHQoKSk7IC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9yIGNv
b2tpZSBqYXJzIG90aGVyIHRoYW4gdGhlIHNoYXJlZCBvbmUuCiAgICAgU2hhcmVkQ29va2llSmFy
UXQqIGphciA9IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKICAgICBpZiAoamFyKQogICAg
ICAgICBqYXItPmRlbGV0ZUFsbENvb2tpZXMoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAJKHJldmlzaW9u
IDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVK
YXJTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsMTEgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1zdGF0aWMgU291cENvb2tpZUphciogY29va2llSmFyRm9yQ29udGV4dChO
ZXR3b3JraW5nQ29udGV4dCogY29udGV4dCkKK3N0YXRpYyBTb3VwQ29va2llSmFyKiBjb29raWVK
YXJGb3JTZXNzaW9uKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKIHsKLSAgICByZXR1
cm4gU09VUF9DT09LSUVfSkFSKHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShjb250ZXh0LT5zb3Vw
U2Vzc2lvbigpLCBTT1VQX1RZUEVfQ09PS0lFX0pBUikpOworICAgIGlmICghc2Vzc2lvbi5jb250
ZXh0KCkpCisgICAgICAgIHJldHVybiBzb3VwQ29va2llSmFyKCk7CisgICAgcmV0dXJuIFNPVVBf
Q09PS0lFX0pBUihzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUoc2Vzc2lvbi5jb250ZXh0KCktPnNv
dXBTZXNzaW9uKCksIFNPVVBfVFlQRV9DT09LSUVfSkFSKSk7CiB9CiAKIHN0YXRpYyBHUmVmUHRy
PFNvdXBDb29raWVKYXI+JiBkZWZhdWx0Q29va2llSmFyKCkKQEAgLTczLDkgKzc1LDkgQEAgc3Rh
dGljIGlubGluZSBib29sIGh0dHBPbmx5Q29va2llRXhpc3RzKAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZh
bHVlKQordm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB2YWx1ZSkKIHsKLSAgICBTb3VwQ29va2llSmFyKiBqYXIgPSBjb250ZXh0ID8gY29va2llSmFy
Rm9yQ29udGV4dChjb250ZXh0KSA6IHNvdXBDb29raWVKYXIoKTsKKyAgICBTb3VwQ29va2llSmFy
KiBqYXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Npb24pOwogICAgIGlmICghamFyKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTEwNyw5ICsxMDksOSBAQCB2b2lkIHNldENvb2tpZXNGcm9tRE9N
KE5ldHdvcmtpbmdDb250ZXh0CiAgICAgc291cF9jb29raWVzX2ZyZWUoZXhpc3RpbmdDb29raWVz
KTsKIH0KIAotc3RhdGljIFN0cmluZyBjb29raWVzRm9yQ29udGV4dChOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBib29sIGZvckhUVFBIZWFkZXIpCitzdGF0aWMg
U3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgS1VSTCYgdXJsLCBib29sIGZvckhUVFBIZWFkZXIpCiB7Ci0gICAgU291cENvb2tpZUph
ciogamFyID0gY29udGV4dCA/IGNvb2tpZUphckZvckNvbnRleHQoY29udGV4dCkgOiBzb3VwQ29v
a2llSmFyKCk7CisgICAgU291cENvb2tpZUphciogamFyID0gY29va2llSmFyRm9yU2Vzc2lvbihz
ZXNzaW9uKTsKICAgICBpZiAoIWphcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCkBAIC0x
MTgsMjUgKzEyMCwyNSBAQCBzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JDb250ZXh0KE5ldHdvcmtp
CiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoY29va2llcy5nZXQoKSk7CiB9CiAKLVN0cmlu
ZyBjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiwg
Y29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVy
biBjb29raWVzRm9yQ29udGV4dChjb250ZXh0LCB1cmwsIGZhbHNlKTsKKyAgICByZXR1cm4gY29v
a2llc0ZvclNlc3Npb24oc2Vzc2lvbiwgdXJsLCBmYWxzZSk7CiB9CiAKLVN0cmluZyBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3Qg
S1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIGNv
b2tpZXNGb3JDb250ZXh0KGNvbnRleHQsIHVybCwgdHJ1ZSk7CisgICAgcmV0dXJuIGNvb2tpZXNG
b3JTZXNzaW9uKHNlc3Npb24sIHVybCwgdHJ1ZSk7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQo
TmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBj
b25zdCBLVVJMJiAvKnVybCovKQorYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAv
KnVybCovKQogewotICAgIHJldHVybiAhIWNvb2tpZUphckZvckNvbnRleHQoY29udGV4dCk7Cisg
ICAgcmV0dXJuICEhY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKIH0KIAotYm9vbCBnZXRS
YXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0
UGFydHkqLywgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jv
b2wgZ2V0UmF3Q29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdD
b29raWVzKQogewogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKLSAgICBTb3VwQ29va2llSmFyKiBq
YXIgPSBjb250ZXh0ID8gY29va2llSmFyRm9yQ29udGV4dChjb250ZXh0KSA6IHNvdXBDb29raWVK
YXIoKTsKKyAgICBTb3VwQ29va2llSmFyKiBqYXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Np
b24pOwogICAgIGlmICghamFyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE1Nyw5ICsx
NTksOSBAQCBib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3ZvaWQgZGVsZXRlQ29v
a2llKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgU291cENvb2tpZUphciogamFyID0gY29udGV4dCA/IGNv
b2tpZUphckZvckNvbnRleHQoY29udGV4dCkgOiBzb3VwQ29va2llSmFyKCk7CisgICAgU291cENv
b2tpZUphciogamFyID0gY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKICAgICBpZiAoIWph
cikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNzgsOSArMTgwLDkgQEAgdm9pZCBkZWxldGVDb29r
aWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbgogICAgIH0KIH0KIAotdm9pZCBnZXRIb3N0bmFtZXNX
aXRoQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgSGFzaFNldDxTdHJpbmc+JiBo
b3N0bmFtZXMpCit2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7Ci0gICAgU291cENv
b2tpZUphciogY29va2llSmFyID0gY29udGV4dCA/IGNvb2tpZUphckZvckNvbnRleHQoY29udGV4
dCkgOiBzb3VwQ29va2llSmFyKCk7CisgICAgU291cENvb2tpZUphciogY29va2llSmFyID0gY29v
a2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKICAgICBHT3duUHRyPEdTTGlzdD4gY29va2llcyhz
b3VwX2Nvb2tpZV9qYXJfYWxsX2Nvb2tpZXMoY29va2llSmFyKSk7CiAgICAgZm9yIChHU0xpc3Qq
IGl0ZW0gPSBjb29raWVzLmdldCgpOyBpdGVtOyBpdGVtID0gZ19zbGlzdF9uZXh0KGl0ZW0pKSB7
CiAgICAgICAgIEdPd25QdHI8U291cENvb2tpZT4gY29va2llKHN0YXRpY19jYXN0PFNvdXBDb29r
aWUqPihpdGVtLT5kYXRhKSk7CkBAIC0xOTAsMTAgKzE5MiwxMCBAQCB2b2lkIGdldEhvc3RuYW1l
c1dpdGhDb29raWVzKE5ldHdvcmtpbmdDCiAgICAgfQogfQogCi12b2lkIGRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBob3N0
bmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKICAgICBDU3RyaW5nIGhvc3RO
YW1lU3RyaW5nID0gaG9zdG5hbWUudXRmOCgpOwotICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUph
ciA9IGNvbnRleHQgPyBjb29raWVKYXJGb3JDb250ZXh0KGNvbnRleHQpIDogc291cENvb2tpZUph
cigpOworICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphciA9IGNvb2tpZUphckZvclNlc3Npb24o
c2Vzc2lvbik7CiAgICAgR093blB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29raWVfamFyX2Fs
bF9jb29raWVzKGNvb2tpZUphcikpOwogICAgIGZvciAoR1NMaXN0KiBpdGVtID0gY29va2llcy5n
ZXQoKTsgaXRlbTsgaXRlbSA9IGdfc2xpc3RfbmV4dChpdGVtKSkgewogICAgICAgICBTb3VwQ29v
a2llKiBjb29raWUgPSBzdGF0aWNfY2FzdDxTb3VwQ29va2llKj4oaXRlbS0+ZGF0YSk7CkBAIC0y
MDMsOSArMjA1LDkgQEAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZwog
ICAgIH0KIH0KIAotdm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250
ZXh0KQordm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
bikKIHsKLSAgICBTb3VwQ29va2llSmFyKiBjb29raWVKYXIgPSBjb250ZXh0ID8gY29va2llSmFy
Rm9yQ29udGV4dChjb250ZXh0KSA6IHNvdXBDb29raWVKYXIoKTsKKyAgICBTb3VwQ29va2llSmFy
KiBjb29raWVKYXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Npb24pOwogICAgIEdPd25QdHI8
R1NMaXN0PiBjb29raWVzKHNvdXBfY29va2llX2phcl9hbGxfY29va2llcyhjb29raWVKYXIpKTsK
ICAgICBmb3IgKEdTTGlzdCogaXRlbSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3Ns
aXN0X25leHQoaXRlbSkpIHsKICAgICAgICAgU291cENvb2tpZSogY29va2llID0gc3RhdGljX2Nh
c3Q8U291cENvb2tpZSo+KGl0ZW0tPmRhdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAJ
KHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBA
CiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQu
aCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUVycm9yLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3dpbi9Db29raWVKYXJXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHAJKHJldmlzaW9uIDEzODQwNykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNvb2tpZS5oIgogI2lu
Y2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1ZGUgPFdpbmlu
ZXQuaD4KQEAgLTM1LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIHNl
dENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYsIGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyBGSVhNRTogRGVhbCB3aXRoIGZpcnN0UGFydHkgYXJn
dW1lbnQuCiAgICAgU3RyaW5nIHN0ciA9IHVybC5zdHJpbmcoKTsKQEAgLTQzLDcgKzQ0LDcgQEAg
dm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dAogICAgIEludGVybmV0U2V0
Q29va2llKHN0ci5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpLCAwLCB2YWwuY2hhcmFj
dGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSk7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKE5l
dHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBj
b29raWVzRm9yRE9NKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBL
VVJMJiB1cmwpCiB7CiAgICAgLy8gRklYTUU6IERlYWwgd2l0aCBmaXJzdFBhcnR5IGFyZ3VtZW50
LgogCkBAIC02NCw0MCArNjUsNDAgQEAgU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2luZ0Nv
bnRleHQqLAogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KGJ1ZmZlcik7CiB9CiAKLVN0cmluZyBj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewogICAgIC8vIEZJWE1FOiBp
bmNsdWRlIEh0dHBPbmx5IGNvb2tpZQotICAgIHJldHVybiBjb29raWVzRm9yRE9NKGNvbnRleHQs
IGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JET00oc2Vzc2lvbi5jb250
ZXh0KCksIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBL
VVJMJiAvKnVybCovKQorYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCov
KQogewogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJM
JiAvKnVybCovLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2ll
cyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0
eSovLCBjb25zdCBLVVJMJiAvKnVybCovLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsK
ICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogICAgIHJhd0Nvb2tpZXMuY2xlYXIo
KTsKICAgICByZXR1cm4gZmFsc2U7IC8vIHJldHVybiB0cnVlIHdoZW4gaW1wbGVtZW50ZWQKIH0K
IAotdm9pZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiwgY29u
c3QgU3RyaW5nJikKK3ZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxl
bWVudGVkCiB9CiAKLXZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya2luZ0NvbnRl
eHQqLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKK3ZvaWQgZ2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMp
CiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxldGVD
b29raWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBTdHJpbmcmIGhvc3Ru
YW1lKQordm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBs
ZW1lbnRlZAogfQogCi12b2lkIGRlbGV0ZUFsbENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqKQor
dm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpCiB7CiAgICAgLy8g
RklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvd2luL1Jlc291cmNlSGFuZGxlV2luLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUhhbmRsZVdpbi5jcHAJKHJl
dmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL1Jl
c291cmNlSGFuZGxlV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgIkRhdGFVUkwuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
NCwxNiArMTQ0LDkgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Uwog
ICAgIG1fc2VyaWFsTG9hZGluZ0VuYWJsZWQgPSBlbmFibGVkOwogfQogCi1zdGF0aWMgUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQqIG5ldHdvcmtpbmdDb250ZXh0KGJvb2wgcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCkKK3N0YXRpYyBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKGJv
b2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKIHsKLSAgICAvLyBUaGlzIG5ldHdvcmtpbmcgY29u
dGV4dCBpcyBvbmx5IG5lZWRlZCB0byBnZXQgc3RvcmFnZSBzZXNzaW9uIGZyb20uCi0gICAgaWYg
KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKLSAgICAgICAgc3RhdGljIFJlbW90ZU5ldHdvcmtp
bmdDb250ZXh0KiBjb250ZXh0ID0gUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShmYWxz
ZSwgZmFsc2UsIHRydWUpLmxlYWtSZWYoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQ7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgc3RhdGljIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0
ID0gUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShmYWxzZSwgZmFsc2UsIGZhbHNlKS5s
ZWFrUmVmKCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0OwotICAgIH0KKyAgICByZXR1cm4gcHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCA/IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpwcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCkgOiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vz
c2lvbigpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERv
d25sb2FkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgdWludDY0X3QgZG93bmxvYWRJRCwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpAQCAtMTY0LDMyICsxNTcsMzIgQEAgdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcgogCiB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRm9yRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcmIHJl
c3VsdCkKIHsKLSAgICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVzRm9yRE9NKG5ldHdvcmtpbmdD
b250ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJl
c3VsdCA9IFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnNldENvb2tpZXNGcm9tRE9NKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIGNvb2tpZVN0cmluZykKIHsKLSAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShuZXR3
b3JraW5nQ29udGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsLCBj
b29raWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHN0b3JhZ2VTZXNz
aW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmlu
Zyk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNFbmFi
bGVkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsLCBib29sJiByZXN1bHQpCiB7Ci0gICAgcmVzdWx0ID0gV2ViQ29yZTo6
Y29va2llc0VuYWJsZWQobmV0d29ya2luZ0NvbnRleHQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCks
IGZpcnN0UGFydHksIHVybCk7CisgICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQo
c3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCk7
CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBTdHJpbmcmIHJlc3VsdCkKIHsKLSAgICByZXN1
bHQgPSBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShuZXR3b3JraW5nQ29u
dGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXN1
bHQgPSBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzdG9yYWdlU2Vzc2lv
bihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAogdm9pZCBO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Z2V0UmF3Q29va2llcyhib29sIHByaXZhdGVC
cm93c2luZ0VuYWJsZWQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwg
VmVjdG9yPENvb2tpZT4mIHJlc3VsdCkKIHsKLSAgICBXZWJDb3JlOjpnZXRSYXdDb29raWVzKG5l
dHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmws
IHJlc3VsdCk7CisgICAgV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzdG9yYWdlU2Vzc2lvbihwcml2
YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsLCByZXN1bHQpOwogfQogCiB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpkZWxldGVDb29raWUoYm9vbCBwcml2YXRl
QnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFt
ZSkKIHsKLSAgICBXZWJDb3JlOjpkZWxldGVDb29raWUobmV0d29ya2luZ0NvbnRleHQocHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCksIHVybCwgY29va2llTmFtZSk7CisgICAgV2ViQ29yZTo6ZGVsZXRl
Q29va2llKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCB1cmwsIGNvb2tp
ZU5hbWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01haW5NYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFpbk1h
Yy5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
bWFjL05ldHdvcmtQcm9jZXNzTWFpbk1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEs
OSBAQAogI2ltcG9ydCAiQ29tbWFuZExpbmUuaCIKICNpbXBvcnQgIkVudmlyb25tZW50VXRpbGl0
aWVzLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5oIgorI2ltcG9ydCAiV2ViU3lzdGVtSW50
ZXJmYWNlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1J1bkxvb3AuaD4KICNpbXBvcnQgPFdlYktpdFN5
c3RlbUludGVyZmFjZS5oPgotI2ltcG9ydCA8V2ViU3lzdGVtSW50ZXJmYWNlLmg+CiAjaW1wb3J0
IDxtYWNoL21hY2hfZXJyb3IuaD4KICNpbXBvcnQgPHJ1bnRpbWUvSW5pdGlhbGl6ZVRocmVhZGlu
Zy5oPgogI2ltcG9ydCA8c2VydmVycy9ib290c3RyYXAuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29u
dGV4dC5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiAr
NDIsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbigpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7
CiAKKyAgICBzdGF0aWMgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBwcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCk7IC8vIENhbiBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBzZXNzaW9uIGV4
aXN0cy4KKwogcHJpdmF0ZToKICAgICBSZW1vdGVOZXR3b3JraW5nQ29udGV4dChib29sIG5lZWRz
U2l0ZVNwZWNpZmljUXVpcmtzLCBib29sIGxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQs
IGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CiAKQEAgLTQ5LDggKzUxLDcgQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgYm9vbCBuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygpIGNvbnN0IE9W
RVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBsb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVk
KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGluUHJpdmF0ZUJyb3dzaW5nTW9k
ZSgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBz
dG9yYWdlU2Vzc2lvbigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IE9WRVJSSURFOwogICAg
IHZpcnR1YWwgTlNPcGVyYXRpb25RdWV1ZSAqc2NoZWR1bGVkT3BlcmF0aW9uUXVldWUoKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0IE9WRVJSSURFOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFj
L1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0JKHdv
cmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgcHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb247CitzdGF0aWMgT3duUHRyPE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbj4mIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkKK3sKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoT3duUHRyPE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbj4sIHNlc3Npb24sICgpKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKK30KIAog
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0KGJvb2wgbmVl
ZHNTaXRlU3BlY2lmaWNRdWlya3MsIGJvb2wgbG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxl
ZCwgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogICAgIDogbV9uZWVkc1NpdGVTcGVjaWZp
Y1F1aXJrcyhuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcykKQEAgLTYzLDE5ICs2OCwyMCBAQCBib29s
IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpsb2NhbEZpbGVDCiAgICAgcmV0dXJuIG1fbG9jYWxG
aWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZDsKIH0KIAotYm9vbCBSZW1vdGVOZXR3b3JraW5nQ29u
dGV4dDo6aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QKK05ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9wcml2YXRlQnJvd3NpbmdFbmFibGVkOworICAgIGlmIChtX3ByaXZhdGVCcm93
c2luZ0VuYWJsZWQpIHsKKyAgICAgICAgQVNTRVJUKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNz
aW9uKCkpOworICAgICAgICByZXR1cm4gKnByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCk7
CisgICAgfQorCisgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3Jh
Z2VTZXNzaW9uKCk7CiB9CiAKLUNGVVJMU3RvcmFnZVNlc3Npb25SZWYgUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewotICAg
IGlmIChpblByaXZhdGVCcm93c2luZ01vZGUoKSkgewotICAgICAgICBBU1NFUlQocHJpdmF0ZUJy
b3dzaW5nU3RvcmFnZVNlc3Npb24pOwotICAgICAgICByZXR1cm4gcHJpdmF0ZUJyb3dzaW5nU3Rv
cmFnZVNlc3Npb247Ci0gICAgfQotICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6IFJldHVy
biBhIGRlZmF1bHQgc2Vzc2lvbiB0aGF0J3MgdXNlZCBmb3IgdGVzdGluZy4KLSAgICByZXR1cm4g
MDsKKyAgICBBU1NFUlQocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSk7CisgICAgcmV0
dXJuICpwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpOwogfQogCiBOU09wZXJhdGlvblF1
ZXVlICpSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6c2NoZWR1bGVkT3BlcmF0aW9uUXVldWUoKSBj
b25zdApAQCAtMTA4LDIzICsxMTQsMTggQEAgdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6
c2V0UHJpdmF0ZQogCiB2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlm
IChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbikKKyAgICBpZiAocHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKCFwcml2YXRl
QnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkuaXNOdWxsKCkpOwogICAgIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVudGlmaWVyID0gU3RyaW5nKHByaXZhdGVCcm93c2lu
Z1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKSArICIuUHJpdmF0ZUJyb3dzaW5nIikuY3Jl
YXRlQ0ZTdHJpbmcoKTsKIAotICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uID0gV0tD
cmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpKTsKKyAgICBwcml2
YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVh
dGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRl
bnRpZmllckJhc2UoKSk7CiB9CiAKIHZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ry
b3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKLSAgICBpZiAoIXByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uKQotICAgICAgICByZXR1cm47Ci0KLSAgICBDRlJlbGVhc2UocHJpdmF0ZUJy
b3dzaW5nU3RvcmFnZVNlc3Npb24pOwotICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9u
ID0gMDsKKyAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpID0gbnVsbHB0cjsKIH0K
IAogfQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xz
L21hYy9DdXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2NvbE1h
bmFnZXJNYWMubW0JKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9O
ZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJXZWJDb3JlQXJndW1lbnRD
b2RlcnMuaCIKICNpbXBvcnQgIldlYlByb2Nlc3MuaCIKICNpbXBvcnQgPFdlYkNvcmUvS1VSTC5o
PgorI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTA0Myw3ICsx
MDQzLDYgQEAKIAkJRTFCNzg0NzMxNjNGMjUzRTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtpbmdD
b250ZXh0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTFCNzg0NzIxNjNGMjUzRTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tICov
OyB9OwogCQlFMUNDMUI5MDEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUNDMUI4RTEyRDdFQURGMDA2
MjU4MzggLyogUHJpbnRJbmZvLmggKi87IH07CiAJCUUxQ0MxQjkxMTJEN0VBREYwMDYyNTgzOCAv
KiBQcmludEluZm9NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMUNDMUI4RjEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvTWFjLm1tICovOyB9
OwotCQlFMUQyMjk3MTE2NTJEQzUyMDBCQUE0QkQgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFj
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFEMjI5
NkUxNjUyREI5QzAwQkFBNEJEIC8qIFdlYlBsYXRmb3JtU3RyYXRlZ2llc01hYy5tbSAqLzsgfTsK
IAkJRTFFREZEQTYxNjI4ODY4RTAwMzlFQ0RBIC8qIE1haW5NYWNQcm9jZXNzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNkZBMzEwMTFFMzkyMUUw
MERCMTM3MSAvKiBNYWluTWFjUHJvY2Vzcy5jcHAgKi87IH07CiAJCUUxRURGREE3MTYyODg2OTYw
MDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRURGRDlCMTYyODdEMEIwMDM5RUNEQSAv
KiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbSAqLzsgfTsKIAkJRTFFREZEQTgxNjI4ODY5
OTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVERkRBMjE2Mjg4MzhDMDAzOUVDREEgLyog
U2hhcmVkV29ya2VyUHJvY2Vzc01hYy5tbSAqLzsgfTsKQEAgLTIzNDQsNyArMjM0Myw2IEBACiAJ
CUUxQjc4NDcyMTYzRjI1M0UwMDA3QjY5MiAvKiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZU5ldHdvcmtpbmdD
b250ZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUNDMUI4RTEyRDdFQURG
MDA2MjU4MzggLyogUHJpbnRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFByaW50SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUNDMUI4RjEyRDdF
QURGMDA2MjU4MzggLyogUHJpbnRJbmZvTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gUHJpbnRJbmZvTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlFMUQyMjk2RTE2NTJEQjlDMDBCQUE0QkQgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFj
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUGxhdGZvcm1T
dHJhdGVnaWVzTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUVERkQ5ODE2
Mjg3QkQxMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01haW4uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzc01haW4uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFFREZEOUIxNjI4N0QwQjAwMzlFQ0RBIC8qIFNoYXJlZFdv
cmtlclByb2Nlc3NNYWluTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzc01haW5NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUUxRURGRDlEMTYyODdGMTkwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb2Nlc3Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM3MzMsNyArMzczMSw2IEBACiAJCQkJ
QkMxMTFBREYxMTJGNUJDMjAwMzM3QkFCIC8qIFdlYkVycm9yc01hYy5tbSAqLywKIAkJCQk5Mzkx
RjI4MzEyMUIzOEY1MDBFQkY3RTggLyogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oICovLAog
CQkJCTkzOTFGMjg0MTIxQjM4RjUwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
Lm1tICovLAotCQkJCUUxRDIyOTZFMTY1MkRCOUMwMEJBQTRCRCAvKiBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXNNYWMubW0gKi8sCiAJCQkJQkNDNDNBQzYxMjdCOTlERTAwMzE3RjE2IC8qIFdlYlBvcHVw
TWVudU1hYy5tbSAqLywKIAkJCQlCQ0M1NzE1OTExNUFEQUVGMDAxQ0NBRjkgLyogV2ViU3lzdGVt
SW50ZXJmYWNlLmggKi8sCiAJCQkJQkNDNTcxNUExMTVBREFFRjAwMUNDQUY5IC8qIFdlYlN5c3Rl
bUludGVyZmFjZS5tbSAqLywKQEAgLTU5NzgsNyArNTk3NSw2IEBACiAJCQkJNTEyMTc0NjAxNjRD
MjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxMjE3NDY0MTY0QzIxMzcwMDM3QTVDMSAvKiBXZWJSZXNvdXJjZUJ1ZmZlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQUYxQUM2QjE2NTE3NTlFMDBDMTdEN0YgLyogUmVtb3RlTGF5ZXJUcmVl
VHJhbnNhY3Rpb24ubW0gaW4gU291cmNlcyAqLywKLQkJCQlFMUQyMjk3MTE2NTJEQzUyMDBCQUE0
QkQgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFB
M0Q3NUIxNjUxQjQ0RjAwODcxM0QwIC8qIFJlbW90ZUxheWVyVHJlZUhvc3QubW0gaW4gU291cmNl
cyAqLywKIAkJCQkxQUEzRDc2MTE2NTFCN0QzMDA4NzEzRDAgLyogUmVtb3RlTGF5ZXJUcmVlSG9z
dE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUZEMThCNTE2NTFGQkFE
MDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAxMzg0
MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTWVtb3J5
U3RhdGlzdGljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdp
blByZWZsaWdodFJlc3VsdENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Gb250Q2FjaGUuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAJKHJldmlzaW9uIDEz
ODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5h
Z2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIldlYkNv
b2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ29va2llU3RvcmFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvb2tpZUphci5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTU1LDcgKzU2LDcgQEAgdm9pZCBXZWJD
b29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNXaXRoQwogewogICAgIEhhc2hTZXQ8U3RyaW5nPiBo
b3N0bmFtZXM7CiAKLSAgICBXZWJDb3JlOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcygwLCBob3N0
bmFtZXMpOworICAgIFdlYkNvcmU6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIGhvc3RuYW1lcyk7CiAKICAgICBW
ZWN0b3I8U3RyaW5nPiBob3N0bmFtZUxpc3Q7CiAgICAgY29weVRvVmVjdG9yKGhvc3RuYW1lcywg
aG9zdG5hbWVMaXN0KTsKQEAgLTY1LDEyICs2NiwxMiBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6
OmdldEhvc3RuYW1lc1dpdGhDCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2ll
c0Zvckhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7Ci0gICAgV2ViQ29yZTo6ZGVs
ZXRlQ29va2llc0Zvckhvc3RuYW1lKDAsIGhvc3RuYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxldGVD
b29raWVzRm9ySG9zdG5hbWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKSwgaG9zdG5hbWUpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUFs
bENvb2tpZXMoKQogewotICAgIFdlYkNvcmU6OmRlbGV0ZUFsbENvb2tpZXMoMCk7CisgICAgV2Vi
Q29yZTo6ZGVsZXRlQWxsQ29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9y
YWdlU2Vzc2lvbigpKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzdGFydE9ic2Vydmlu
Z0Nvb2tpZUNoYW5nZXMoKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9h
ZHMvbWFjL0Rvd25sb2FkTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQkocmV2aXNpb24gMTM4NDA3KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBv
cnQgIkRvd25sb2FkLmgiCiAKKyNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25NYWMuaD4KICNpbXBvcnQgPFdl
YkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUu
aD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2UuaCIKICNp
bmNsdWRlICJXZWJQcmVmZXJlbmNlc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgor
I2luY2x1ZGUgIldlYlN5c3RlbUludGVyZmFjZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0FQSUNhc3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0xvY2suaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGUuaD4KQEAgLTMwMyw3ICszMDQsOCBAQCB2b2lkIElu
amVjdGVkQnVuZGxlOjpzd2l0Y2hOZXR3b3JrTG9hZGVyCiB7CiAjaWYgKFBMQVRGT1JNKE1BQykg
fHwgVVNFKENGTkVUV09SSykpICYmICFQTEFURk9STShXSU4pCiAgICAgLy8gRklYTUUgKE5ldHdv
cmtQcm9jZXNzKTogRG8gdGhpcyBpbiBuZXR3b3JrIHByb2Nlc3MsIHRvby4KLSAgICBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0Ojpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7CisgICAgSW5p
dFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UoKTsKKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3
aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5j
cHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29y
ay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAK
ICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNh
dGlvbkNoYWxsZW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9LVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2FkZXJTdHJhdGVneS5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvb2tpZUphci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUGxhdGZvcm1QYXN0ZWJvYXJkLmg+CkBAIC0xMTMsOTAgKzExNCw4MyBAQCB2
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bm90aWZ5Q29va2llCiAgICAgV2ViQ29va2llTWFu
YWdlcjo6c2hhcmVkKCkuZGlzcGF0Y2hDb29raWVzRGlkQ2hhbmdlKCk7CiB9CiAKLSNpZiBQTEFU
Rk9STShXSU4pICYmIFVTRShDRk5FVFdPUkspCi1SZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFn
ZVJlZj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWZhdWx0Q29va2llU3RvcmFnZSgpCi17Ci0g
ICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYKLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKICNpZiBFTkFCTEUoTkVUV09S
S19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nl
c3MoKSkgewogICAgICAgICBTdHJpbmcgcmVzdWx0OwotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6
OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NKGNvbnRl
eHQgJiYgY29udGV4dC0+aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCksIGZpcnN0UGFydHksIHVybCks
IE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTTo6
UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0
d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00oc2Vzc2lvbi5pc1ByaXZhdGVC
cm93c2luZ1Nlc3Npb24oKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShyZXN1bHQpLCAwKSkKICAg
ICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
CiAjZW5kaWYKIAotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKGNvbnRleHQsIGZp
cnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lv
biwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNl
dENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQor
dm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICNpZiBFTkFCTEUoTkVU
V09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1By
b2Nlc3MoKSkgewotICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlv
bigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShjb250ZXh0ICYmIGNvbnRleHQtPmluUHJpdmF0ZUJy
b3dzaW5nTW9kZSgpLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyksIDApOworICAgICAg
ICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCkt
PnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVz
RnJvbURPTShzZXNzaW9uLmlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCBmaXJzdFBhcnR5LCB1
cmwsIGNvb2tpZVN0cmluZyksIDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAK
LSAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmws
IGNvb2tpZVN0cmluZyk7CisgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbiwg
Zmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKICNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0
d29ya1Byb2Nlc3MoKSkgewogICAgICAgICBib29sIHJlc3VsdDsKLSAgICAgICAgaWYgKCFXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRT
eW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJs
ZWQoY29udGV4dCAmJiBjb250ZXh0LT5pblByaXZhdGVCcm93c2luZ01vZGUoKSwgZmlyc3RQYXJ0
eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVz
RW5hYmxlZDo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hh
cmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkKHNlc3Npb24u
aXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJsZWQ6OlJlcGx5KHJlc3Vs
dCksIDApKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKGNv
bnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFi
bGVkKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJp
bmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IEtVUkwmIHVybCkKIHsKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAg
IGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAg
ICBTdHJpbmcgcmVzdWx0OwotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdv
cmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb250
ZXh0ICYmIGNvbnRleHQtPmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpLCBmaXJzdFBhcnR5LCB1cmwp
LCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlOjpSZXBseShyZXN1bHQpLCAwKSkKKyAgICAgICAgaWYgKCFXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoc2Vzc2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgZmlyc3RQ
YXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZTo6UmVwbHkocmVzdWx0KSwgMCkpCiAgICAgICAgICAg
ICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogI2VuZGlm
CiAKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29u
dGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENv
b2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29v
a2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7
CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVk
KCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llcyhjb250ZXh0ICYm
IGNvbnRleHQtPmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXM6OlJlcGx5
KHJhd0Nvb2tpZXMpLCAwKSkKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3
b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29va2llcyhzZXNzaW9uLmlzUHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbigpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAwKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
I2VuZGlmCiAKLSAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhjb250ZXh0LCBmaXJz
dFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOworICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29r
aWVzKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7CiB9CiAKLXZvaWQgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQog
ewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJl
ZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgp
Lm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkRlbGV0ZUNvb2tpZShjb250ZXh0ICYmIGNvbnRleHQt
PmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpLCB1cmwsIGNvb2tpZU5hbWUpLCAwKTsKKyAgICAgICAg
V2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RGVsZXRlQ29va2ll
KHNlc3Npb24uaXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIHVybCwgY29va2llTmFtZSksIDAp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAKLSAgICBXZWJDb3JlOjpkZWxldGVD
b29raWUoY29udGV4dCwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxldGVDb29r
aWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0KIAogLy8gRGF0YWJhc2VTdHJhdGVneQpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCShyZXZpc2lvbiAxMzg0MDcpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NywxNSArNTcsMTIgQEAgcHJpdmF0ZToKIAog
ICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneQogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlD
b29raWVzQ2hhbmdlZCgpIE9WRVJSSURFOwotI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVU
V09SSykKLSAgICB2aXJ0dWFsIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBkZWZh
dWx0Q29va2llU3RvcmFnZSgpIE9WRVJSSURFOwotI2VuZGlmCi0gICAgdmlydHVhbCBTdHJpbmcg
Y29va2llc0ZvckRPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwg
Y29uc3QgU3RyaW5nJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVk
KFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgU3RyaW5n
IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0
KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYp
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKFdlYkNvcmU6Ok5ldHdv
cmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0
IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0
cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpL
VVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwogCiAgICAg
Ly8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCShyZXZp
c2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEw
ICszNCw4IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCBzZXRQcml2YXRlQnJv
d3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYpOwotICAgIHN0
YXRpYyB2b2lkIHN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKICAgICBzdGF0aWMgdm9pZCBl
bnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKLSAgICBzdGF0aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJl
ZiBkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKICAgICBzdGF0aWMgdm9pZCBzZXRDb29raWVBY2Nl
cHRQb2xpY3lGb3JBbGxDb250ZXh0cyhIVFRQQ29va2llQWNjZXB0UG9saWN5KTsKIAogcHJpdmF0
ZToKQEAgLTQ4LDggKzQ2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBuZWVkc1Np
dGVTcGVjaWZpY1F1aXJrcygpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBsb2Nh
bEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBib29sIGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1
YWwgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vz
c2lvbigpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6U2NoZWR1bGVQYWly
SGFzaFNldCogc2NoZWR1bGVkUnVuTG9vcFBhaXJzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBPVkVSUklERTsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0JKHJldmlzaW9uIDEzODQwNykKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDYgQEAKICNpbXBv
cnQgImNvbmZpZy5oIgogI2ltcG9ydCAiV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgogCi0j
aW1wb3J0IDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2VDRk5ldC5oPgogI2ltcG9ydCA8V2ViQ29yZS9G
cmFtZUxvYWRlckNsaWVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KQEAgLTMyLDggKzMxLDExIEBAIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIENGVVJMU3RvcmFnZVNl
c3Npb25SZWYgZGVmYXVsdENGU3RvcmFnZVNlc3Npb247Ci1zdGF0aWMgQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbjsKK3N0YXRpYyBPd25QdHI8TmV0
d29ya1N0b3JhZ2VTZXNzaW9uPiYgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKQorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4sIHNl
c3Npb24sICgpKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKK30KIAogYm9vbCBXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjpuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygpIGNvbnN0CiB7CkBAIC02Nywy
NiArNjksMTcgQEAgdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRQcml2YQogICAg
IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKSA9IGlkZW50aWZp
ZXI7CiB9CiAKLXZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3dpdGNoVG9OZXdUZXN0
aW5nU2Vzc2lvbigpCi17Ci0gICAgLy8gU2V0IGEgcHJpdmF0ZSBzZXNzaW9uIGZvciB0ZXN0aW5n
IHRvIGF2b2lkIGludGVyZmVyaW5nIHdpdGggZ2xvYmFsIGNvb2tpZXMuIFRoaXMgc2hvdWxkIGJl
IGRpZmZlcmVudCBmcm9tIHByaXZhdGUgYnJvd3Npbmcgc2Vzc2lvbi4KLSAgICBpZiAoZGVmYXVs
dENGU3RvcmFnZVNlc3Npb24pCi0gICAgICAgIENGUmVsZWFzZShkZWZhdWx0Q0ZTdG9yYWdlU2Vz
c2lvbik7Ci0gICAgZGVmYXVsdENGU3RvcmFnZVNlc3Npb24gPSBXS0NyZWF0ZVByaXZhdGVTdG9y
YWdlU2Vzc2lvbihDRlNUUigiUHJpdmF0ZSBXZWJLaXQgU2Vzc2lvbiIpKTsKLX0KLQogdm9pZCBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkK
IHsKICAgICAvLyBGSVhNRSAoTmV0d29ya1Byb2Nlc3MpOiBEb24ndCBjcmVhdGUgYW4gdW5uZWNl
c3Nhcnkgc2Vzc2lvbiB3aGVuIHVzaW5nIG5ldHdvcmsgcHJvY2Vzcy4KIAogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKQor
ICAgIGlmIChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBTdHJpbmcgYmFzZSA9IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRp
ZmllckJhc2UoKS5pc051bGwoKSA/IFN0cmluZyhbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRs
ZUlkZW50aWZpZXJdKSA6IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJh
c2UoKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmSWRlbnRpZmllciA9IFN0cmluZyhi
YXNlICsgIi5Qcml2YXRlQnJvd3NpbmciKS5jcmVhdGVDRlN0cmluZygpOworICAgIFN0cmluZyBp
ZGVudGlmaWVyQmFzZSA9IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJh
c2UoKS5pc051bGwoKSA/IFN0cmluZyhbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50
aWZpZXJdKSA6IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKTsK
IAotICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uID0gV0tDcmVhdGVQcml2YXRlU3Rv
cmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpKTsKKyAgICBwcml2YXRlQnJvd3NpbmdTdG9y
YWdlU2Vzc2lvbigpID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKGlkZW50aWZpZXJCYXNlKTsKIH0KIAogdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0OjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCkBAIC05NCwzOSArODcsMjgg
QEAgdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UAogICAgIGlmICghcHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIENGUmVs
ZWFzZShwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbik7Ci0gICAgcHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb24gPSAwOwotfQotCi1DRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIFdlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpCi17Ci0gICAgcmV0dXJu
IGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uOwotfQotCi1ib29sIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZyYW1l
KCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLT5wcml2YXRl
QnJvd3NpbmdFbmFibGVkKCk7CisgICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSA9
IG51bGxwdHI7CiB9CiAKLUNGVVJMU3RvcmFnZVNlc3Npb25SZWYgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAorTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7Ci0gICAg
aWYgKGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpKSB7Ci0gICAgICAgIEFTU0VSVChwcml2YXRlQnJv
d3NpbmdTdG9yYWdlU2Vzc2lvbik7Ci0gICAgICAgIHJldHVybiBwcml2YXRlQnJvd3NpbmdTdG9y
YWdlU2Vzc2lvbjsKKyAgICBib29sIGluUHJpdmF0ZUJyb3dzaW5nTW9kZSA9IGZyYW1lKCkgJiYg
ZnJhbWUoKS0+c2V0dGluZ3MoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLT5wcml2YXRlQnJvd3Np
bmdFbmFibGVkKCk7CisgICAgaWYgKGluUHJpdmF0ZUJyb3dzaW5nTW9kZSkgeworICAgICAgICBB
U1NFUlQocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSk7CisgICAgICAgIHJldHVybiAq
cHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKTsKICAgICB9Ci0gICAgcmV0dXJuIGRlZmF1
bHRDRlN0b3JhZ2VTZXNzaW9uOworICAgIHJldHVybiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRl
ZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQogCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kgcG9saWN5KQogewogICAgIFtbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29v
a2llU3RvcmFnZV0gc2V0Q29va2llQWNjZXB0UG9saWN5OnN0YXRpY19jYXN0PE5TSFRUUENvb2tp
ZUFjY2VwdFBvbGljeT4ocG9saWN5KV07CiAKLSAgICBpZiAoUmV0YWluUHRyPENGSFRUUENvb2tp
ZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgp
KQorICAgIGlmIChSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFn
ZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2ll
U3RvcmFnZSgpKQogICAgICAgICBXS1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3koY29va2llU3Rv
cmFnZS5nZXQoKSwgcG9saWN5KTsKIAotICAgIGlmIChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vz
c2lvbikgewotICAgICAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gcHJpdmF0
ZUJyb3dzaW5nQ29va2llU3RvcmFnZSA9IGFkb3B0Q0YoV0tDb3B5SFRUUENvb2tpZVN0b3JhZ2Uo
cHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pKTsKLSAgICAgICAgV0tTZXRIVFRQQ29va2ll
QWNjZXB0UG9saWN5KHByaXZhdGVCcm93c2luZ0Nvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7
CisgICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpIHsKKyAgICAgICAgV0tT
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkt
PmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgcG9saWN5KTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlBsYXRmb3JtU3RyYXRl
Z2llc01hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L21hYy9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXNNYWMubW0JKHJldmlzaW9uIDEzODQw
NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlBs
YXRmb3JtU3RyYXRlZ2llc01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw0OSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5oIgotCi0jaW5jbHVkZSAiV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgotI2lu
Y2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLVJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdl
UmVmPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlZmF1bHRDb29raWVTdG9yYWdlKCkKLXsKLSAg
ICBpZiAoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzZXNzaW9uID0gV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkpCi0gICAgICAgIHJldHVybiBhZG9wdENG
KFdLQ29weUhUVFBDb29raWVTdG9yYWdlKHNlc3Npb24pKTsKLQotI2lmIFVTRShDRk5FVFdPUksp
Ci0gICAgcmV0dXJuIFdLR2V0RGVmYXVsdEhUVFBDb29raWVTdG9yYWdlKCk7Ci0jZWxzZQotICAg
IC8vIFdoZW4gdXNpbmcgTlNVUkxDb25uZWN0aW9uLCB3ZSBhbHNvIHVzZSBpdHMgc2hhcmVkIGNv
b2tpZSBzdG9yYWdlLgotICAgIHJldHVybiAwOwotI2VuZGlmCi19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBACiAj
aW5jbHVkZSA8V2ViQ29yZS9KU0VsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTUmFuZ2Uu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL01haW5SZXNvdXJjZUxvYWRlci5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvTmV0d29ya2luZ0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vZGVUcmF2ZXJz
YWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdp
bkRvY3VtZW50Lmg+CkBAIC0yNDgsNyArMjQ5LDcgQEAgdm9pZCBXZWJGcmFtZTo6c3RhcnREb3du
bG9hZChjb25zdCBXZWJDbwogCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAo
V2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgYm9v
bCBwcml2YXRlQnJvd3NpbmdFbmFibGVkID0gbV9jb3JlRnJhbWUtPmxvYWRlcigpLT5uZXR3b3Jr
aW5nQ29udGV4dCgpLT5pblByaXZhdGVCcm93c2luZ01vZGUoKTsKKyAgICAgICAgYm9vbCBwcml2
YXRlQnJvd3NpbmdFbmFibGVkID0gbV9jb3JlRnJhbWUtPmxvYWRlcigpLT5uZXR3b3JraW5nQ29u
dGV4dCgpLT5zdG9yYWdlU2Vzc2lvbigpLmlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwogICAg
ICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9u
KCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTdGFydERv
d25sb2FkKHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3Qp
LCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHJldmlzaW9uIDEzODQw
NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9IaXRU
ZXN0UmVzdWx0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxDb252ZXJ0ZXIuaD4KICNpbXBvcnQg
PFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JraW5nQ29u
dGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRm
b3JtS2V5Ym9hcmRFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgpA
QCAtNjc4LDcgKzY3OSw3IEBAIGJvb2wgV2ViUGFnZTo6cGxhdGZvcm1IYXNMb2NhbERhdGFGb3JV
UkwKICAgICBOU011dGFibGVVUkxSZXF1ZXN0KiByZXF1ZXN0ID0gW1tOU011dGFibGVVUkxSZXF1
ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDp1cmxdOwogICAgIFtyZXF1ZXN0IHNldFZhbHVlOihOU1N0
cmluZyopdXNlckFnZW50KCkgZm9ySFRUUEhlYWRlckZpZWxkOkAiVXNlci1BZ2VudCJdOwogICAg
IE5TQ2FjaGVkVVJMUmVzcG9uc2UgKmNhY2hlZFJlc3BvbnNlOwotICAgIGlmIChDRlVSTFN0b3Jh
Z2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uID0gY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPmxv
YWRlcigpLT5uZXR3b3JraW5nQ29udGV4dCgpLT5zdG9yYWdlU2Vzc2lvbigpKQorICAgIGlmIChD
RlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uID0gY29yZVBhZ2UoKS0+bWFpbkZy
YW1lKCktPmxvYWRlcigpLT5uZXR3b3JraW5nQ29udGV4dCgpLT5zdG9yYWdlU2Vzc2lvbigpLnBs
YXRmb3JtU2Vzc2lvbigpKQogICAgICAgICBjYWNoZWRSZXNwb25zZSA9IFdLQ2FjaGVkUmVzcG9u
c2VGb3JSZXF1ZXN0KHN0b3JhZ2VTZXNzaW9uLCByZXF1ZXN0KTsKICAgICBlbHNlCiAgICAgICAg
IGNhY2hlZFJlc3BvbnNlID0gW1tOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXSBjYWNoZWRSZXNw
b25zZUZvclJlcXVlc3Q6cmVxdWVzdF07CkBAIC02OTIsNyArNjkzLDcgQEAgc3RhdGljIE5TQ2Fj
aGVkVVJMUmVzcG9uc2UgKmNhY2hlZFJlc3BvbgogICAgIFJldGFpblB0cjxOU011dGFibGVVUkxS
ZXF1ZXN0PiByZXF1ZXN0KEFkb3B0TlMsIFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBhbGxvY10gaW5p
dFdpdGhVUkw6dXJsXSk7CiAgICAgW3JlcXVlc3QuZ2V0KCkgc2V0VmFsdWU6KE5TU3RyaW5nICop
d2ViUGFnZS0+dXNlckFnZW50KCkgZm9ySFRUUEhlYWRlckZpZWxkOkAiVXNlci1BZ2VudCJdOwog
Ci0gICAgaWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24gPSB3ZWJQYWdl
LT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPm5ldHdvcmtpbmdDb250ZXh0KCkt
PnN0b3JhZ2VTZXNzaW9uKCkpCisgICAgaWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFn
ZVNlc3Npb24gPSB3ZWJQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPm5l
dHdvcmtpbmdDb250ZXh0KCktPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCkpCiAg
ICAgICAgIHJldHVybiBXS0NhY2hlZFJlc3BvbnNlRm9yUmVxdWVzdChzdG9yYWdlU2Vzc2lvbiwg
cmVxdWVzdC5nZXQoKSk7CiAKICAgICByZXR1cm4gW1tOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hl
XSBjYWNoZWRSZXNwb25zZUZvclJlcXVlc3Q6cmVxdWVzdC5nZXQoKV07CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRl
Z2llc0VmbC5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2
LDM0ICs4NiwzNCBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6bm90aWZ5Q29va2llCiB7
CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNvb2tpZXNGb3JET00oTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
IHVybCkKK1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNvb2tpZXNGb3JET00oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oY29u
dGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRP
TShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIFBsYXRmb3JtU3RyYXRlZ2ll
c0VmbDo6c2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVT
dHJpbmcpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6c2V0Q29va2llc0Zyb21ET00oY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewotICAgIFdl
YkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwgY29va2ll
U3RyaW5nKTsKKyAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShzZXNzaW9uLCBmaXJzdFBh
cnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CiB9CiAKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzRWZs
Ojpjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6
OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVybiBXZWJD
b3JlOjpjb29raWVzRW5hYmxlZChjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVy
biBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQog
Ci1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJu
IFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnRleHQsIGZpcnN0UGFy
dHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLWJvb2wgUGxhdGZvcm1TdHJhdGVn
aWVzRWZsOjpnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29r
aWVzKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewotICAgIHJldHVybiBX
ZWJDb3JlOjpnZXRSYXdDb29raWVzKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2ll
cyk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0
eSwgdXJsLCByYXdDb29raWVzKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmRl
bGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6ZGVs
ZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0gICAgV2ViQ29yZTo6ZGVsZXRl
Q29va2llKGNvbnRleHQsIHVybCwgY29va2llTmFtZSk7CisgICAgV2ViQ29yZTo6ZGVsZXRlQ29v
a2llKHNlc3Npb24sIHVybCwgY29va2llTmFtZSk7CiB9CiAKIHZvaWQgUGxhdGZvcm1TdHJhdGVn
aWVzRWZsOjpyZWZyZXNoUGx1Z2lucygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3Jl
U3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaAkocmV2aXNpb24g
MTM4NDA3KQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJh
dGVnaWVzRWZsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDEyICs0NywxMiBAQCBwcml2YXRlOgog
CiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIG5vdGlm
eUNvb2tpZXNDaGFuZ2VkKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShXZWJD
b3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21E
T00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVh
bCBib29sIGNvb2tpZXNFbmFibGVkKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZp
cnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFdlYkNvcmU6Ok5ldHdv
cmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKFdlYkNvcmU6Ok5l
dHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdmlydHVhbCB2
b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9y
RE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYs
IGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VS
TCYpOworICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gV2ViQ29yZTo6
RGF0YWJhc2VTdHJhdGVneQogICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2ll
c0d0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
UGxhdGZvcm1TdHJhdGVnaWVzR3RrLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODAsMzQgKzgwLDM0IEBAIHZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpu
b3RpZnlDb29raWUKIHsKIH0KIAotU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y29va2ll
c0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y29va2ll
c0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwm
IGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29v
a2llc0ZvckRPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3Jl
Ojpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgUGxh
dGZvcm1TdHJhdGVnaWVzR3RrOjpzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCog
Y29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpzZXRDb29r
aWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJp
bmcpCiB7Ci0gICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oY29udGV4dCwgZmlyc3RQYXJ0
eSwgdXJsLCBjb29raWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNl
c3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBQbGF0Zm9y
bVN0cmF0ZWdpZXNHdGs6OmNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29sIFBsYXRmb3Jt
U3RyYXRlZ2llc0d0azo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0g
ICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKGNvbnRleHQsIGZpcnN0UGFydHksIHVy
bCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHNlc3Npb24sIGZpcnN0UGFy
dHksIHVybCk7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVz
R3RrOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkK
IHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29u
dGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBQ
bGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENv
b2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Z2V0UmF3Q29v
a2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7
Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoY29udGV4dCwgZmlyc3RQYXJ0eSwg
dXJsLCByYXdDb29raWVzKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzZXNz
aW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12b2lkIFBsYXRmb3JtU3Ry
YXRlZ2llc0d0azo6ZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgUGxhdGZvcm1TdHJh
dGVnaWVzR3RrOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKLSAgICBX
ZWJDb3JlOjpkZWxldGVDb29raWUoY29udGV4dCwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBXZWJD
b3JlOjpkZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0KIAogLy8gUGx1
Z2luU3RyYXRlZ3kKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRm
b3JtU3RyYXRlZ2llc0d0ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBT
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuaAko
d29ya2luZyBjb3B5KQpAQCAtNDYsMTIgKzQ2LDEyIEBAIHByaXZhdGU6CiAKICAgICAvLyBXZWJD
b3JlOjpDb29raWVzU3RyYXRlZ3kKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5n
ZWQoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKFdlYkNvcmU6Ok5ldHdvcmtp
bmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShXZWJDb3JlOjpO
ZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wgY29va2ll
c0VuYWJsZWQoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBTdHJpbmcg
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7
Ci0gICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRl
eHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJM
JiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29v
a2llKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNv
bnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVz
RnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5n
Jik7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmly
dHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VS
TCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0
ZWd5CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgpJbmRleDogU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0JKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiAr
MTA4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvTW91c2VFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsdWdpblZpZXdCYXNlLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL1Byb3RlY3Rpb25TcGFjZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9y
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1Jlc291cmNlTG9hZGVyLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lv
biAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEzICsyNyw4IEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
KGZyYW1lKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5nU3Rv
cmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgdm9p
ZCBzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7CiAgICAgc3RhdGljIHZvaWQgZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCk7Ci0gICAgc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgZGVmYXVs
dFN0b3JhZ2VTZXNzaW9uKCk7Ci0KLSAgICBzdGF0aWMgdm9pZCBzZXRDb29raWVBY2NlcHRQb2xp
Y3lGb3JUZXN0aW5nQ29udGV4dChOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kpOwogCiBwcml2YXRl
OgogICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQoV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQpA
QCAtNDMsOCArMzgsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIG5lZWRzU2l0ZVNw
ZWNpZmljUXVpcmtzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGxvY2FsRmls
ZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJv
b2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBD
RlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9u
KCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpTY2hlZHVsZVBhaXJIYXNo
U2V0KiBzY2hlZHVsZWRSdW5Mb29wUGFpcnMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFs
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYpIGNvbnN0IE9WRVJSSURFOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dC5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjEs
NiArMjEsNyBAQAogI2ltcG9ydCAiV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgogCiAjaW1w
b3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyQ2xpZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2V0dGluZ3MuaD4KQEAg
LTI4LDggKzI5LDExIEBACiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgQ0ZV
UkxTdG9yYWdlU2Vzc2lvblJlZiBkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbjsKLXN0YXRpYyBDRlVS
TFN0b3JhZ2VTZXNzaW9uUmVmIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uOworc3RhdGlj
IE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vz
c2lvbigpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChPd25QdHI8TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uPiwgc2Vzc2lvbiwgKCkpOworICAgIHJldHVybiBzZXNzaW9uOworfQogCiBib29sIFdl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6Om5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkgY29uc3QK
IHsKQEAgLTUxLDY5ICs1NSwyNyBAQCBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6CiAgICAgcmV0dXJuIGZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQoKS0+YmxvY2tlZEVy
cm9yKHJlcXVlc3QpOwogfQogCi1zdGF0aWMgU3RyaW5nJiBwcml2YXRlQnJvd3NpbmdTdG9yYWdl
U2Vzc2lvbklkZW50aWZpZXJCYXNlKCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwot
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBiYXNlLCAoKSk7Ci0gICAgcmV0dXJuIGJh
c2U7Ci19Ci0KLXZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0UHJpdmF0ZUJyb3dz
aW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIp
Ci17Ci0gICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpID0g
aWRlbnRpZmllcjsKLX0KLQotdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpzd2l0Y2hU
b05ld1Rlc3RpbmdTZXNzaW9uKCkKLXsKLSAgICAvLyBTZXQgYSBwcml2YXRlIHNlc3Npb24gZm9y
IHRlc3RpbmcgdG8gYXZvaWQgaW50ZXJmZXJpbmcgd2l0aCBnbG9iYWwgY29va2llcy4gVGhpcyBz
aG91bGQgYmUgZGlmZmVyZW50IGZyb20gcHJpdmF0ZSBicm93c2luZyBzZXNzaW9uLgotICAgIGlm
IChkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbikKLSAgICAgICAgQ0ZSZWxlYXNlKGRlZmF1bHRDRlN0
b3JhZ2VTZXNzaW9uKTsKLSAgICBkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbiA9IFdLQ3JlYXRlUHJp
dmF0ZVN0b3JhZ2VTZXNzaW9uKENGU1RSKCJQcml2YXRlIFdlYktpdCBTZXNzaW9uIikpOwotfQot
CiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKHByaXZhdGVC
cm93c2luZ1N0b3JhZ2VTZXNzaW9uKQorICAgIGlmIChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vz
c2lvbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgYmFzZSA9IHByaXZhdGVCcm93
c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKS5pc051bGwoKSA/IFN0cmluZyhbW05T
QnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKSA6IHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IGNmSWRlbnRpZmllciA9IFN0cmluZyhiYXNlICsgIi5Qcml2YXRlQnJvd3NpbmciKS5jcmVhdGVD
RlN0cmluZygpOwotCi0gICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24gPSBXS0NyZWF0
ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCkpOworICAgIHByaXZhdGVC
cm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlm
aWVyXSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJveVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oKQogewotICAgIGlmICghcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNl
c3Npb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIENGUmVsZWFzZShwcml2YXRlQnJvd3NpbmdT
dG9yYWdlU2Vzc2lvbik7Ci0gICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24gPSAwOwot
fQotCi1DRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRl
ZmF1bHRTdG9yYWdlU2Vzc2lvbigpCi17Ci0gICAgcmV0dXJuIGRlZmF1bHRDRlN0b3JhZ2VTZXNz
aW9uOworICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkgPSBudWxscHRyOwogfQog
Ci1ib29sIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgp
IGNvbnN0CitOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6
OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZnJhbWUoKSAmJiBmcmFtZSgp
LT5zZXR0aW5ncygpICYmIGZyYW1lKCktPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoKTsKLX0KLQotQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0Ci17Ci0gICAgaWYgKGluUHJpdmF0ZUJyb3dzaW5n
TW9kZSgpKSB7Ci0gICAgICAgIEFTU0VSVChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbik7
Ci0gICAgICAgIHJldHVybiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbjsKKyAgICBib29s
IGluUHJpdmF0ZUJyb3dzaW5nTW9kZSA9IGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKSAm
JiBmcmFtZSgpLT5zZXR0aW5ncygpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgaWYg
KGluUHJpdmF0ZUJyb3dzaW5nTW9kZSkgeworICAgICAgICBBU1NFUlQocHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb24oKSk7CisgICAgICAgIHJldHVybiAqcHJpdmF0ZUJyb3dzaW5nU3RvcmFn
ZVNlc3Npb24oKTsKICAgICB9Ci0gICAgcmV0dXJuIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uOwor
ICAgIHJldHVybiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigp
OwogfQogCi12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBv
bGljeUZvclRlc3RpbmdDb250ZXh0KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCi17
Ci0gICAgQVNTRVJUKGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uKTsKLSAgICBSZXRhaW5QdHI8Q0ZI
VFRQQ29va2llU3RvcmFnZVJlZj4gZGVmYXVsdENvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKFdLQ29w
eUhUVFBDb29raWVTdG9yYWdlKGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uKSk7Ci0gICAgV0tTZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KGRlZmF1bHRDb29raWVTdG9yYWdlLmdldCgpLCBwb2xpY3kp
OwotfQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MywxMyArNTMsMTIgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OkNv
b2tpZXNTdHJhdGVneQogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDb29raWVzQ2hhbmdlZCgpIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGRl
ZmF1bHRDb29raWVTdG9yYWdlKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2ll
c0ZvckRPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29va2llc0Zyb21ET00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3Qg
U3RyaW5nJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKFdlYkNv
cmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKFdlYkNvcmU6Ok5ldHdvcmtpbmdD
b250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+JikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2
b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBj
b29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
Ym9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktV
UkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwogCiAgICAgLy8gV2Vi
Q29yZTo6RGF0YWJhc2VTdHJhdGVneQogICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRh
dGlvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0JKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQkod29y
a2luZyBjb3B5KQpAQCAtODcsNDcgKzg3LDM0IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpub3RpZnlDb29raWUKIHsKIH0KIAotUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVmYXVsdENvb2tpZVN0b3JhZ2UoKQorU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkK
IHsKLSAgICBpZiAoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzZXNzaW9uID0gV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkpCi0gICAgICAgIHJldHVybiBh
ZG9wdENGKFdLQ29weUhUVFBDb29raWVTdG9yYWdlKHNlc3Npb24pKTsKLQotI2lmIFVTRShDRk5F
VFdPUkspCi0gICAgcmV0dXJuIFdLR2V0RGVmYXVsdEhUVFBDb29raWVTdG9yYWdlKCk7Ci0jZWxz
ZQotICAgIC8vIFdoZW4gdXNpbmcgTlNVUkxDb25uZWN0aW9uLCB3ZSBhbHNvIHVzZSBpdHMgc2hh
cmVkIGNvb2tpZSBzdG9yYWdlLgotICAgIHJldHVybiAwOwotI2VuZGlmCi19Ci0KLVN0cmluZyBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKLXsKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOwor
ICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVy
bCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTShO
ZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb29raWVTdHJpbmcpCiB7Ci0gICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00o
Y29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNl
dENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsK
IH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKE5ldHdvcmtp
bmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1
cmwpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKGNvbnRl
eHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVk
KHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHks
IGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2Vi
Q29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwg
dXJsKTsKIH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMoTmV0
d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtV
UkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tp
ZT4mIHJhd0Nvb2tpZXMpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoY29u
dGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6
Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQog
Ci12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkK
K3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29v
a2llTmFtZSkKIHsKLSAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoY29udGV4dCwgdXJsLCBjb29r
aWVOYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVO
YW1lKTsKIH0KIAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlZnJlc2hQbHVnaW5zKCkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkocmV2
aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
cy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksOSBAQAogI2ltcG9ydCAiV2ViS2l0VmVy
c2lvbkNoZWNrcy5oIgogI2ltcG9ydCAiV2ViTlNEaWN0aW9uYXJ5RXh0cmFzLmgiCiAjaW1wb3J0
ICJXZWJOU1VSTEV4dHJhcy5oIgorI2ltcG9ydCAiV2ViU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1w
b3J0IDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmg+Ci0jaW1wb3J0IDxXZWJDb3Jl
L0Nvb2tpZVN0b3JhZ2VDRk5ldC5oPgorI2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNl
c3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KIApAQCAtMTI4NiwxMiArMTI4NywxMyBAQCArICh2b2lkKV9zZXRJQkNy
ZWF0b3JJRDooTlNTdHJpbmcgKilzdHJpCiAKICsgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJU
b05ld1Rlc3RpbmdTZXNzaW9uCiB7Ci0gICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3dp
dGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOworICAgIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNl
KCk7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9u
KCk7CiB9CiAKICsgKHZvaWQpX3NldEN1cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFj
Y2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KXBvbGljeQogewotICAgIFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZvclRlc3RpbmdDb250
ZXh0KHBvbGljeSk7CisgICAgV0tTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpLmdldCgp
LCBwb2xpY3kpOwogfQogCiAtIChCT09MKWlzRE9NUGFzdGVBbGxvd2VkCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTIwMTYsNyArMjAx
Niw3IEBAIC0gKE5TQ2FjaGVkVVJMUmVzcG9uc2UgKilfY2FjaGVkUmVzcG9uc2UKICAgICBpZiAo
IV9wcml2YXRlLT5wYWdlKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgaWYgKENGVVJMU3Rv
cmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24gPSBfcHJpdmF0ZS0+cGFnZS0+bWFpbkZyYW1l
KCktPmxvYWRlcigpLT5uZXR3b3JraW5nQ29udGV4dCgpLT5zdG9yYWdlU2Vzc2lvbigpKQorICAg
IGlmIChDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uID0gX3ByaXZhdGUtPnBh
Z2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+bmV0d29ya2luZ0NvbnRleHQoKS0+c3RvcmFnZVNl
c3Npb24oKS5wbGF0Zm9ybVNlc3Npb24oKSkKICAgICAgICAgY2FjaGVkUmVzcG9uc2UgPSBXS0Nh
Y2hlZFJlc3BvbnNlRm9yUmVxdWVzdChzdG9yYWdlU2Vzc2lvbiwgcmVxdWVzdC5nZXQoKSk7CiAg
ICAgZWxzZQogICAgICAgICBjYWNoZWRSZXNwb25zZSA9IFtbTlNVUkxDYWNoZSBzaGFyZWRVUkxD
YWNoZV0gY2FjaGVkUmVzcG9uc2VGb3JSZXF1ZXN0OnJlcXVlc3QuZ2V0KCldOwpJbmRleDogU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0
ZWdpZXNRdC5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSwz
NCArOTksMzQgQEAgdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6bm90aWZ5Q29va2llcwogewog
fQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNvb2tpZXNGb3JET00oTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVy
bCkKK1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShjb250ZXh0
LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHNl
c3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6
OnNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5n
KQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewotICAgIFdlYkNvcmU6
OnNldENvb2tpZXNGcm9tRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5n
KTsKKyAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1
cmwsIGNvb2tpZVN0cmluZyk7CiB9CiAKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNvb2tp
ZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb29raWVz
RW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwm
IGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29v
a2llc0VuYWJsZWQoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29y
ZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotU3RyaW5n
IFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3
b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsK
KyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lv
biwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Z2V0
UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wg
UGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmws
IFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewotICAgIHJldHVybiBXZWJDb3JlOjpnZXRS
YXdDb29raWVzKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7CisgICAgcmV0
dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdD
b29raWVzKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6ZGVsZXRlQ29va2llKE5l
dHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
Y29va2llTmFtZSkKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmRlbGV0ZUNvb2tpZShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShjb250ZXh0
LCB1cmwsIGNvb2tpZU5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1
cmwsIGNvb2tpZU5hbWUpOwogfQogCiB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpyZWZyZXNo
UGx1Z2lucygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3Jt
U3RyYXRlZ2llc1F0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU4LDEyICs1OCwxMiBAQCBwcml2YXRlOgogICAgIAogICAgIC8vIFdlYkNvcmU6
OkNvb2tpZXNTdHJhdGVneQogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDb29raWVzQ2hhbmdlZCgp
OwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oV2ViQ29yZTo6TmV0d29ya2luZ0Nv
bnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpL
VVJMJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKFdlYkNvcmU6Ok5ldHdv
cmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5h
YmxlZChXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNv
bnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCos
IGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBW
ZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUo
V2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3Qg
U3RyaW5nJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9t
RE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsK
KyAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNv
cmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFs
IGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2ll
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktV
UkwmLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kK
ICAgICAvLyAtIFVzaW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb29raWVNYW5hZ2VyQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvb2tpZU1hbmFnZXJDRk5ldC5jcHAJKHJldmlzaW9uIDEzODQwNykKKysr
IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvb2tpZU1hbmFnZXJDRk5ldC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAKICNp
bmNsdWRlIDxDRk5ldHdvcmsvQ0ZIVFRQQ29va2llc1ByaXYuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0Nvb2tpZVN0b3JhZ2VDRk5ldC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJW
aWV3LmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NCw3ICsxNTQsNiBAQAogI2lmIFVTRShDRk5FVFdPUksp
CiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMQ2FjaGVQcml2Lmg+CiAjaW5jbHVkZSA8Q0ZOZXR3
b3JrL0NGVVJMUHJvdG9jb2xQcml2Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Db29raWVTdG9yYWdl
Q0ZOZXQuaD4KICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50
ZXJmYWNlLmg+IAogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCShy
ZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNiBA
QAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaWYgVVNFKENGTkVUV09SSykKICNp
bmNsdWRlIDxDRk5ldHdvcmsvQ0ZIVFRQQ29va2llc1ByaXYuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0Nvb2tpZVN0b3JhZ2VDRk5ldC5oPgogI2VuZGlmCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5n
cy5oPgogI2lmIFVTRShDRk5FVFdPUkspCkBAIC0zMyw4ICszMiwxMSBAQAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKICNpZiBVU0UoQ0ZORVRXT1JLKQotc3RhdGljIENGVVJMU3RvcmFnZVNl
c3Npb25SZWYgZGVmYXVsdENGU3RvcmFnZVNlc3Npb247Ci1zdGF0aWMgQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbjsKK3N0YXRpYyBPd25QdHI8TmV0
d29ya1N0b3JhZ2VTZXNzaW9uPiYgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKQorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4sIHNl
c3Npb24sICgpKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKK30KICNlbmRpZgogCiBQYXNzUmVmUHRy
PFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmNy
ZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQpAQCAtNjksNzUgKzcx
LDQzIEBAIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0UHJpdmEKICAgICBwcml2
YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkgPSBpZGVudGlmaWVyOwog
fQogCi12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN3aXRjaFRvTmV3VGVzdGluZ1Nl
c3Npb24oKQotewotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgLy8gU2V0IGEgcHJpdmF0ZSBzZXNz
aW9uIGZvciB0ZXN0aW5nIHRvIGF2b2lkIGludGVyZmVyaW5nIHdpdGggZ2xvYmFsIGNvb2tpZXMu
IFRoaXMgc2hvdWxkIGJlIGRpZmZlcmVudCBmcm9tIHByaXZhdGUgYnJvd3Npbmcgc2Vzc2lvbi4K
LSAgICBkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbiA9IHdrQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNz
aW9uKENGU1RSKCJQcml2YXRlIFdlYktpdCBTZXNzaW9uIiksIGRlZmF1bHRDRlN0b3JhZ2VTZXNz
aW9uKTsKLSNlbmRpZgotfQotCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3Vy
ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAjaWYgVVNFKENGTkVUV09SSykKLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b24pCisgICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFN0cmluZyBiYXNlID0gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25J
ZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpID8gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJp
bmdSZWY+KENGQnVuZGxlR2V0VmFsdWVGb3JJbmZvRGljdGlvbmFyeUtleShDRkJ1bmRsZUdldE1h
aW5CdW5kbGUoKSwga0NGQnVuZGxlSWRlbnRpZmllcktleSkpKSA6IHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IGNmSWRlbnRpZmllciA9IFN0cmluZyhiYXNlICsgIi5Qcml2YXRlQnJvd3NpbmciKS5jcmVhdGVD
RlN0cmluZygpOworICAgIFN0cmluZyBpZGVudGlmaWVyQmFzZSA9IHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKS5pc051bGwoKSA/IFN0cmluZyhyZWludGVycHJl
dF9jYXN0PENGU3RyaW5nUmVmPihDRkJ1bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rpb25hcnlLZXko
Q0ZCdW5kbGVHZXRNYWluQnVuZGxlKCksIGtDRkJ1bmRsZUlkZW50aWZpZXJLZXkpKSkgOiBwcml2
YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCk7CiAKLSAgICBwcml2YXRl
QnJvd3NpbmdTdG9yYWdlU2Vzc2lvbiA9IHdrQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKGNm
SWRlbnRpZmllci5nZXQoKSwgZGVmYXVsdENGU3RvcmFnZVNlc3Npb24pOworICAgIHByaXZhdGVC
cm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVBy
aXZhdGVCcm93c2luZ1Nlc3Npb24oaWRlbnRpZmllckJhc2UpOwogI2VuZGlmCiB9CiAKIHZvaWQg
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
KQogewogI2lmIFVTRShDRk5FVFdPUkspCi0gICAgaWYgKCFwcml2YXRlQnJvd3NpbmdTdG9yYWdl
U2Vzc2lvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0ZSZWxlYXNlKHByaXZhdGVCcm93c2lu
Z1N0b3JhZ2VTZXNzaW9uKTsKLSAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbiA9IDA7
CisgICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSA9IG51bGxwdHI7CiAjZW5kaWYK
IH0KIAogI2lmIFVTRShDRk5FVFdPUkspCi1DRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIFdlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpCitOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gZGVmYXVsdENGU3RvcmFnZVNlc3Npb247Ci19Ci0KLWJvb2wgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpICYmIGZyYW1lKCktPnNl
dHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKLX0KLQotQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0
Ci17Ci0gICAgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkID0gaW5Qcml2YXRlQnJvd3NpbmdN
b2RlKCk7Ci0gICAgaWYgKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKLSAgICAgICAgQVNTRVJU
KHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKTsKLSAgICAgICAgcmV0dXJuIHByaXZhdGVC
cm93c2luZ1N0b3JhZ2VTZXNzaW9uOworICAgIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlID0g
ZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpICYmIGZyYW1lKCktPnNldHRpbmdzKCktPnBy
aXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBpZiAoaW5Qcml2YXRlQnJvd3NpbmdNb2RlKSB7
CisgICAgICAgIEFTU0VSVChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpKTsKKyAgICAg
ICAgcmV0dXJuICpwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpOwogICAgIH0KLSAgICBy
ZXR1cm4gZGVmYXVsdENGU3RvcmFnZVNlc3Npb247Ci19Ci0KLXZvaWQgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yVGVzdGluZ0NvbnRleHQoQ0ZIVFRQ
Q29va2llU3RvcmFnZUFjY2VwdFBvbGljeSBwb2xpY3kpCi17Ci0gICAgQVNTRVJUKGRlZmF1bHRD
RlN0b3JhZ2VTZXNzaW9uKTsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4g
ZGVmYXVsdENvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKHdrQ29weUhUVFBDb29raWVTdG9yYWdlKGRl
ZmF1bHRDRlN0b3JhZ2VTZXNzaW9uKSk7Ci0gICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tp
ZUFjY2VwdFBvbGljeShkZWZhdWx0Q29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKKyAgICBy
ZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0K
IAogdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29raWVBY2NlcHRQb2xpY3lG
b3JBbGxDb250ZXh0cyhDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5IHBvbGljeSkKIHsK
LSAgICBpZiAoUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2Ug
PSBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpKQorICAgIGlmIChSZXRhaW5QdHI8Q0ZIVFRQ
Q29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpKQogICAgICAgICBDRkhUVFBD
b29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBv
bGljeSk7CiAKLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pIHsKLSAgICAg
ICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IHByaXZhdGVCcm93c2luZ0Nvb2tp
ZVN0b3JhZ2UgPSBhZG9wdENGKHdrQ29weUhUVFBDb29raWVTdG9yYWdlKHByaXZhdGVCcm93c2lu
Z1N0b3JhZ2VTZXNzaW9uKSk7Ci0gICAgICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVB
Y2NlcHRQb2xpY3kocHJpdmF0ZUJyb3dzaW5nQ29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsK
LSAgICB9CisgICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpCisgICAgICAg
IENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3kocHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb24oKS0+Y29va2llU3RvcmFnZSgpLmdldCgpLCBwb2xpY3kpOwogfQogI2Vu
ZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE0ICsyOSwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlKFdlYkNvcmU6OkZy
YW1lKiwgY29uc3QgV1RGOjpTdHJpbmcmIHVzZXJBZ2VudCk7CiAKICAgICBzdGF0aWMgdm9pZCBz
ZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmlu
ZyYpOwotICAgIHN0YXRpYyB2b2lkIHN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKICAgICBz
dGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CiAgICAgc3RhdGljIHZv
aWQgZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKIAogI2lmIFVTRShDRk5FVFdPUksp
Ci0gICAgc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgZGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCk7Ci0KLSAgICBzdGF0aWMgdm9pZCBzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JUZXN0aW5nQ29u
dGV4dChDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5KTsKICAgICBzdGF0aWMgdm9pZCBz
ZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhDRkhUVFBDb29raWVTdG9yYWdlQWNj
ZXB0UG9saWN5KTsKICNlbmRpZgogCkBAIC01MCw4ICs0Niw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBXVEY6OlN0cmluZyB1c2VyQWdlbnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdURjo6U3Ry
aW5nIHJlZmVycmVyKCkgY29uc3Q7CiAjaWYgVVNFKENGTkVUV09SSykKLSAgICB2aXJ0dWFsIGJv
b2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBDRlVSTFN0b3Jh
Z2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3Q7CiAjZW5kaWYK
ICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDQ0ICs4Niwz
NCBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bm90aWZ5Q29va2llCiB7CiB9CiAKLSNp
ZiBVU0UoQ0ZORVRXT1JLKQotUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6ZGVmYXVsdENvb2tpZVN0b3JhZ2UoKQorU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAg
ICBpZiAoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzZXNzaW9uID0gV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkpCi0gICAgICAgIHJldHVybiBhZG9wdENG
KHdrQ29weUhUVFBDb29raWVTdG9yYWdlKHNlc3Npb24pKTsKLQotICAgIHJldHVybiB3a0dldERl
ZmF1bHRIVFRQQ29va2llU3RvcmFnZSgpOwotfQotI2VuZGlmCi0KLVN0cmluZyBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKLXsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6Y29va2llc0ZvckRPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVy
biBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAK
LXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5n
Q29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBj
b29raWVTdHJpbmcpCiB7Ci0gICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oY29udGV4dCwg
Zmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNldENvb2tpZXNG
cm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9v
bCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29s
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1
cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKGNvbnRleHQsIGZpcnN0
UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHNlc3Npb24s
IGZpcnN0UGFydHksIHVybCk7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtV
UkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0K
IAotYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwg
VmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nv
b2tpZXMpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoY29udGV4dCwgZmly
c3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29v
a2llcyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12b2lkIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkK
IHsKLSAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoY29udGV4dCwgdXJsLCBjb29raWVOYW1lKTsK
KyAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0K
IAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnJlZnJlc2hQbHVnaW5zKCkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTIs
MTUgKzUyLDEyIEBAIHByaXZhdGU6CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kK
ICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQoKTsKLSNpZiBVU0UoQ0ZORVRX
T1JLKQotICAgIHZpcnR1YWwgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGRlZmF1
bHRDb29raWVTdG9yYWdlKCk7Ci0jZW5kaWYKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9y
RE9NKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29r
aWVzRnJvbURPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7
Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoV2ViQ29y
ZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoV2Vi
Q29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNv
b2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZp
cnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVk
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpLVVJMJik7CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAg
dmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBX
ZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVu
dGF0aW9uLgpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9y
bVN0cmF0ZWdpZXNXaW5DRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9X
ZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5jcHAJKHJldmlzaW9uIDEzODQw
NykKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVn
aWVzV2luQ0UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MywzNCArODMsMzQgQEAgdm9pZCBQbGF0
Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6bm90aWZ5Q29vawogewogfQogCi1TdHJpbmcgUGxhdGZvcm1T
dHJhdGVnaWVzV2luQ0U6OmNvb2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBQbGF0Zm9y
bVN0cmF0ZWdpZXNXaW5DRTo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsK
LSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1
cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0UGFy
dHksIHVybCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OnNldENvb2tpZXNG
cm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBQbGF0
Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewotICAgIFdlYkNvcmU6OnNldENvb2tp
ZXNGcm9tRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBX
ZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tp
ZVN0cmluZyk7CiB9CiAKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmNvb2tpZXNFbmFi
bGVkKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJiB1cmwpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjb29raWVzRW5h
YmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2ll
c0VuYWJsZWQoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6
Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotU3RyaW5nIFBs
YXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3
b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJs
KTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vz
c2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5D
RTo6Z2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykK
K2Jvb2wgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewotICAgIHJldHVybiBXZWJD
b3JlOjpnZXRSYXdDb29raWVzKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7
CisgICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwg
dXJsLCByYXdDb29raWVzKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6ZGVs
ZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmRl
bGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIFdlYkNvcmU6OmRlbGV0
ZUNvb2tpZShjb250ZXh0LCB1cmwsIGNvb2tpZU5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0ZUNv
b2tpZShzZXNzaW9uLCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCiB2b2lkIFBsYXRmb3JtU3RyYXRl
Z2llc1dpbkNFOjpyZWZyZXNoUGx1Z2lucygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dl
YkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5o
CShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0
L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEyICs1MSwx
MiBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5CiAgICAgdmly
dHVhbCB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29v
a2llc0ZvckRPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0Q29va2llc0Zyb21ET00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5n
Jik7Ci0gICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKFdlYkNvcmU6Ok5ldHdvcmtpbmdD
b250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
S1VSTCYpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29r
aWVzKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7
Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4
dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFN0
cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVz
RW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVh
bCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYp
OworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwogCiAg
ICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQogICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBp
bXBsZW1lbnRhdGlvbi4K
</data>
<flag name="commit-queue"
          id="197908"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180597</attachid>
            <date>2012-12-21 23:42:34 -0800</date>
            <delta_ts>2012-12-22 00:02:18 -0800</delta_ts>
            <desc>patch for EWS</desc>
            <filename>StorageSession.txt</filename>
            <type>text/plain</type>
            <size>175433</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjAyOCw2ICsyMDI4LDcgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRUUFZhbGlkYXRpb24u
Y3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcAogICAgIHBsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCisgICAgcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29u
dGVudFR5cGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuY3BwCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNTc2MCw2ICs1NzYwLDcgQEAgd2ViY29y
ZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Byb3h5U2VydmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0YXRlTm90aWZpZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdGF0ZU5vdGlmaWVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9u
IDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAg
LTEwNjEsNiArMTA2MSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRU
UFZhbGlkYXRpb24uY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwIFwK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCBcCisgICAgcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcCBcCiAgICAgcGxhdGZv
cm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsv
UHJvdGVjdGlvblNwYWNlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5j
cHAgXApAQCAtMjI3Myw2ICsyMjc0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0
d29yay9IVFRQVmFsaWRhdGlvbi5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBTdGF0dXND
b2Rlcy5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmluZy5oIFwKKyAgICBwbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIFwKICAgICBwbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtpbmdDb250ZXh0LmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
YXRlTm90aWZpZXIuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5o
IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjA3LDcgKzIwNyw3IEBA
IF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yRDFFdgogX19aTjdXZWJDb3JlMTJjYWNoZVN0b3Jh
Z2VFdgogX19aTjdXZWJDb3JlMTJjcmVhdGVNYXJrdXBFUEtOU180Tm9kZUVOU18xM0VDaGlsZHJl
bk9ubHlFUE4zV1RGNlZlY3RvcklQUzBfTG0wRUVFTlNfMTNFQWJzb2x1dGVVUkxzRVBOUzVfSU5T
XzEzUXVhbGlmaWVkTmFtZUVMbTBFRUUKIF9fWk43V2ViQ29yZTEyY3JlYXRlTWFya3VwRVBLTlNf
NVJhbmdlRVBOM1dURjZWZWN0b3JJUE5TXzROb2RlRUxtMEVFRU5TXzIzRUFubm90YXRlRm9ySW50
ZXJjaGFuZ2VFYk5TXzEzRUFic29sdXRlVVJMc0UKLV9fWk43V2ViQ29yZTEyZGVsZXRlQ29va2ll
RVBOU18xN05ldHdvcmtpbmdDb250ZXh0RVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdFCitfX1pO
N1dlYkNvcmUxMmRlbGV0ZUNvb2tpZUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNf
NEtVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMmdjQ29udHJvbGxlckV2CiBfX1pO
N1dlYkNvcmUxMmljb25EYXRhYmFzZUV2CiBfX1pON1dlYkNvcmUxMnRvVWludDhBcnJheUVOM0pT
QzdKU1ZhbHVlRQpAQCAtMjM2LDEwICsyMzYsMTAgQEAgX19aTjdXZWJDb3JlMTNSZXNvdXJjZUVy
cm9yQzFFUDdOU0Vycm9yCiBfX1pON1dlYkNvcmUxM1Jlc291cmNlRXJyb3JDMUVQOV9fQ0ZFcnJv
cgogX19aTjdXZWJDb3JlMTNTdHlsZWRFbGVtZW50MjJzZXRJbmxpbmVTdHlsZVByb3BlcnR5RU5T
XzEzQ1NTUHJvcGVydHlJREVSS04zV1RGNlN0cmluZ0ViCiBfX1pON1dlYkNvcmUxM1N0eWxlZEVs
ZW1lbnQyMnNldElubGluZVN0eWxlUHJvcGVydHlFTlNfMTNDU1NQcm9wZXJ0eUlERWROU18xN0NT
U1ByaW1pdGl2ZVZhbHVlOVVuaXRUeXBlc0ViCi1fX1pON1dlYkNvcmUxM2Nvb2tpZXNGb3JET01F
UE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VSTEVTNF8KK19fWk43V2ViQ29yZTEzY29v
a2llc0ZvckRPTUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfNEtVUkxFUzVfCiBf
X1pON1dlYkNvcmUxM2NyZWF0ZVdyYXBwZXJFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUds
b2JhbE9iamVjdEVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUxM2RpcmVjdG9yeU5hbWVFUktOM1dU
RjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxM2dldFJhd0Nvb2tpZXNFUE5TXzE3TmV0d29ya2luZ0Nv
bnRleHRFUktOU180S1VSTEVTNF9STjNXVEY2VmVjdG9ySU5TXzZDb29raWVFTG0wRUVFCitfX1pO
N1dlYkNvcmUxM2dldFJhd0Nvb2tpZXNFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05T
XzRLVVJMRVM1X1JOM1dURjZWZWN0b3JJTlNfNkNvb2tpZUVMbTBFRUUKIF9fWk43V2ViQ29yZTEz
dG9BcnJheUJ1ZmZlckVOM0pTQzdKU1ZhbHVlRQogX19aTjdXZWJDb3JlMTN0b0hUTUxFbGVtZW50
RVBOU18yMUZvcm1Bc3NvY2lhdGVkRWxlbWVudEUKIF9fWk43V2ViQ29yZTEzdG9KU0RPTVdpbmRv
d0VOM0pTQzdKU1ZhbHVlRQpAQCAtMjU0LDYgKzI1NCwxMCBAQCBfX1pON1dlYkNvcmUxNERvY3Vt
ZW50TG9hZGVyMTNhdHRhY2hUb0ZyCiBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTVkZXRh
Y2hGcm9tRnJhbWVFdgogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjE4YWRkQXJjaGl2ZVJl
c291cmNlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzE1QXJjaGl2ZVJlc291cmNlRUVFCiBfX1pON1dl
YkNvcmUxNFJlc291cmNlTG9hZGVyMzJkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUVS
S05TXzIzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VFCitfX1pON1dlYkNvcmUxNGNvb2tpZXNFbmFi
bGVkRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU180S1VSTEVTNV8KK19fWk43V2Vi
Q29yZTE3c2V0Q29va2llc0Zyb21ET01FUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05T
XzRLVVJMRVM1X1JLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMjFOZXR3b3JrU3RvcmFnZVNl
c3Npb24yMWRlZmF1bHRTdG9yYWdlU2Vzc2lvbkV2CitfX1pON1dlYkNvcmUyMU5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjI1c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbkV2CiBfX1pON1dlYkNvcmUyMVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTExZGVzZXJpYWxpemVFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMxXzE0
SlNHbG9iYWxPYmplY3RFUE4zV1RGNlZlY3RvcklOUzZfNlJlZlB0cklOU18xMU1lc3NhZ2VQb3J0
RUVFTG0xRUVFTlNfMjJTZXJpYWxpemF0aW9uRXJyb3JNb2RlRQogX19aTjdXZWJDb3JlMjFTZXJp
YWxpemVkU2NyaXB0VmFsdWU2Y3JlYXRlRVBOM0pTQzlFeGVjU3RhdGVFTlMxXzdKU1ZhbHVlRVBO
M1dURjZWZWN0b3JJTlM1XzZSZWZQdHJJTlNfMTFNZXNzYWdlUG9ydEVFRUxtMUVFRVBOUzZfSU5T
N19JTlM1XzExQXJyYXlCdWZmZXJFRUVMbTFFRUVOU18yMlNlcmlhbGl6YXRpb25FcnJvck1vZGVF
CiBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTZjcmVhdGVFUktOM1dURjZTdHJp
bmdFCkBAIC0yODQsNyArMjg4LDYgQEAgX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjlzZWxl
Y3RBbGxFdgogX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbkMxRVBOU181RnJhbWVFCiBfX1pO
N1dlYkNvcmUxNExvYWRlclN0cmF0ZWd5MjFyZXNvdXJjZUxvYWRTY2hlZHVsZXJFdgogX19aTjdX
ZWJDb3JlMTRQbHVnaW5Eb2N1bWVudDEwcGx1Z2luTm9kZUV2Ci1fX1pON1dlYkNvcmUxNGNvb2tp
ZXNFbmFibGVkRVBOU18xN05ldHdvcmtpbmdDb250ZXh0RVJLTlNfNEtVUkxFUzRfCiBfX1pOSzdX
ZWJDb3JlNUZyYW1lMjV0cmFja2VkUmVwYWludFJlY3RzQXNUZXh0RXYKIF9fWk43V2ViQ29yZTlG
cmFtZVZpZXcxN3NldFRyYWNrc1JlcGFpbnRzRWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMHJl
c2V0VHJhY2tlZFJlcGFpbnRzRXYKQEAgLTQ4OCw3ICs0OTEsNyBAQCBfX1pON1dlYkNvcmUxNlZp
c2libGVTZWxlY3Rpb25DMUVSS05TXzE1CiBfX1pON1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb25D
MUVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRWIKIF9fWk43V2ViQ29yZTE2Y3JlYXRlRnVsbE1hcmt1
cEVQS05TXzROb2RlRQogX19aTjdXZWJDb3JlMTZjcmVhdGVGdWxsTWFya3VwRVBLTlNfNVJhbmdl
RQotX19aTjdXZWJDb3JlMTZkZWxldGVBbGxDb29raWVzRVBOU18xN05ldHdvcmtpbmdDb250ZXh0
RQorX19aTjdXZWJDb3JlMTZkZWxldGVBbGxDb29raWVzRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNl
c3Npb25FCiBfX1pON1dlYkNvcmUxNmVuY2xvc2luZ0ludFJlY3RFUktOU185RmxvYXRSZWN0RQog
X19aTjdXZWJDb3JlMTZpc0VuZE9mUGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNf
MjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCiBfX1pON1dlYkNvcmUxNmlzVXNlclZpc2li
bGVVUkxFUDhOU1N0cmluZwpAQCAtNTExLDcgKzUxNCw2IEBAIF9fWk43V2ViQ29yZTE3U3VicmVz
b3VyY2VMb2FkZXI2Y3JlYXRlRVAKIF9fWk43V2ViQ29yZTE3Vmlld3BvcnRBcmd1bWVudHMxOWRl
cHJlY2F0ZWRUYXJnZXREUElFCiBfX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0dXJlRVBOU18x
N0pTRE9NR2xvYmFsT2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNsYXNzSW5mb0UKIF9f
Wk43V2ViQ29yZTE3b3BlblRlbXBvcmFyeUZpbGVFUktOM1dURjZTdHJpbmdFUmkKLV9fWk43V2Vi
Q29yZTE3c2V0Q29va2llc0Zyb21ET01FUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VS
TEVTNF9SS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE3dXNlclZpc2libGVTdHJpbmdFUDVO
U1VSTAogX19aTjdXZWJDb3JlMThET01XaW5kb3dFeHRlbnNpb25DMUVQTlNfNUZyYW1lRVBOU18x
NURPTVdyYXBwZXJXb3JsZEUKIF9fWk43V2ViQ29yZTE4SFRNTENvbnRlbnRFbGVtZW50NmNyZWF0
ZUVQTlNfOERvY3VtZW50RQpAQCAtNTk1LDYgKzU5Nyw3IEBAIF9fWk43V2ViQ29yZTIwcHJvdG9j
b2xJc0phdmFTY3JpcHRFUktOM1cKIF9fWk43V2ViQ29yZTIwU3BhY2VTcGxpdFN0cmluZ0RhdGFE
MUV2CiBfX1pON1dlYkNvcmUyMUJhY2tGb3J3YXJkQ29udHJvbGxlcjExaXRlbUF0SW5kZXhFaQog
X19aTjdXZWJDb3JlMjFNZW1vcnlQcmVzc3VyZUhhbmRsZXI3aW5zdGFsbEV2CitfX1pON1dlYkNv
cmUyMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjI4Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkVS
S04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIxUGxhdGZvcm1LZXlib2FyZEV2ZW50MjRkaXNh
bWJpZ3VhdGVLZXlEb3duRXZlbnRFTlNfMTNQbGF0Zm9ybUV2ZW50NFR5cGVFYgogX19aTjdXZWJD
b3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIxOXN0YXJ0UmVzb3VyY2VMb2FkZXJFUE5TXzE0UmVz
b3VyY2VMb2FkZXJFCiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjIwc2VydmVQ
ZW5kaW5nUmVxdWVzdHNFTlNfMjBSZXNvdXJjZUxvYWRQcmlvcml0eUUKQEAgLTY1MCw3ICs2NTMs
NyBAQCBfX1pON1dlYkNvcmUyM2NyZWF0ZUZyYWdtZW50RnJvbU5vZGVzRVBOCiBfX1pON1dlYkNv
cmUyM2RhdGFGb3JVUkxDb21wb25lbnRUeXBlRVA1TlNVUkxsCiBfX1pON1dlYkNvcmUyM2RlY29k
ZUhvc3ROYW1lV2l0aFJhbmdlRVA4TlNTdHJpbmc4X05TUmFuZ2UKIF9fWk43V2ViQ29yZTIzZW5j
b2RlSG9zdE5hbWVXaXRoUmFuZ2VFUDhOU1N0cmluZzhfTlNSYW5nZQotX19aTjdXZWJDb3JlMjNn
ZXRIb3N0bmFtZXNXaXRoQ29va2llc0VQTlNfMTdOZXR3b3JraW5nQ29udGV4dEVSTjNXVEY3SGFz
aFNldElOUzJfNlN0cmluZ0VOUzJfMTBTdHJpbmdIYXNoRU5TMl8xMEhhc2hUcmFpdHNJUzRfRUVF
RQorX19aTjdXZWJDb3JlMjNnZXRIb3N0bmFtZXNXaXRoQ29va2llc0VSS05TXzIxTmV0d29ya1N0
b3JhZ2VTZXNzaW9uRVJOM1dURjdIYXNoU2V0SU5TM182U3RyaW5nRU5TM18xMFN0cmluZ0hhc2hF
TlMzXzEwSGFzaFRyYWl0c0lTNV9FRUVFCiBfX1pON1dlYkNvcmUyNEJpbmFyeVByb3BlcnR5TGlz
dFdyaXRlcjE3d3JpdGVQcm9wZXJ0eUxpc3RFdgogX19aTjdXZWJDb3JlMjRDYWNoZWRSZXNvdXJj
ZUhhbmRsZUJhc2UxMXNldFJlc291cmNlRVBOU18xNENhY2hlZFJlc291cmNlRQogX19aTjdXZWJD
b3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIxMGZpcnN0Q2hpbGRFdgpAQCAtNjY5LDcgKzY3
Miw3IEBAIF9fWk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyQzIKIF9fWk43V2Vi
Q29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyRDJFdgogX19aTjdXZWJDb3JlMjRjcmVhdGVG
cmFnbWVudEZyb21NYXJrdXBFUE5TXzhEb2N1bWVudEVSS04zV1RGNlN0cmluZ0VTNV9OU18yN0Zy
YWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbkUKIF9fWk43V2ViQ29yZTI0ZGVjb2RlVVJMRXNjYXBl
U2VxdWVuY2VzRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMjRkZWxldGVDb29raWVzRm9y
SG9zdG5hbWVFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOM1dURjZTdHJpbmdFCitfX1pON1dl
YkNvcmUyNGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNz
aW9uRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjRmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b25FUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyNG5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdl
ZEUKIF9fWk43V2ViQ29yZTI1SGlzdG9yeVByb3BlcnR5TGlzdFdyaXRlcjExcmVsZWFzZURhdGFF
dgpAQCAtNjk2LDEwICs2OTksOSBAQCBfX1pON1dlYkNvcmUyN0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvCiBfX1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazE0c2V0T3Jp
ZW50YXRpb25FTjNXVEYxMFBhc3NSZWZQdHJJTlNfMjFEZXZpY2VPcmllbnRhdGlvbkRhdGFFRUUK
IF9fWk43V2ViQ29yZTI3RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrQzFFdgogX19aTjdXZWJD
b3JlMjdzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXNFdgotX19aTjdXZWJDb3JlMjZkZWZhdWx0
Q0ZIVFRQQ29va2llU3RvcmFnZUV2CiBfX1pON1dlYkNvcmUyOGVuY29kZVdpdGhVUkxFc2NhcGVT
ZXF1ZW5jZXNFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyOHJlbW92ZUxhbmd1YWdlQ2hh
bmdlT2JzZXJ2ZXJFUHYKLV9fWk43V2ViQ29yZTI5Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWVFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VSTEVTNF8KK19fWk43V2ViQ29yZTI5
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWVFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lv
bkVSS05TXzRLVVJMRVM1XwogX19aTjdXZWJDb3JlMjlpc0NoYXJhY3RlclNtYXJ0UmVwbGFjZUV4
ZW1wdEVpYgogX19aTjdXZWJDb3JlMzBob3N0TmFtZU5lZWRzRGVjb2RpbmdXaXRoUmFuZ2VFUDhO
U1N0cmluZzhfTlNSYW5nZQogX19aTjdXZWJDb3JlMzBob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRo
UmFuZ2VFUDhOU1N0cmluZzhfTlNSYW5nZQpAQCAtMTMzMCw2ICsxMzMyLDcgQEAgX19aTks3V2Vi
Q29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U2aXNIVAogX19aTks3V2ViQ29yZTIwUmVzb3VyY2VS
ZXNwb25zZUJhc2U4bWltZVR5cGVFdgogX19aTks3V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9s
bGVyMTJmb3J3YXJkQ291bnRFdgogX19aTks3V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9sbGVy
OWJhY2tDb3VudEV2CitfX1pOSzdXZWJDb3JlMjFOZXR3b3JrU3RvcmFnZVNlc3Npb24xM2Nvb2tp
ZVN0b3JhZ2VFdgogX19aTks3V2ViQ29yZTIxUmVuZGVyTGF5ZXJDb21wb3NpdG9yMTFzY3JvbGxM
YXllckV2CiBfX1pOSzdXZWJDb3JlMjFSZW5kZXJMYXllckNvbXBvc2l0b3IxNXJvb3RSZW5kZXJM
YXllckV2CiBfX1pOSzdXZWJDb3JlMjFVc2VyQ29udGVudFVSTFBhdHRlcm43bWF0Y2hlc0VSS05T
XzRLVVJMRQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC00MzY3LDYgKzQzNjcsNyBA
QAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmNwcCcsCkBAIC00Mzg2LDcg
KzQzODcsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRp
b25DRi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZO
ZXQuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VD
Rk5ldC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9y
YWdlQ0ZOZXQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9jZi9Eb3dubG9hZEJ1bmRsZS5o
JywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzI2MjEsNiArMzI2MjEsMTAgQEAKIAkJCQkJ
PgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3Jt
XG5ldHdvcmtcTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJ
CQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXE5ldHdvcmtp
bmdDb250ZXh0LmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBAIC0zMjg0NCwxMCArMzI4NDgsNiBA
QAogCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJCQkJPC9GaWxlPgogCQkJCQk8RmlsZQot
CQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXENvb2tpZVN0b3JhZ2VD
Rk5ldC5oIgotCQkJCQkJPgotCQkJCQk8L0ZpbGU+Ci0JCQkJCTxGaWxlCiAJCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAi
CiAJCQkJCQk+CiAJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTMyOTQwLDYgKzMyOTQwLDEw
IEBACiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAi
CisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKIAkJCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGxhdGZvcm1cbmV0d29ya1xjZlxQcm94eVNlcnZlckNGTmV0LmNwcCIKIAkJCQkJCT4KIAkJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDM3LDcgKzIwMzcsNiBAQAogCQk3RUU2ODQ2MTEyRDI2RTM4MDBFNzk0MTUgLyogQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdFRTY4NDRFMTJEMjZFMzgwMEU3OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdFRTY4NDYyMTJEMjZFMzgwMEU3OTQxNSAvKiBDb29raWVKYXJDRk5ldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ0RjEyRDI2RTM4
MDBFNzk0MTUgLyogQ29va2llSmFyQ0ZOZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2MzEyRDI2RTM4
MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDUwMTJEMjZFMzgwMEU3OTQxNSAvKiBDb29r
aWVTdG9yYWdlQ0ZOZXQuY3BwICovOyB9OwotCQk3RUU2ODQ2NDEyRDI2RTM4MDBFNzk0MTUgLyog
Q29va2llU3RvcmFnZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VF
Njg0NjUxMkQyNkUzODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NTIxMkQyNkUz
ODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2
NjEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1MzEyRDI2RTM4MDBFNzk0
MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgKi87IH07CiAJCTdFRTY4NDY3MTJEMjZFMzgw
MEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1NDEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURh
dGFTdHJlYW1DRk5ldC5oICovOyB9OwpAQCAtNjA5NSw2ICs2MDk0LDggQEAKIAkJRTEzNEY1QUIx
MkVFMzQzRjAwNEVDNThEIC8qIEludFJlY3RIYXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTM0RjVBQTEyRUUzNDNGMDA0RUM1OEQgLyogSW50UmVj
dEhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMTM5ODY2MzE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTM5ODY2MTE1NDc4NDc0MDAx
RTNGNjUgLyogU3R5bGVSZXNvbHZlci5jcHAgKi87IH07CiAJCUUxMzk4NjY0MTU0Nzg0NzQwMDFF
M0Y2NSAvKiBTdHlsZVJlc29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTM5ODY2MjE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5o
ICovOyB9OworCQlFMTNFRjM0NDE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTNF
RjM0MjE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTEzRUYzNDkxNjg1MEM0
NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxM0VGMzQ3MTY4NTBDNDcwMDM0Qzgz
RiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgKi87IH07CiAJCUUxM0YwMUYxMTI3
MEUxOTAwMERGQkE3MSAvKiBDb29raWVTdG9yYWdlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEzRjAxRjAxMjcwRTE5MDAwREZCQTcxIC8qIENv
b2tpZVN0b3JhZ2VNYWMubW0gKi87IH07CiAJCUUxNDI0QzhBMTY0QjNCNEUwMEYzMkQ0MCAvKiBQ
bGF0Zm9ybUNvb2tpZUphci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTE0MjRDODkxNjRCM0I0RTAwRjMyRDQwIC8qIFBsYXRmb3JtQ29va2llSmFyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTE0MjRD
OTAxNjRCNDYwQjAwRjMyRDQwIC8qIENvb2tpZUphck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNDI0QzhGMTY0QjQ2MEIwMEYzMkQ0MCAvKiBD
b29raWVKYXJNYWMubW0gKi87IH07CkBAIC05MzcwLDcgKzkzNzEsNiBAQAogCQk3RUU2ODQ0RTEy
RDI2RTM4MDBFNzk0MTUgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NEYxMkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZUph
ckNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvb2tpZUph
ckNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTAxMkQyNkUz
ODAwRTc5NDE1IC8qIENvb2tpZVN0b3JhZ2VDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDb29raWVTdG9yYWdlQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNG
TmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tpZVN0b3JhZ2VDRk5l
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1MjEyRDI2RTM4MDBFNzk0
MTUgLyogQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTMxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybURhdGFT
dHJlYW1DRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDU0MTJE
MjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZvcm1EYXRhU3RyZWFtQ0ZOZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEzNTc2LDYgKzEzNTc2LDggQEAKIAkJRTEzNEY1QUExMkVFMzQzRjAwNEVD
NThEIC8qIEludFJlY3RIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
dFJlY3RIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMzk4NjYxMTU0Nzg0
NzQwMDFFM0Y2NSAvKiBTdHlsZVJlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0eWxlUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMTM5ODY2MjE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZVJlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUxM0VGMzQyMTY4NEVDRjQwMDM0QzgzRiAvKiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxM0VGMzQ3MTY4NTBD
NDcwMDM0QzgzRiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxM0YwMUVBMTI3MEUxMEQwMERGQkE3MSAv
KiBDb29raWVTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tp
ZVN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEzRjAxRjAxMjcwRTE5
MDAwREZCQTcxIC8qIENvb2tpZVN0b3JhZ2VNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBDb29raWVTdG9yYWdlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMTQyNEM4OTE2NEIzQjRFMDBGMzJENDAgLyogUGxhdGZvcm1Db29raWVKYXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxhdGZvcm1Db29raWVKYXIuaDsg
cGF0aCA9IG5ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE1ODMzLDYgKzE1ODM1LDcgQEAKIAkJCQkzN0REQ0Q5MjEzODQ0RkQ1MDAwOEI3
OTMgLyogTUlNRUhlYWRlci5jcHAgKi8sCiAJCQkJMzdERENEOTMxMzg0NEZENTAwMDhCNzkzIC8q
IE1JTUVIZWFkZXIuaCAqLywKIAkJCQk2MjhEMjE0QjEyMTMxRUQxMDA1NURDRkMgLyogTmV0d29y
a2luZ0NvbnRleHQuaCAqLywKKwkJCQlFMTNFRjM0MjE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmggKi8sCiAJCQkJMUE3RkE2MUEwRERBM0JCRTAwMjhGOEE1IC8qIE5l
dHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCAqLywKIAkJCQkxQTdGQTYxODBEREEzQjNBMDAyOEY4QTUg
LyogTmV0d29ya1N0YXRlTm90aWZpZXIuaCAqLywKIAkJCQk0NDc5NTgwMjE2NDNCNDdCMDAxRTBB
N0YgLyogUGFyc2VkQ29udGVudFR5cGUuY3BwICovLApAQCAtMjA0MDMsMTMgKzIwNDA2LDEzIEBA
CiAJCQkJN0VFNjg0NEUxMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmggKi8sCiAJCQkJN0VFNjg0NEYxMkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZUphckNGTmV0LmNw
cCAqLywKIAkJCQk3RUU2ODQ1MDEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0
LmNwcCAqLywKLQkJCQk3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNG
TmV0LmggKi8sCiAJCQkJN0VFNjg0NTIxMkQyNkUzODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9y
YWdlQ0ZOZXQuY3BwICovLAogCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5l
dC5jcHAgKi8sCiAJCQkJN0VFNjg0NTMxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU0MTJEMjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0
cmVhbUNGTmV0LmggKi8sCiAJCQkJN0VFNjg0NTUxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1
bkxvb3BDRi5jcHAgKi8sCiAJCQkJN0VFNjg0NTYxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1
bkxvb3BDRi5oICovLAorCQkJCUUxM0VGMzQ3MTY4NTBDNDcwMDM0QzgzRiAvKiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb25DRk5ldC5jcHAgKi8sCiAJCQkJMUFGOEUxQzExMjU2NzNFMDAwMjMwRkY3IC8q
IFByb3h5U2VydmVyQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAv
KiBSZXNvdXJjZUVycm9yLmggKi8sCiAJCQkJN0VFNjg0NTgxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlRXJyb3JDRi5jcHAgKi8sCkBAIC0yMjg5NCw3ICsyMjg5Nyw2IEBACiAJCQkJRDhCNjE1
MkYxMDMyNDk1MTAwQzg1NTRBIC8qIENvb2tpZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzM5QjVC
NjMxMzFEQUEzMjAwRjQ4RDAyIC8qIENvb2tpZXNTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzNEMDIxMkQxMzFEQjM3QjAwNDA5MUE4IC8qIENvb2tpZVN0b3JhZ2UuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTdFRTY4NDY0MTJEMjZFMzgwMEU3OTQxNSAvKiBDb29raWVTdG9yYWdlQ0ZOZXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZFNkZENDg4MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29yZGlu
YXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZEMDQwQTE5ODlDQTAwN0ZCOEM1IC8qIENv
dW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCOTc5MEU4MjA2OTIwMEIyNTk2NSAvKiBD
b3VudGVyQ29udGVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTk4Miw2ICsyNTk4NCw3IEBACiAJ
CQkJRjM3QTU2MjMxNjc5Q0Y3QjAwQzU3MDQ2IC8qIEhlYXBHcmFwaFNlcmlhbGl6ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjg4OTBBMTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCODg5MEYxNjdEMzAxNjAwMTBDREE1
IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTEzRUYz
NDQxNjg0RUNGNDAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0yOTEwMCw2ICsyOTEwMyw3IEBACiAJCQkJMEZCODg5MEIxNjdEMkZBMTAwMTBDREE1
IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCODg5
MEUxNjdEMzAxNjAwMTBDREE1IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyMDlCNDU2QjE2Nzk2QTdFMDBFNTRFNEUgLyogSlNDcnlwdG9DdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTEzRUYzNDkxNjg1MEM0NzAwMzRDODNGIC8qIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nvb2tpZUphci5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db29raWVKYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTmV0
d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvb2tpZUphci5oIgogCiAjaWYg
VVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCkBAIC00Myw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4dChjb25z
dCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CisgICAgLy8gRklYTUU6IFJldHVybmluZyAwIG1lYW5z
IGZhbGxpbmcgYmFjayB0byBkZWZhdWx0IGNvbnRleHQuIFRoYXQncyBub3QgYSBjaG9pY2UgdGhh
dCBpcyBhcHByb3ByaWF0ZSB0byBkbyBhdCBydW50aW1lCiAgICAgaWYgKCFkb2N1bWVudCkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CkBA
IC01NCw1NyArNTYsNjggQEAgc3RhdGljIE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29u
dAogICAgIHJldHVybiBsb2FkZXItPm5ldHdvcmtpbmdDb250ZXh0KCk7CiB9CiAKKyNpZiBQTEFU
Rk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCitpbmxpbmUgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzdG9yYWdlU2Vzc2lvbihjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQgPSBuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCk7CisgICAg
cmV0dXJuIGNvbnRleHQgPyBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpIDogTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKK30KKyNkZWZpbmUgU0VTU0lPTihk
b2N1bWVudCkgc3RvcmFnZVNlc3Npb24oZG9jdW1lbnQpCisjZWxzZQorI2RlZmluZSBTRVNTSU9O
KGRvY3VtZW50KSBOZXR3b3JrU3RvcmFnZVNlc3Npb24obmV0d29ya2luZ0NvbnRleHQoZG9jdW1l
bnQpKQorI2VuZGlmCisKIFN0cmluZyBjb29raWVzKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgS1VSTCYgdXJsKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAgIHJl
dHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmNvb2tpZXNGb3JE
T00obmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgdXJsKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNT
dHJhdGVneSgpLT5jb29raWVzRm9yRE9NKFNFU1NJT04oZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsKICNlbHNlCi0gICAgcmV0dXJuIGNvb2tpZXNGb3JE
T00obmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgdXJsKTsKKyAgICByZXR1cm4gY29va2llc0ZvckRPTShTRVNTSU9OKGRvY3VtZW50
KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVybCk7CiAjZW5kaWYKIH0KIAog
dm9pZCBzZXRDb29raWVzKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykK
LSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPnNldENvb2tpZXNG
cm9tRE9NKG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlG
b3JDb29raWVzKCksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+Y29va2llc1N0cmF0ZWd5KCktPnNldENvb2tpZXNGcm9tRE9NKFNFU1NJT04oZG9jdW1lbnQp
LCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBjb29raWVTdHJpbmcpOwog
I2Vsc2UKLSAgICBzZXRDb29raWVzRnJvbURPTShuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCks
IGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZVN0cmluZyk7Cisg
ICAgc2V0Q29va2llc0Zyb21ET00oU0VTU0lPTihkb2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZVN0cmluZyk7CiAjZW5kaWYKIH0KIAogYm9vbCBj
b29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAjaWYgVVNFKFBMQVRG
T1JNX1NUUkFURUdJRVMpCi0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVz
U3RyYXRlZ3koKS0+Y29va2llc0VuYWJsZWQobmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBk
b2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgZG9jdW1lbnQtPmNvb2tpZVVSTCgpKTsK
KyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5jb29r
aWVzRW5hYmxlZChTRVNTSU9OKGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29r
aWVzKCksIGRvY3VtZW50LT5jb29raWVVUkwoKSk7CiAjZWxzZQotICAgIHJldHVybiBjb29raWVz
RW5hYmxlZChuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCBkb2N1bWVudC0+Y29va2llVVJMKCkpOworICAgIHJldHVybiBjb29raWVz
RW5hYmxlZChTRVNTSU9OKGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVz
KCksIGRvY3VtZW50LT5jb29raWVVUkwoKSk7CiAjZW5kaWYKIH0KIAogU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VS
TCYgdXJsKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAgIHJldHVybiBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFy
dHlGb3JDb29raWVzKCksIHVybCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5j
b29raWVzU3RyYXRlZ3koKS0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU0VTU0lPTihk
b2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpOwogI2Vsc2UK
LSAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUobmV0d29ya2luZ0NvbnRl
eHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsKKyAg
ICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU0VTU0lPTihkb2N1bWVudCks
IGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpOwogI2VuZGlmCiB9CiAKIGJv
b2wgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVy
bCwgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMpCiB7CiAjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJ
RVMpCi0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+
Z2V0UmF3Q29va2llcyhuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCksIGRvY3VtZW50LT5maXJz
dFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOworICAgIHJldHVybiBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmdldFJhd0Nvb2tpZXMoU0VTU0lPTihkb2N1
bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOwog
I2Vsc2UKLSAgICByZXR1cm4gZ2V0UmF3Q29va2llcyhuZXR3b3JraW5nQ29udGV4dChkb2N1bWVu
dCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOworICAg
IHJldHVybiBnZXRSYXdDb29raWVzKFNFU1NJT04oZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBjb29raWVzKTsKICNlbmRpZgogfQogCiB2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb29raWVOYW1lKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+ZGVsZXRlQ29va2llKG5l
dHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmRlbGV0ZUNvb2tpZShTRVNTSU9OKGRv
Y3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKICNlbHNlCi0gICAgZGVsZXRlQ29va2llKG5ldHdv
cmtpbmdDb250ZXh0KGRvY3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBkZWxldGVDb29r
aWUoU0VTU0lPTihkb2N1bWVudCksIHVybCwgY29va2llTmFtZSk7CiAjZW5kaWYKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxMzg0
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlSG9z
dC5oIgogI2luY2x1ZGUgIkFzeW5jRmlsZVN0cmVhbS5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gMTM4NDA3KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJDYWNoZVBvbGljeS5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJQdXJnZVByaW9yaXR5LmgiCisjaW5jbHVkZSAi
UmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0
LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAkocmV2
aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDMwICszMywyMiBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKE1B
QykgfHwgVVNFKENGTkVUV09SSykKLXR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0
b3JhZ2UqICBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgS1VSTDsKLWNsYXNzIE5ldHdvcmtpbmdDb250ZXh0OworY2xhc3MgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOwogc3RydWN0IENvb2tpZTsKIAogY2xhc3MgQ29va2llc1N0cmF0
ZWd5IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQoKSA9
IDA7CiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBS
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gZGVmYXVsdENvb2tpZVN0b3JhZ2UoKSA9
IDA7Ci0jZW5kaWYKLQotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2lu
Z0NvbnRleHQqLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmlu
ZykgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4
dCosIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmKSA9IDA7Ci0gICAgdmlydHVh
bCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOwotICAgIHZpcnR1YWwg
Ym9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+JikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiBjb29raWVOYW1lKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY29v
a2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXRS
YXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgfkNvb2tpZXNTdHJhdGVneSgpIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAkocmV2aXNpb24gMTM4
NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5k
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1
ZXN0LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOZXR3b3JrU3RvcmFnZVNlc3Np
b25faAorI2RlZmluZSBOZXR3b3JrU3RvcmFnZVNlc3Npb25faAorCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgUExBVEZP
Uk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQordHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTFN0
b3JhZ2VTZXNzaW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwordHlwZWRlZiBzdHJ1Y3QgT3Bh
cXVlQ0ZIVFRQQ29va2llU3RvcmFnZSogIENGSFRUUENvb2tpZVN0b3JhZ2VSZWY7CisjZW5kaWYK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOZXR3b3JraW5nQ29udGV4dDsKKworY2xh
c3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3
b3JrU3RvcmFnZVNlc3Npb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsK
KyAgICBzdGF0aWMgUGFzc093blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IGNyZWF0ZURlZmF1
bHRTZXNzaW9uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckJhc2UpOworICAgIHN0YXRpYyBQYXNz
T3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gY3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlKTsKKworICAgIHN0YXRpYyB2b2lkIHN3aXRj
aFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKKworI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVU
V09SSykKKyAgICAvLyBNYXkgYmUgbnVsbCwgaW4gd2hpY2ggY2FzZSBhIEZvdW5kYXRpb24gZGVm
YXVsdCBzaG91bGQgYmUgdXNlZC4KKyAgICBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHBsYXRmb3Jt
U2Vzc2lvbigpIHsgcmV0dXJuIG1fcGxhdGZvcm1TZXNzaW9uLmdldCgpOyB9CisgICAgUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UoKSBjb25zdDsKKyAgICBi
b29sIGlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNQcml2YXRl
OyB9CisjZWxzZQorICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihOZXR3b3JraW5nQ29udGV4dCop
OworICAgIH5OZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsKKyAgICBOZXR3b3JraW5nQ29udGV4dCog
Y29udGV4dCgpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisjaWYgUExBVEZPUk0oTUFDKSB8
fCBVU0UoQ0ZORVRXT1JLKQorICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihDRlVSTFN0b3JhZ2VT
ZXNzaW9uUmVmIHBsYXRmb3JtU2Vzc2lvbik7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKCk7
CisgICAgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IG1fcGxhdGZvcm1TZXNzaW9u
OworICAgIGJvb2wgbV9pc1ByaXZhdGU7CisjZWxzZQorICAgIFJlZlB0cjxOZXR3b3JraW5nQ29u
dGV4dD4gbV9jb250ZXh0OworI2VuZGlmCit9OworCisjaWYgUExBVEZPUk0oV0lOKQorLy8gTmVl
ZGVkIGZvciBXZWJLaXQxIEFQSSBvbmx5Lgordm9pZCBvdmVycmlkZUNvb2tpZVN0b3JhZ2UoQ0ZI
VFRQQ29va2llU3RvcmFnZVJlZik7CitDRkhUVFBDb29raWVTdG9yYWdlUmVmIG92ZXJyaWRlbkNv
b2tpZVN0b3JhZ2UoKTsKKyNlbmRpZgorCit9CisKKyNlbmRpZiAvLyBOZXR3b3JrU3RvcmFnZVNl
c3Npb25faApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25TdHViLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvblN0dWIuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHVi
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKKworI2luY2x1
ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitOZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbihOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCkKKyAgICA6IG1fY29udGV4dChj
b250ZXh0KQoreworfQorCitOZXR3b3JrU3RvcmFnZVNlc3Npb246On5OZXR3b3JrU3RvcmFnZVNl
c3Npb24oKQoreworfQorCitOZXR3b3JraW5nQ29udGV4dCogTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Ojpjb250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOworfQorCitQ
YXNzT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
cmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKGNvbnN0IFN0cmluZyYpCit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK05ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKQor
eworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBzZXNzaW9u
LCAoMCkpOworICAgIHJldHVybiBzZXNzaW9uOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpCit7Cit9CisKK30KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgJ
KHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsOSBAQAogI2lmbmRl
ZiBOZXR3b3JraW5nQ29udGV4dF9oCiAjZGVmaW5lIE5ldHdvcmtpbmdDb250ZXh0X2gKIAorI2lu
Y2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQogI2lu
Y2x1ZGUgIlNjaGVkdWxlUGFpci5oIgpAQCAtNDAsMTAgKzQyLDYgQEAgY2xhc3MgV2ViQ29va2ll
SmFyOwogT0JKQ19DTEFTUyBOU09wZXJhdGlvblF1ZXVlOwogI2VuZGlmCiAKLSNpZiBQTEFURk9S
TShNQUMpIHx8IFVTRShDRk5FVFdPUkspCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMU3Rv
cmFnZVNlc3Npb24qIENGVVJMU3RvcmFnZVNlc3Npb25SZWY7Ci0jZW5kaWYKLQogI2lmIFBMQVRG
T1JNKFFUKQogUVRfQkVHSU5fTkFNRVNQQUNFCiBjbGFzcyBRT2JqZWN0OwpAQCAtNjgsNiArNjYs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAKICNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICAvLyBGSVhNRTogV3JhcCBXZWJD
b29raWVKYXIgaW50byBhIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB0byBtYWtlIHRoZSBjb2RlIGNy
b3NzLXBsYXRmb3JtLgogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUph
cigpIGNvbnN0ID0gMDsKICNlbmRpZgogCkBAIC04MCwxMSArNzksMTIgQEAgcHVibGljOgogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBi
b29sIGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIENGVVJM
U3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0
dWFsIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCA9IDA7CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKFFUKQorICAgIC8vIEZJWE1FOiBXcmFwIFFOZXR3b3JrQWNj
ZXNzTWFuYWdlciBpbnRvIGEgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIHRvIG1ha2UgdGhlIGNvZGUg
Y3Jvc3MtcGxhdGZvcm0uCiAgICAgdmlydHVhbCBRT2JqZWN0KiBvcmlnaW5hdGluZ09iamVjdCgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFFOZXR3b3JrQWNjZXNzTWFuYWdlciogbmV0d29ya0Fj
Y2Vzc01hbmFnZXIoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIG1pbWVTbmlmZmluZ0Vu
YWJsZWQoKSBjb25zdCA9IDA7CkBAIC05OCw2ICs5OCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAj
aWYgVVNFKFNPVVApCisgICAgLy8gRklYTUU6IFdyYXAgU291cFNlc3Npb24gaW50byBhIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiB0byBtYWtlIHRoZSBjb2RlIGNyb3NzLXBsYXRmb3JtLgogICAgIHZp
cnR1YWwgU291cFNlc3Npb24qIHNvdXBTZXNzaW9uKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
dWludDY0X3QgaW5pdGlhdGluZ1BhZ2VJRCgpIGNvbnN0ID0gMDsKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QbGF0Zm9ybUNvb2tpZUphci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIu
aAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Q
bGF0Zm9ybUNvb2tpZUphci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxOSArMzQsMTkgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgS1VSTDsKLWNsYXNzIE5ldHdvcmtpbmdDb250ZXh0
OworY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogc3RydWN0IENvb2tpZTsKIAogLy8gSWYg
bmV0d29ya2luZyBjb250ZXh0IGlzIG51bGwsIGRlZmF1bHQgY29va2llIHN0b3JhZ2UgaXMgdXNl
ZC4KLVN0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpOwotdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3Jr
aW5nQ29udGV4dCosIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBjb25zdCBT
dHJpbmcmKTsKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJik7Ci1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJik7Ci1ib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiwgVmVjdG9yPENvb2tpZT4mKTsKLXZvaWQg
ZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmlu
ZyYpOwotdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCosIEhh
c2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKTsKLXZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1l
KE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7Ci12b2lkIGRlbGV0
ZUFsbENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqKTsKK1N0cmluZyBjb29raWVzRm9yRE9NKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmKTsKK3ZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYp
OworYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJik7CitTdHJpbmcgY29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpOworYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBW
ZWN0b3I8Q29va2llPiYpOwordm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOwordm9pZCBnZXRIb3N0bmFtZXNX
aXRoQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBIYXNoU2V0PFN0cmluZz4m
IGhvc3RuYW1lcyk7Cit2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKK3ZvaWQgZGVsZXRlQWxs
Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mKTsKIAogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAko
cmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1
ZGUgIkJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3
b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5j
bHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCShyZXZpc2lvbiAxMzg0
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDEzICsyNiwxMyBAQAogI2lmbmRlZiBSZXNvdXJjZUhhbmRs
ZV9oCiAjZGVmaW5lIFJlc291cmNlSGFuZGxlX2gKIAotI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DbGllbnQuaCIKICNpbmNsdWRl
ICJIVFRQSGVhZGVyTWFwLmgiCi0jaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogI2lmIFVT
RShTT1VQKQordHlwZWRlZiBzdHJ1Y3QgX0dUbHNDZXJ0aWZpY2F0ZSBHVGxzQ2VydGlmaWNhdGU7
CiB0eXBlZGVmIHN0cnVjdCBfU291cFNlc3Npb24gU291cFNlc3Npb247CiB0eXBlZGVmIHN0cnVj
dCBfU291cFJlcXVlc3QgU291cFJlcXVlc3Q7CiAjZW5kaWYKQEAgLTc4LDYgKzc4LDcgQEAgY2xh
c3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgRnJh
bWU7CiBjbGFzcyBLVVJMOworY2xhc3MgTmV0d29ya2luZ0NvbnRleHQ7CiBjbGFzcyBQcm90ZWN0
aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VIYW5kbGVDbGll
bnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNG
TmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Nvb2tpZUphckNGTmV0LmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDkgKzI5LDggQEAKICNpZiBVU0UoQ0ZORVRXT1JLKQogCiAjaW5jbHVkZSAiQ29va2llLmgi
Ci0jaW5jbHVkZSAiQ29va2llU3RvcmFnZUNGTmV0LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgotI2lu
Y2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJTb2Z0TGlua2lu
Zy5oIgogI2luY2x1ZGUgPENGTmV0d29yay9DRkhUVFBDb29raWVzUHJpdi5oPgpAQCAtOTUsMTUg
Kzk0LDEyIEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gZmlsdGVyQ29va2kKICAgICBy
ZXR1cm4gZmlsdGVyZWRDb29raWVzOwogfQogCi12b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdv
cmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIC8vIDxyZGFyOi8vcHJvYmxl
bS81NjMyODgzPiBDRkhUVFBDb29raWVTdG9yYWdlIHN0b3JlcyBhbiBlbXB0eSBjb29raWUsIHdo
aWNoIHdvdWxkIGJlIHNlbnQgYXMgIkNvb2tpZTogPSIuCiAgICAgaWYgKHZhbHVlLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2Uo
Y29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29r
aWVTdG9yYWdlKTsKLQogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsQ0YoQWRvcHRDRiwgdXJs
LmNyZWF0ZUNGVVJMKCkpOwogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gZmlyc3RQYXJ0eUZvckNv
b2tpZXNDRihBZG9wdENGLCBmaXJzdFBhcnR5LmNyZWF0ZUNGVVJMKCkpOwogCkBAIC0xMTksNTQg
KzExNSw0MyBAQCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0CiAgICAg
UmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVDcmVh
dGVXaXRoUmVzcG9uc2VIZWFkZXJGaWVsZHMoa0NGQWxsb2NhdG9yRGVmYXVsdCwKICAgICAgICAg
aGVhZGVyRmllbGRzQ0YuZ2V0KCksIHVybENGLmdldCgpKSk7CiAKLSAgICBDRkhUVFBDb29raWVT
dG9yYWdlU2V0Q29va2llcyhjb29raWVTdG9yYWdlLmdldCgpLCBmaWx0ZXJDb29raWVzKGNvb2tp
ZXNDRi5nZXQoKSkuZ2V0KCksIHVybENGLmdldCgpLCBmaXJzdFBhcnR5Rm9yQ29va2llc0NGLmdl
dCgpKTsKKyAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llcyhzZXNzaW9uLmNvb2tpZVN0
b3JhZ2UoKS5nZXQoKSwgZmlsdGVyQ29va2llcyhjb29raWVzQ0YuZ2V0KCkpLmdldCgpLCB1cmxD
Ri5nZXQoKSwgZmlyc3RQYXJ0eUZvckNvb2tpZXNDRi5nZXQoKSk7CiB9CiAKLVN0cmluZyBjb29r
aWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiwgY29uc3Qg
S1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIFJldGFpblB0cjxD
RkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRD
RkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2Uo
KTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7Ci0KICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IHVybENGKEFkb3B0Q0YsIHVybC5jcmVhdGVDRlVSTCgpKTsKIAogICAgIGJvb2wgc2VjdXJlID0g
dXJsLnByb3RvY29sSXMoImh0dHBzIik7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tp
ZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkwoY29va2ll
U3RvcmFnZS5nZXQoKSwgdXJsQ0YuZ2V0KCksIHNlY3VyZSkpOworICAgIFJldGFpblB0cjxDRkFy
cmF5UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVz
Rm9yVVJMKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCB1cmxDRi5nZXQoKSwgc2VjdXJl
KSk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaGVhZGVyQ0YoQWRvcHRDRiwgQ0ZI
VFRQQ29va2llQ29weVJlcXVlc3RIZWFkZXJGaWVsZHMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmls
dGVyQ29va2llcyhjb29raWVzQ0YuZ2V0KCkpLmdldCgpKSk7CiAgICAgcmV0dXJuIChDRlN0cmlu
Z1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShoZWFkZXJDRi5nZXQoKSwgc19jb29raWVDRik7CiB9
CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkK
K1N0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwp
CiB7Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2Ug
PSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0
Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsKLQogICAg
IFJldGFpblB0cjxDRlVSTFJlZj4gdXJsQ0YoQWRvcHRDRiwgdXJsLmNyZWF0ZUNGVVJMKCkpOwog
CiAgICAgYm9vbCBzZWN1cmUgPSB1cmwucHJvdG9jb2xJcygiaHR0cHMiKTsKLSAgICBSZXRhaW5Q
dHI8Q0ZBcnJheVJlZj4gY29va2llc0NGKEFkb3B0Q0YsIENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5
Q29va2llc0ZvclVSTChjb29raWVTdG9yYWdlLmdldCgpLCB1cmxDRi5nZXQoKSwgc2VjdXJlKSk7
CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29r
aWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCks
IHVybENGLmdldCgpLCBzZWN1cmUpKTsKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBo
ZWFkZXJDRihBZG9wdENGLCBDRkhUVFBDb29raWVDb3B5UmVxdWVzdEhlYWRlckZpZWxkcyhrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBjb29raWVzQ0YuZ2V0KCkpKTsKICAgICByZXR1cm4gKENGU3RyaW5n
UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGhlYWRlckNGLmdldCgpLCBzX2Nvb2tpZUNGKTsKIH0K
IAotYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3Qg
S1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCitib29sIGNvb2tpZXNF
bmFibGVkKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJz
dFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCiB7Ci0gICAgUmV0YWluUHRyPENGSFRUUENv
b2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENv
b2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAg
IEFTU0VSVChjb29raWVTdG9yYWdlKTsKLQotICAgIENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQ
b2xpY3kgcG9saWN5ID0gQ0ZIVFRQQ29va2llU3RvcmFnZUdldENvb2tpZUFjY2VwdFBvbGljeShj
b29raWVTdG9yYWdlLmdldCgpKTsKKyAgICBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5
IHBvbGljeSA9IENGSFRUUENvb2tpZVN0b3JhZ2VHZXRDb29raWVBY2NlcHRQb2xpY3koc2Vzc2lv
bi5jb29raWVTdG9yYWdlKCkuZ2V0KCkpOwogICAgIHJldHVybiBwb2xpY3kgPT0gQ0ZIVFRQQ29v
a2llU3RvcmFnZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluIHx8IHBvbGlj
eSA9PSBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5QWx3YXlzOwogfQogCi1ib29sIGdl
dFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmly
c3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQor
Ym9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
S1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJh
d0Nvb2tpZXMpCiB7CiAgICAgcmF3Q29va2llcy5jbGVhcigpOwotICAgIFJldGFpblB0cjxDRkhU
VFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhU
VFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsK
LSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7CiAKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVy
bENGKEFkb3B0Q0YsIHVybC5jcmVhdGVDRlVSTCgpKTsKIAogICAgIGJvb2wgc2VuZFNlY3VyZUNv
b2tpZXMgPSB1cmwucHJvdG9jb2xJcygiaHR0cHMiKTsKLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJl
Zj4gY29va2llc0NGKEFkb3B0Q0YsIENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2llc0ZvclVS
TChjb29raWVTdG9yYWdlLmdldCgpLCB1cmxDRi5nZXQoKSwgc2VuZFNlY3VyZUNvb2tpZXMpKTsK
KyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29va2llc0NGKEFkb3B0Q0YsIENGSFRUUENvb2tp
ZVN0b3JhZ2VDb3B5Q29va2llc0ZvclVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwg
dXJsQ0YuZ2V0KCksIHNlbmRTZWN1cmVDb29raWVzKSk7CiAKICAgICBDRkluZGV4IGNvdW50ID0g
Q0ZBcnJheUdldENvdW50KGNvb2tpZXNDRi5nZXQoKSk7CiAgICAgcmF3Q29va2llcy5yZXNlcnZl
Q2FwYWNpdHkoY291bnQpOwpAQCAtMTkwLDEwICsxNzUsOSBAQCBib29sIGdldFJhd0Nvb2tpZXMo
TmV0d29ya2luZ0NvbnRleHQqIGNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgZGVsZXRl
Q29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgbmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgUmV0
YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8g
Y3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2ll
U3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsKKyAgICBSZXRhaW5QdHI8Q0ZI
VFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IHNlc3Npb24uY29va2llU3RvcmFn
ZSgpOwogCiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmxDRihBZG9wdENGLCB1cmwuY3JlYXRl
Q0ZVUkwoKSk7CiAKQEAgLTIxMCwxMiArMTk0LDkgQEAgdm9pZCBkZWxldGVDb29raWUoTmV0d29y
a2luZ0NvbnRleHQqIGNvbgogICAgIH0KIH0KIAotdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2ll
cyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMp
Cit2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7Ci0gICAgUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRU
UENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwot
ICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsKLQotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBj
b29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzKGNvb2tpZVN0
b3JhZ2UuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29va2llc0NGKEFkb3B0
Q0YsIENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2llcyhzZXNzaW9uLmNvb2tpZVN0b3JhZ2Uo
KS5nZXQoKSkpOwogICAgIGlmICghY29va2llc0NGKQogICAgICAgICByZXR1cm47CiAKQEAgLTIy
NywxMCArMjA4LDkgQEAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQwog
ICAgIH0KIH0KIAotdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFN0cmluZyYg
aG9zdG5hbWUpCiB7Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tp
ZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkg
OiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVTdG9yYWdl
KTsKKyAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9
IHNlc3Npb24uY29va2llU3RvcmFnZSgpOwogCiAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNv
b2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXMoY29va2llU3Rv
cmFnZS5nZXQoKSkpOwogICAgIGlmICghY29va2llc0NGKQpAQCAtMjQ1LDEyICsyMjUsOSBAQCB2
b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShOZXR3b3JraW5nCiAgICAgfQogfQogCi12b2lk
IGRlbGV0ZUFsbENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCit2b2lkIGRlbGV0
ZUFsbENvb2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQogewotICAgIFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1
cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0
b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7Ci0KLSAgICBDRkhUVFBDb29raWVT
dG9yYWdlRGVsZXRlQWxsQ29va2llcyhjb29raWVTdG9yYWdlLmdldCgpKTsKKyAgICBDRkhUVFBD
b29raWVTdG9yYWdlRGVsZXRlQWxsQ29va2llcyhzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQo
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAJ
KHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
Q29va2llU3RvcmFnZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOSArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2UuaCIKIAotI2luY2x1
ZGUgIkNvb2tpZVN0b3JhZ2VDRk5ldC5oIgotCi0jaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIK
KyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNDgsNTYgKzQ2LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAjaWYgUExBVEZPUk0oV0lOKQogCi1zdGF0aWMgUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+JiBjb29raWVTdG9yYWdlT3ZlcnJpZGUoKQotewotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+LCBjb29raWVT
dG9yYWdlLCAoKSk7Ci0gICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2U7Ci19Ci0KLSNlbmRpZgotCi1S
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY3VycmVudENGSFRUUENvb2tpZVN0b3Jh
Z2UoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCi17Ci0jaWYgUExBVEZPUk0oV0lOKQotICAg
IGlmIChSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4mIG92ZXJyaWRlID0gY29va2ll
U3RvcmFnZU92ZXJyaWRlKCkpCi0gICAgICAgIHJldHVybiBvdmVycmlkZTsKLSNlbmRpZgotCi0g
ICAgaWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VT
ZXNzaW9uKCkpCi0gICAgICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJl
Zj4oQWRvcHRDRiwgd2tDb3B5SFRUUENvb2tpZVN0b3JhZ2Uoc2Vzc2lvbikpOwotCi0jaWYgVVNF
KENGTkVUV09SSykKLSAgICByZXR1cm4gd2tHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UoKTsK
LSNlbHNlCi0gICAgLy8gV2hlbiB1c2luZyBOU1VSTENvbm5lY3Rpb24sIHdlIGFsc28gdXNlIGl0
cyBzaGFyZWQgY29va2llIHN0b3JhZ2UuCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotUmV0
YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdl
KCkKLXsKLSNpZiBQTEFURk9STShXSU4pCi0gICAgaWYgKFJldGFpblB0cjxDRkhUVFBDb29raWVT
dG9yYWdlUmVmPiYgb3ZlcnJpZGUgPSBjb29raWVTdG9yYWdlT3ZlcnJpZGUoKSkKLSAgICAgICAg
cmV0dXJuIG92ZXJyaWRlOwotI2VuZGlmCi0KLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPmNvb2tpZXNTdHJhdGVneSgpLT5kZWZhdWx0Q29va2llU3RvcmFnZSgpOwotfQotCi0jaWYg
UExBVEZPUk0oV0lOKQotCi12b2lkIG92ZXJyaWRlQ29va2llU3RvcmFnZShDRkhUVFBDb29raWVT
dG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICAvLyBGSVhNRTogV2h5IGRvbid0IHdlIHJldGFpbiBpdD8gVGhlIG9ubHkgY2FsbGVyIGlz
IGFuIEFQSSBtZXRob2QgdGhhdCB0YWtlcyBjb29raWUgc3RvcmFnZSBhcyBhIHJhdyBhcmd1bWVu
dC4KLSAgICBjb29raWVTdG9yYWdlT3ZlcnJpZGUoKS5hZG9wdENGKGNvb2tpZVN0b3JhZ2UpOwot
fQotCi1DRkhUVFBDb29raWVTdG9yYWdlUmVmIG92ZXJyaWRlbkNvb2tpZVN0b3JhZ2UoKQotewot
ICAgIHJldHVybiBjb29raWVTdG9yYWdlT3ZlcnJpZGUoKS5nZXQoKTsKLX0KLQogc3RhdGljIHZv
aWQgbm90aWZ5Q29va2llc0NoYW5nZWRPbk1haW5UaHJlYWQodm9pZCopCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKQEAgLTEzMCw3ICs3OCw3IEBAIHZvaWQgc3RhcnRPYnNlcnZpbmdD
b29raWVDaGFuZ2VzKCkKICAgICBDRlJ1bkxvb3BSZWYgcnVuTG9vcCA9IGNvb2tpZVN0b3JhZ2VP
YnNlcnZlclJ1bkxvb3AoKTsKICAgICBBU1NFUlQocnVuTG9vcCk7CiAKLSAgICBSZXRhaW5QdHI8
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGRlZmF1bHRDRkhUVFBDb29r
aWVTdG9yYWdlKCk7CisgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tp
ZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigp
LmNvb2tpZVN0b3JhZ2UoKTsKICAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7CiAKICAgICBDRkhU
VFBDb29raWVTdG9yYWdlU2NoZWR1bGVXaXRoUnVuTG9vcChjb29raWVTdG9yYWdlLmdldCgpLCBy
dW5Mb29wLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwpAQCAtMTQ0LDcgKzkyLDcgQEAgdm9pZCBz
dG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpCiAgICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBj
b29raWVTdG9yYWdlT2JzZXJ2ZXJSdW5Mb29wKCk7CiAgICAgQVNTRVJUKHJ1bkxvb3ApOwogCi0g
ICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBkZWZh
dWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOworICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9y
YWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3Rv
cmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCk7CiAgICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2Up
OwogCiAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVJlbW92ZU9ic2VydmVyKGNvb2tpZVN0b3JhZ2Uu
Z2V0KCksIHJ1bkxvb3AsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSwgbm90aWZ5Q29va2llc0NoYW5n
ZWQsIDApOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVT
dG9yYWdlQ0ZOZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIENvb2tpZVN0b3JhZ2VD
Rk5ldF9oCi0jZGVmaW5lIENvb2tpZVN0b3JhZ2VDRk5ldF9oCi0KLSNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+Ci0KLXR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0b3JhZ2UqICBD
RkhUVFBDb29raWVTdG9yYWdlUmVmOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE5l
dHdvcmtpbmdDb250ZXh0OwotCi1SZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY3Vy
cmVudENGSFRUUENvb2tpZVN0b3JhZ2UoTmV0d29ya2luZ0NvbnRleHQqKTsgLy8gV2lsbCBiZSBu
dWxsIHdoZW4gdXNpbmcgc2hhcmVkIE5TSFRUUENvb2tpZVN0b3JhZ2UuCi1SZXRhaW5QdHI8Q0ZI
VFRQQ29va2llU3RvcmFnZVJlZj4gZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsgLy8gRG9l
c24ndCB0YWtlIGN1cnJlbnQgc2Vzc2lvbiBpbnRvIGFjY291bnQuCi0KLSNpZiBQTEFURk9STShX
SU4pCi0vLyBOZWVkZWQgZm9yIFdlYktpdDEgQVBJIG9ubHkuCi12b2lkIG92ZXJyaWRlQ29va2ll
U3RvcmFnZShDRkhUVFBDb29raWVTdG9yYWdlUmVmKTsKLUNGSFRUUENvb2tpZVN0b3JhZ2VSZWYg
b3ZlcnJpZGVuQ29va2llU3RvcmFnZSgpOwotI2VuZGlmCi0KLX0KLQotI2VuZGlmIC8vIENvb2tp
ZVN0b3JhZ2VDRk5ldF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExOCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaCIKKworI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24oQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBwbGF0Zm9ybVNlc3Npb24pCisgICAgOiBt
X3BsYXRmb3JtU2Vzc2lvbihwbGF0Zm9ybVNlc3Npb24pCisgICAgLCBtX2lzUHJpdmF0ZShmYWxz
ZSkKK3sKK30KKworc3RhdGljIE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBkZWZhdWx0
TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4sIHNl
c3Npb24sICgpKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKQoreworICAgIC8vIFNldCBhIHBy
aXZhdGUgc2Vzc2lvbiBmb3IgdGVzdGluZyB0byBhdm9pZCBpbnRlcmZlcmluZyB3aXRoIGdsb2Jh
bCBjb29raWVzLiBUaGlzIHNob3VsZCBiZSBkaWZmZXJlbnQgZnJvbSBwcml2YXRlIGJyb3dzaW5n
IHNlc3Npb24uCisgICAgLy8gRklYTUU6IEl0IGxvb2tzIGxpa2UgY3JlYXRpbmcgYSBuZXcgc2Vz
c2lvbiB3aXRoIHRoZSBzYW1lIGlkZW50aWZpZXIgbWF5IGJlIGp1c3QgY3JlYXRpbmcgYSByZWZl
cmVuY2UgdG8gdGhlIHNhbWUgc3RvcmFnZS4gU2VlIDxyZGFyOi8vcHJvYmxlbS8xMTU3MTQ1MD4g
YW5kIDxyZGFyOi8vcHJvYmxlbS8xMjM4NDM4MD4uCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGRl
ZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSA9IGFkb3B0UHRyKG5ldyBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24od2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTVFIoIlByaXZhdGUgV2Vi
S2l0IFNlc3Npb24iKSkpKTsKKyNlbHNlCisgICAgZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bigpID0gYWRvcHRQdHIobmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbih3a0NyZWF0ZVByaXZhdGVT
dG9yYWdlU2Vzc2lvbihDRlNUUigiUHJpdmF0ZSBXZWJLaXQgU2Vzc2lvbiIpLCBkZWZhdWx0TmV0
d29ya1N0b3JhZ2VTZXNzaW9uKCktPnBsYXRmb3JtU2Vzc2lvbigpKSkpOworI2VuZGlmCit9CisK
KyNpZiBQTEFURk9STShXSU4pCitzdGF0aWMgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWY+JiBjb29raWVTdG9yYWdlT3ZlcnJpZGUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
UmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+LCBjb29raWVTdG9yYWdlLCAoKSk7Cisg
ICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2U7Cit9CisKK3ZvaWQgb3ZlcnJpZGVDb29raWVTdG9yYWdl
KENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSkKK3sKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIC8vIEZJWE1FOiBXaHkgZG9uJ3Qgd2UgcmV0YWluIGl0PyBUaGUg
b25seSBjYWxsZXIgaXMgYW4gQVBJIG1ldGhvZCB0aGF0IHRha2VzIGNvb2tpZSBzdG9yYWdlIGFz
IGEgcmF3IGFyZ3VtZW50LgorICAgIGNvb2tpZVN0b3JhZ2VPdmVycmlkZSgpLmFkb3B0Q0YoY29v
a2llU3RvcmFnZSk7Cit9CisKK0NGSFRUUENvb2tpZVN0b3JhZ2VSZWYgb3ZlcnJpZGVuQ29va2ll
U3RvcmFnZSgpCit7CisgICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2VPdmVycmlkZSgpLmdldCgpOwor
fQorI2VuZGlmCisKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKQoreworICAgIGlmICghZGVmYXVsdE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbigpKQorICAgICAgICBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgPSBh
ZG9wdFB0cihuZXcgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKDApKTsKKyAgICByZXR1cm4gKmRlZmF1
bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsKK30KKworUGFzc093blB0cjxOZXR3b3JrU3RvcmFn
ZVNlc3Npb24+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlKQoreworICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gY2ZJZGVudGlmaWVyID0gU3RyaW5nKGlkZW50aWZpZXJCYXNlICsgIi5Qcml2YXRl
QnJvd3NpbmciKS5jcmVhdGVDRlN0cmluZygpOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIE93
blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IHNlc3Npb24gPSBhZG9wdFB0cihuZXcgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uKHdrQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKGNmSWRlbnRpZmll
ci5nZXQoKSkpKTsKKyNlbHNlCisgICAgT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gc2Vz
c2lvbiA9IGFkb3B0UHRyKG5ldyBOZXR3b3JrU3RvcmFnZVNlc3Npb24od2tDcmVhdGVQcml2YXRl
U3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpLCBkZWZhdWx0TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uKCktPnBsYXRmb3JtU2Vzc2lvbigpKSkpOworI2VuZGlmCisgICAgc2Vzc2lvbi0+bV9p
c1ByaXZhdGUgPSB0cnVlOworCisgICAgcmV0dXJuIHNlc3Npb24ucmVsZWFzZSgpOworfQorCitS
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
b29raWVTdG9yYWdlKCkgY29uc3QKK3sKKyNpZiBQTEFURk9STShXSU4pCisgICAgaWYgKFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiYgb3ZlcnJpZGUgPSBjb29raWVTdG9yYWdlT3Zl
cnJpZGUoKSkKKyAgICAgICAgcmV0dXJuIG92ZXJyaWRlOworI2VuZGlmCisKKyAgICBpZiAobV9w
bGF0Zm9ybVNlc3Npb24pCisgICAgICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3Rv
cmFnZVJlZj4oQWRvcHRDRiwgd2tDb3B5SFRUUENvb2tpZVN0b3JhZ2UobV9wbGF0Zm9ybVNlc3Np
b24uZ2V0KCkpKTsKKworI2lmIFVTRShDRk5FVFdPUkspCisgICAgcmV0dXJuIHdrR2V0RGVmYXVs
dEhUVFBDb29raWVTdG9yYWdlKCk7CisjZWxzZQorICAgIC8vIFdoZW4gdXNpbmcgTlNVUkxDb25u
ZWN0aW9uLCB3ZSBhbHNvIHVzZSBpdHMgc2hhcmVkIGNvb2tpZSBzdG9yYWdlLgorICAgIHJldHVy
biAwOworI2VuZGlmCit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAkocmV2aXNpb24g
MTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogCiAjaW5jbHVk
ZSAiQXV0aGVudGljYXRpb25DRi5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmgiCi0jaW5jbHVkZSAiQ29va2llU3RvcmFnZUNGTmV0LmgiCiAjaW5jbHVkZSAiQ3JlZGVudGlh
bFN0b3JhZ2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUg
IkZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCIKQEAgLTM4LDYgKzM3LDcgQEAKICNpbmNsdWRlICJMb2Fk
ZXJSdW5Mb29wQ0YuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVS
ZWdpc3RyeS5oIgorI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXNwb25zZS5oIgpAQCAtMTY1LDcgKzE2NSw3IEBAIHN0YXRpYyBDRlVSTFJl
cXVlc3RSZWYgd2lsbFNlbmRSZXF1ZXN0KEMKICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gbmV3TWV0aG9kID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RNZXRo
b2QoY2ZSZXF1ZXN0KSk7CiAgICAgICAgICAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlV2l0aE9wdGlv
bnMobGFzdEhUVFBNZXRob2QuZ2V0KCksIG5ld01ldGhvZC5nZXQoKSwgQ0ZSYW5nZU1ha2UoMCwg
Q0ZTdHJpbmdHZXRMZW5ndGgobGFzdEhUVFBNZXRob2QuZ2V0KCkpKSwga0NGQ29tcGFyZUNhc2VJ
bnNlbnNpdGl2ZSkpIHsKICAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlVVJMUmVx
dWVzdFJlZj4gbXV0YWJsZVJlcXVlc3QoQWRvcHRDRiwgQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJs
ZUNvcHkoMCwgY2ZSZXF1ZXN0KSk7Ci0gICAgICAgICAgICAgICAgd2tTZXRSZXF1ZXN0U3RvcmFn
ZVNlc3Npb24oaGFuZGxlLT5zdG9yYWdlU2Vzc2lvbigpLCBtdXRhYmxlUmVxdWVzdC5nZXQoKSk7
CisgICAgICAgICAgICAgICAgd2tTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24oaGFuZGxlLT5zdG9y
YWdlU2Vzc2lvbigpLnBsYXRmb3JtU2Vzc2lvbigpLCBtdXRhYmxlUmVxdWVzdC5nZXQoKSk7CiAg
ICAgICAgICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RNZXRob2QobXV0YWJsZVJl
cXVlc3QuZ2V0KCksIGxhc3RIVFRQTWV0aG9kLmdldCgpKTsKIAogICAgICAgICAgICAgICAgIEZv
cm1EYXRhKiBib2R5ID0gaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5odHRwQm9keSgpOwpAQCAtMzk5
LDcgKzM5OSw3IEBAIHN0YXRpYyBib29sIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZVAKIHsK
ICAgICAvLyBJZiBhIFVSTCBhbHJlYWR5IGhhcyBjb29raWVzLCB0aGVuIHdlJ2xsIHJlbGF4IHRo
ZSAzcmQgcGFydHkgY29va2llIHBvbGljeSBhbmQgYWNjZXB0IG5ldyBjb29raWVzLgogCi0gICAg
UmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNmQ29va2llU3RvcmFnZSA9IGN1cnJl
bnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpOworICAgIFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiBjZkNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigp
LmNvb2tpZVN0b3JhZ2UoKTsKICAgICBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5IGNv
b2tpZUFjY2VwdFBvbGljeSA9IENGSFRUUENvb2tpZVN0b3JhZ2VHZXRDb29raWVBY2NlcHRQb2xp
Y3koY2ZDb29raWVTdG9yYWdlLmdldCgpKTsKIAogICAgIGlmIChjb29raWVBY2NlcHRQb2xpY3kg
IT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9t
YWluKQpAQCAtNTA2LDcgKzUwNiw3IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KE5ldHdv
cmtpbmdDb24KICAgICBpZiAoIWNvbnRleHQtPmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9u
KCk7CisgICAgZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCku
cGxhdGZvcm1TZXNzaW9uKCk7CiAKICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
ID0gIWNsaWVudCgpIHx8IGNsaWVudCgpLT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSh0aGlz
KTsKIApAQCAtNzQxLDcgKzc0MSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJj
ZVN5bmNocm8KIAogICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gaGFuZGxlID0gYWRvcHRSZWYo
bmV3IFJlc291cmNlSGFuZGxlKHJlcXVlc3QsIGNsaWVudC5nZXQoKSwgZmFsc2UgLypkZWZlcnNM
b2FkaW5nKi8sIHRydWUgLypzaG91bGRDb250ZW50U25pZmYqLykpOwogCi0gICAgaGFuZGxlLT5k
LT5tX3N0b3JhZ2VTZXNzaW9uID0gY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKTsKKyAgICBoYW5k
bGUtPmQtPm1fc3RvcmFnZVNlc3Npb24gPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLnBsYXRm
b3JtU2Vzc2lvbigpOwogCiAgICAgaWYgKGhhbmRsZS0+ZC0+bV9zY2hlZHVsZWRGYWlsdXJlVHlw
ZSAhPSBOb0ZhaWx1cmUpIHsKICAgICAgICAgZXJyb3IgPSBjb250ZXh0LT5ibG9ja2VkRXJyb3Io
cmVxdWVzdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVt
L0Nvb2tpZUphckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2Nocm9taXVtL0Nvb2tpZUphckNocm9taXVtLmNwcAkocmV2aXNpb24gMTM4
NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9Db29raWVK
YXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDU1ICs0MSw1NSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyKQordm9pZCBzZXRDb29raWVzRnJvbURPTShO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHlGb3JD
b29raWVzLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyKQogewotICAg
IGlmICghY29udGV4dCkKKyAgICBpZiAoIXNlc3Npb24uY29udGV4dCgpKQogICAgICAgICByZXR1
cm47Ci0gICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9IGNvbnRleHQtPmNvb2tp
ZUphcigpOworICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVKYXIgPSBzZXNzaW9uLmNv
bnRleHQoKS0+Y29va2llSmFyKCk7CiAgICAgaWYgKGNvb2tpZUphcikKICAgICAgICAgY29va2ll
SmFyLT5zZXRDb29raWUodXJsLCBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29va2llU3RyKTsKIH0K
IAotU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29v
a2llc0ZvckRPTShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgaWYgKCFjb250ZXh0
KQorICAgIGlmICghc2Vzc2lvbi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
ICAgICBTdHJpbmcgcmVzdWx0OwotICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVKYXIg
PSBjb250ZXh0LT5jb29raWVKYXIoKTsKKyAgICBXZWJLaXQ6OldlYkNvb2tpZUphciogY29va2ll
SmFyID0gc2Vzc2lvbi5jb250ZXh0KCktPmNvb2tpZUphcigpOwogICAgIGlmIChjb29raWVKYXIp
CiAgICAgICAgIHJlc3VsdCA9IGNvb2tpZUphci0+Y29va2llcyh1cmwsIGZpcnN0UGFydHlGb3JD
b29raWVzKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1TdHJpbmcgY29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgS1VSTCYgdXJsKQogewotICAgIGlmICgh
Y29udGV4dCkKKyAgICBpZiAoIXNlc3Npb24uY29udGV4dCgpKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAgICAgU3RyaW5nIHJlc3VsdDsKLSAgICBXZWJLaXQ6OldlYkNvb2tpZUphciogY29v
a2llSmFyID0gY29udGV4dC0+Y29va2llSmFyKCk7CisgICAgV2ViS2l0OjpXZWJDb29raWVKYXIq
IGNvb2tpZUphciA9IHNlc3Npb24uY29udGV4dCgpLT5jb29raWVKYXIoKTsKICAgICBpZiAoY29v
a2llSmFyKQogICAgICAgICByZXN1bHQgPSBjb29raWVKYXItPmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKHVybCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEtVUkwmIGNvb2tpZVVSTCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMpCiti
b29sIGNvb2tpZXNFbmFibGVkKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
S1VSTCYgY29va2llVVJMLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcykKIHsKICAg
ICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIGlmICghY29udGV4dCkKKyAgICBpZiAoIXNlc3Np
b24uY29udGV4dCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIFdlYktpdDo6V2ViQ29v
a2llSmFyKiBjb29raWVKYXIgPSBjb250ZXh0LT5jb29raWVKYXIoKTsKKyAgICBXZWJLaXQ6Oldl
YkNvb2tpZUphciogY29va2llSmFyID0gc2Vzc2lvbi5jb250ZXh0KCktPmNvb2tpZUphcigpOwog
ICAgIGlmIChjb29raWVKYXIpCiAgICAgICAgIHJlc3VsdCA9IGNvb2tpZUphci0+Y29va2llc0Vu
YWJsZWQoY29va2llVVJMLCBmaXJzdFBhcnR5Rm9yQ29va2llcyk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8
Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2llcyhOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBL
VVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewogICAgIHJhd0Nvb2tpZXMu
Y2xlYXIoKTsKLSAgICBpZiAoIWNvbnRleHQpCisgICAgaWYgKCFzZXNzaW9uLmNvbnRleHQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFdlYktpdDo6V2ViVmVjdG9yPFdlYktpdDo6V2Vi
Q29va2llPiB3ZWJDb29raWVzOwotICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVKYXIg
PSBjb250ZXh0LT5jb29raWVKYXIoKTsKKyAgICBXZWJLaXQ6OldlYkNvb2tpZUphciogY29va2ll
SmFyID0gc2Vzc2lvbi5jb250ZXh0KCktPmNvb2tpZUphcigpOwogICAgIGlmIChjb29raWVKYXIp
CiAgICAgICAgIGNvb2tpZUphci0+cmF3Q29va2llcyh1cmwsIGZpcnN0UGFydHlGb3JDb29raWVz
LCB3ZWJDb29raWVzKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgd2ViQ29va2llcy5z
aXplKCk7ICsraSkgewpAQCAtMTAwLDI2ICsxMDAsMjYgQEAgYm9vbCBnZXRSYXdDb29raWVzKE5l
dHdvcmtpbmdDb250ZXh0KiBjbwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIGRlbGV0ZUNv
b2tpZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQog
ewotICAgIGlmICghY29udGV4dCkKKyAgICBpZiAoIXNlc3Npb24uY29udGV4dCgpKQogICAgICAg
ICByZXR1cm47Ci0gICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9IGNvbnRleHQt
PmNvb2tpZUphcigpOworICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVKYXIgPSBzZXNz
aW9uLmNvbnRleHQoKS0+Y29va2llSmFyKCk7CiAgICAgaWYgKGNvb2tpZUphcikKICAgICAgICAg
Y29va2llSmFyLT5kZWxldGVDb29raWUodXJsLCBjb29raWVOYW1lKTsKIH0KIAotdm9pZCBnZXRI
b3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCogLypjb250ZXh0Ki8sIEhhc2hT
ZXQ8U3RyaW5nPiYgLypob3N0bmFtZXMqLykKK3ZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNldDxTdHJpbmc+JiAvKmhvc3RuYW1lcyovKQog
ewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRlQ29v
a2llc0Zvckhvc3RuYW1lKE5ldHdvcmtpbmdDb250ZXh0KiAvKmNvbnRleHQqLywgY29uc3QgU3Ry
aW5nJiAvKmhvc3RuYW1lKi8pCit2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBTdHJpbmcmIC8qaG9zdG5hbWUqLykKIHsKICAgICAvLyBG
SVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQogCi12b2lkIGRlbGV0ZUFsbENvb2tpZXMoTmV0
d29ya2luZ0NvbnRleHQqIC8qY29udGV4dCovKQordm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3Vy
Y2VIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2hyb21pdW0vUmVzb3VyY2VIYW5kbGUuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1Jlc291cmNlSGFuZGxlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5o
IgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJD
dXJsLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw1MCArMjcs
NTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz4gY29va2llSmFyOwogCi12b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0
KiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3Zv
aWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYs
IGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBjb29raWVKYXIu
c2V0KHVybC5zdHJpbmcoKSwgdmFsdWUpOwogfQogCi1TdHJpbmcgY29va2llc0ZvckRPTShOZXR3
b3JraW5nQ29udGV4dCosIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29v
a2llc0ZvckRPTShOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgS1VS
TCYgdXJsKQogewogICAgIHJldHVybiBjb29raWVKYXIuZ2V0KHVybC5zdHJpbmcoKSk7CiB9CiAK
LVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCog
Y29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKK1N0
cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQogewogICAgIC8v
IEZJWE1FOiBpbmNsdWRlIEh0dHBPbmx5IGNvb2tpZS4KICAgICByZXR1cm4gY29va2llSmFyLmdl
dCh1cmwuc3RyaW5nKCkpOwogfQogCi1ib29sIGNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1
cmwqLykKK2Jvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
S1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCiB7CiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWJvb2wgZ2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4
dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8sIFZlY3Rv
cjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCov
LCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBp
bXBsZW1lbnRlZAogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKICAgICByZXR1cm4gZmFsc2U7IC8v
IHJldHVybiB0cnVlIHdoZW4gaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxldGVDb29raWUoTmV0
d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKK3ZvaWQgZGVsZXRl
Q29va2llKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcm
KQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZ2V0SG9z
dG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqLCBIYXNoU2V0PFN0cmluZz4mIGhv
c3RuYW1lcykKK3ZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5
ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29y
a2luZ0NvbnRleHQqLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQordm9pZCBkZWxldGVDb29raWVz
Rm9ySG9zdG5hbWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgU3RyaW5nJiBob3N0bmFt
ZSkKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQogCi12b2lkIGRlbGV0
ZUFsbENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqKQordm9pZCBkZWxldGVBbGxDb29raWVzKE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50
ZWQKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZUhhbmRsZUN1cmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlJlc291cmNlSGFu
ZGxlLmgiCiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIk5l
dHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRl
ICJSZXNvdXJjZUhhbmRsZUludGVybmFsLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVNYW5h
Z2VyLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVK
YXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvQ29va2llSmFyTWFjLm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMx
LDkgKzMxLDggQEAKICNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiQ29va2ll
LmgiCiAjaW1wb3J0ICJDb29raWVTdG9yYWdlLmgiCi0jaW1wb3J0ICJDb29raWVTdG9yYWdlQ0ZO
ZXQuaCIKICNpbXBvcnQgIktVUkwuaCIKLSNpbXBvcnQgIk5ldHdvcmtpbmdDb250ZXh0LmgiCisj
aW1wb3J0ICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1J
bnRlcmZhY2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjIsMzEgKzYxLDI5IEBAIHN0
YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gZmlsdGVyQ29va2llcygKICAgICByZXR1cm4gZmlsdGVy
ZWRDb29raWVzOwogfQogCi1TdHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCog
Y29udGV4dCwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVzRm9y
RE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYsIGNv
bnN0IEtVUkwmIHVybCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAg
ICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRl
eHQgPyBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBD
b29raWVTdG9yYWdlKCk7Ci0gICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXNGb3JV
UkwoY29va2llU3RvcmFnZS5nZXQoKSwgdXJsKTsKKyAgICBOU0FycmF5ICpjb29raWVzID0gd2tI
VFRQQ29va2llc0ZvclVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsKTsKICAg
ICByZXR1cm4gW1tOU0hUVFBDb29raWUgcmVxdWVzdEhlYWRlckZpZWxkc1dpdGhDb29raWVzOmZp
bHRlckNvb2tpZXMoY29va2llcykuZ2V0KCldIG9iamVjdEZvcktleTpAIkNvb2tpZSJdOwogCiAg
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAK
LVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCog
Y29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKK1N0
cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1
cmwpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgUmV0YWluUHRy
PENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVu
dENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFn
ZSgpOwotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hUVFBDb29raWVzRm9yVVJMKGNvb2tpZVN0
b3JhZ2UuZ2V0KCksIHVybCk7CisgICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXNG
b3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHVybCk7CiAgICAgcmV0dXJuIFtb
TlNIVFRQQ29va2llIHJlcXVlc3RIZWFkZXJGaWVsZHNXaXRoQ29va2llczpjb29raWVzXSBvYmpl
Y3RGb3JLZXk6QCJDb29raWUiXTsKIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAg
ICAgcmV0dXJuIFN0cmluZygpOwogfQogCi12b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtp
bmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyKQordm9pZCBzZXRDb29raWVzRnJvbURPTShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHks
IGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpCiB7CiAgICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCkBAIC0xMDMsMzEgKzEwMCwyOCBAQCB2b2lkIHNldENv
b2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IGZp
bHRlcmVkQ29va2llcyA9IGZpbHRlckNvb2tpZXMoW05TSFRUUENvb2tpZSBjb29raWVzV2l0aFJl
c3BvbnNlSGVhZGVyRmllbGRzOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6Y29v
a2llU3RyaW5nIGZvcktleTpAIlNldC1Db29raWUiXSBmb3JVUkw6Y29va2llVVJMXSk7CiAgICAg
QVNTRVJUKFtmaWx0ZXJlZENvb2tpZXMuZ2V0KCkgY291bnRdIDw9IDEpOwogCi0gICAgUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3Vy
cmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3Rv
cmFnZSgpOwotICAgIHdrU2V0SFRUUENvb2tpZXNGb3JVUkwoY29va2llU3RvcmFnZS5nZXQoKSwg
ZmlsdGVyZWRDb29raWVzLmdldCgpLCBjb29raWVVUkwsIGZpcnN0UGFydHkpOworICAgIHdrU2V0
SFRUUENvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIGZpbHRlcmVk
Q29va2llcy5nZXQoKSwgY29va2llVVJMLCBmaXJzdFBhcnR5KTsKIAogICAgIEVORF9CTE9DS19P
QkpDX0VYQ0VQVElPTlM7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVy
bCovKQorYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQog
ewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIFJldGFpblB0cjxDRkhU
VFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhU
VFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsK
LSAgICBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kgY29va2llQWNjZXB0UG9saWN5ID0gc3RhdGlj
X2Nhc3Q8TlNIVFRQQ29va2llQWNjZXB0UG9saWN5Pih3a0dldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koY29va2llU3RvcmFnZS5nZXQoKSkpOworICAgIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSBj
b29raWVBY2NlcHRQb2xpY3kgPSBzdGF0aWNfY2FzdDxOU0hUVFBDb29raWVBY2NlcHRQb2xpY3k+
KHdrR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQo
KSkpOwogICAgIHJldHVybiBjb29raWVBY2NlcHRQb2xpY3kgPT0gTlNIVFRQQ29va2llQWNjZXB0
UG9saWN5QWx3YXlzIHx8IGNvb2tpZUFjY2VwdFBvbGljeSA9PSBOU0hUVFBDb29raWVBY2NlcHRQ
b2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjsKIAogICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMoTmV0
d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25z
dCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBnZXRSYXdDb29r
aWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypm
aXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMp
CiB7CiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKIAotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9y
YWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVm
YXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBOU0FycmF5ICpjb29raWVzID0gd2tIVFRQ
Q29va2llc0ZvclVSTChjb29raWVTdG9yYWdlLmdldCgpLCB1cmwpOworICAgIE5TQXJyYXkgKmNv
b2tpZXMgPSB3a0hUVFBDb29raWVzRm9yVVJMKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgp
LCB1cmwpOwogICAgIE5TVUludGVnZXIgY291bnQgPSBbY29va2llcyBjb3VudF07CiAgICAgcmF3
Q29va2llcy5yZXNlcnZlQ2FwYWNpdHkoY291bnQpOwogICAgIGZvciAoTlNVSW50ZWdlciBpID0g
MDsgaSA8IGNvdW50OyArK2kpIHsKQEAgLTE0MSwxMiArMTM1LDEyIEBAIGJvb2wgZ2V0UmF3Q29v
a2llcyhOZXR3b3JraW5nQ29udGV4dCogY28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBk
ZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
Y29va2llTmFtZSkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKICAgICBO
U1VSTCAqY29va2llVVJMID0gdXJsOwotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdl
UmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdl
KGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKKyAgICBSZXRhaW5QdHI8
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IHNlc3Npb24uY29va2llU3Rv
cmFnZSgpOwogICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hUVFBDb29raWVzRm9yVVJMKGNvb2tp
ZVN0b3JhZ2UuZ2V0KCksIGNvb2tpZVVSTCk7CiAKICAgICBOU1N0cmluZyAqY29va2llTmFtZVN0
cmluZyA9IGNvb2tpZU5hbWU7CkBAIC0xNjEsMTIgKzE1NSwxMSBAQCB2b2lkIGRlbGV0ZUNvb2tp
ZShOZXR3b3JraW5nQ29udGV4dCogY29uCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
IH0KIAotdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29u
dGV4dCwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCit2b2lkIGdldEhvc3RuYW1lc1dpdGhD
b29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgSGFzaFNldDxTdHJp
bmc+JiBob3N0bmFtZXMpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0g
ICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250
ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQ
Q29va2llU3RvcmFnZSgpOwotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hUVFBDb29raWVzKGNv
b2tpZVN0b3JhZ2UuZ2V0KCkpOworICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hUVFBDb29raWVz
KHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpKTsKICAgICAKICAgICBmb3IgKE5TSFRUUENv
b2tpZSogY29va2llIGluIGNvb2tpZXMpCiAgICAgICAgIGhvc3RuYW1lcy5hZGQoW2Nvb2tpZSBk
b21haW5dKTsKQEAgLTE3NCwxMSArMTY3LDExIEBAIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tp
ZXMoTmV0d29ya2luZ0MKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCi12b2lk
IGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29u
c3QgU3RyaW5nJiBob3N0bmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkK
IHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBSZXRhaW5QdHI8Q0ZI
VFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBjdXJyZW50Q0ZI
VFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCk7
CisgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBz
ZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKTsKICAgICBOU0FycmF5ICpjb29raWVzID0gd2tIVFRQQ29v
a2llcyhjb29raWVTdG9yYWdlLmdldCgpKTsKICAgICBpZiAoIWNvb2tpZXMpCiAgICAgICAgIHJl
dHVybjsKQEAgLTE5MSwxMCArMTg0LDkgQEAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUo
TmV0d29ya2luZwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKLXZvaWQgZGVs
ZXRlQWxsQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCkKK3ZvaWQgZGVsZXRlQWxs
Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24pCiB7Ci0gICAgUmV0
YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8g
Y3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2ll
U3RvcmFnZSgpOwotICAgIHdrRGVsZXRlQWxsSFRUUENvb2tpZXMoY29va2llU3RvcmFnZS5nZXQo
KSk7CisgICAgd2tEZWxldGVBbGxIVFRQQ29va2llcyhzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5n
ZXQoKSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L0Nvb2tpZVN0b3JhZ2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvQ29va2llU3RvcmFnZU1hYy5tbQkocmV2aXNpb24gMTM4NDA3KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llU3RvcmFnZU1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNiBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiQ29va2llU3RvcmFnZS5oIgotI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2VDRk5ldC5o
IgogCiAjaW1wb3J0ICJSZXNvdXJjZUhhbmRsZS5oIgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQko
cmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VIYW5kbGVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDYgQEAKICNp
bXBvcnQgIkJsb2JSZWdpc3RyeS5oIgogI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1w
b3J0ICJDb29raWVTdG9yYWdlLmgiCi0jaW1wb3J0ICJDb29raWVTdG9yYWdlQ0ZOZXQuaCIKICNp
bXBvcnQgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAjaW1wb3J0ICJDYWNoZWRSZXNvdXJjZUxvYWRl
ci5oIgogI2ltcG9ydCAiRW1wdHlQcm90b2NvbERlZmluaXRpb25zLmgiCkBAIC00Miw2ICs0MSw3
IEBACiAjaW1wb3J0ICJGcmFtZUxvYWRlci5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9y
dCAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2ltcG9ydCAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNp
bXBvcnQgIlBhZ2UuaCIKICNpbXBvcnQgIlJlc291cmNlRXJyb3IuaCIKICNpbXBvcnQgIlJlc291
cmNlUmVzcG9uc2UuaCIKQEAgLTE0Nyw3ICsxNDcsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRSZWxh
eFRoaXJkUGFydHlDb29raWVQCiB7CiAgICAgLy8gSWYgYSBVUkwgYWxyZWFkeSBoYXMgY29va2ll
cywgdGhlbiB3ZSdsbCByZWxheCB0aGUgM3JkIHBhcnR5IGNvb2tpZSBwb2xpY3kgYW5kIGFjY2Vw
dCBuZXcgY29va2llcy4KIAotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBj
ZkNvb2tpZVN0b3JhZ2UgPSBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KTsKKyAg
ICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY2ZDb29raWVTdG9yYWdlID0gY29u
dGV4dC0+c3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCk7CiAgICAgTlNIVFRQQ29va2ll
QWNjZXB0UG9saWN5IGNvb2tpZUFjY2VwdFBvbGljeSA9IHN0YXRpY19jYXN0PE5TSFRUUENvb2tp
ZUFjY2VwdFBvbGljeT4od2tHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNmQ29va2llU3RvcmFn
ZS5nZXQoKSkpOwogCiAgICAgaWYgKGNvb2tpZUFjY2VwdFBvbGljeSAhPSBOU0hUVFBDb29raWVB
Y2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbikKQEAgLTIzMCw3ICsyMzAsNyBA
QCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydChOZXR3b3JraW5nQ29uCiAgICAgaWYgKCFjb250
ZXh0LT5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGQtPm1fc3RvcmFn
ZVNlc3Npb24gPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpOworICAgIGQtPm1fc3RvcmFnZVNl
c3Npb24gPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLnBsYXRmb3JtU2Vzc2lvbigpOwogCiAg
ICAgQVNTRVJUKCFkLT5tX3Byb3h5KTsKICAgICBkLT5tX3Byb3h5LmFkb3B0TlMod2tDcmVhdGVO
U1VSTENvbm5lY3Rpb25EZWxlZ2F0ZVByb3h5KCkpOwpAQCAtMzk2LDcgKzM5Niw3IEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJjZVN5bmNocm8KIAogICAgIFJlZlB0cjxSZXNvdXJj
ZUhhbmRsZT4gaGFuZGxlID0gYWRvcHRSZWYobmV3IFJlc291cmNlSGFuZGxlKHJlcXVlc3QsIGNs
aWVudC5nZXQoKSwgZmFsc2UgLypkZWZlcnNMb2FkaW5nKi8sIHRydWUgLypzaG91bGRDb250ZW50
U25pZmYqLykpOwogCi0gICAgaGFuZGxlLT5kLT5tX3N0b3JhZ2VTZXNzaW9uID0gY29udGV4dC0+
c3RvcmFnZVNlc3Npb24oKTsKKyAgICBoYW5kbGUtPmQtPm1fc3RvcmFnZVNlc3Npb24gPSBjb250
ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLnBsYXRmb3JtU2Vzc2lvbigpOwogCiAgICAgaWYgKGNvbnRl
eHQgJiYgaGFuZGxlLT5kLT5tX3NjaGVkdWxlZEZhaWx1cmVUeXBlICE9IE5vRmFpbHVyZSkgewog
ICAgICAgICBlcnJvciA9IGNvbnRleHQtPmJsb2NrZWRFcnJvcihyZXF1ZXN0KTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvQ29va2llSmFyUXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvQ29va2llSmFyUXQuY3Bw
CShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0
L0Nvb2tpZUphclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTUgKzQ2LDE1IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFNoYXJlZENvb2tpZUphclF0KiBzX3NoYXJlZENvb2tp
ZUphclF0ID0gMDsKIAotdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCog
Y29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIHZhbHVlKQordm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gY29udGV4
dCA/IGNvbnRleHQtPm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCktPmNvb2tpZUphcigpIDogU2hhcmVk
Q29va2llSmFyUXQ6OnNoYXJlZCgpOworICAgIFFOZXR3b3JrQ29va2llSmFyKiBqYXIgPSBzZXNz
aW9uLmNvbnRleHQoKSA/IHNlc3Npb24uY29udGV4dCgpLT5uZXR3b3JrQWNjZXNzTWFuYWdlcigp
LT5jb29raWVKYXIoKSA6IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKICAgICBpZiAoIWph
cikKICAgICAgICAgcmV0dXJuOwogCiAgICAgUVVybCB1cmxGb3JDb29raWVzKHVybCk7CiAgICAg
UVVybCBmaXJzdFBhcnR5VXJsKGZpcnN0UGFydHkpOwotICAgIGlmICghdGhpcmRQYXJ0eUNvb2tp
ZVBvbGljeVBlcm1pdHMoY29udGV4dCwgdXJsRm9yQ29va2llcywgZmlyc3RQYXJ0eVVybCkpCisg
ICAgaWYgKCF0aGlyZFBhcnR5Q29va2llUG9saWN5UGVybWl0cyhzZXNzaW9uLmNvbnRleHQoKSwg
dXJsRm9yQ29va2llcywgZmlyc3RQYXJ0eVVybCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFFM
aXN0PFFOZXR3b3JrQ29va2llPiBjb29raWVzID0gUU5ldHdvcmtDb29raWU6OnBhcnNlQ29va2ll
cyhRU3RyaW5nKHZhbHVlKS50b0xhdGluMSgpKTsKQEAgLTY5LDE1ICs2OSwxNSBAQCB2b2lkIHNl
dENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0CiAgICAgamFyLT5zZXRDb29raWVzRnJv
bVVybChjb29raWVzLCB1cmxGb3JDb29raWVzKTsKIH0KIAotU3RyaW5nIGNvb2tpZXNGb3JET00o
TmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAg
IFFOZXR3b3JrQ29va2llSmFyKiBqYXIgPSBjb250ZXh0ID8gY29udGV4dC0+bmV0d29ya0FjY2Vz
c01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7Cisg
ICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IHNlc3Npb24uY29udGV4dCgpID8gc2Vzc2lvbi5j
b250ZXh0KCktPm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCktPmNvb2tpZUphcigpIDogU2hhcmVkQ29v
a2llSmFyUXQ6OnNoYXJlZCgpOwogICAgIGlmICghamFyKQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAKICAgICBRVXJsIHVybEZvckNvb2tpZXModXJsKTsKICAgICBRVXJsIGZpcnN0UGFydHlV
cmwoZmlyc3RQYXJ0eSk7Ci0gICAgaWYgKCF0aGlyZFBhcnR5Q29va2llUG9saWN5UGVybWl0cyhj
b250ZXh0LCB1cmxGb3JDb29raWVzLCBmaXJzdFBhcnR5VXJsKSkKKyAgICBpZiAoIXRoaXJkUGFy
dHlDb29raWVQb2xpY3lQZXJtaXRzKHNlc3Npb24uY29udGV4dCgpLCB1cmxGb3JDb29raWVzLCBm
aXJzdFBhcnR5VXJsKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgUUxpc3Q8UU5l
dHdvcmtDb29raWU+IGNvb2tpZXMgPSBqYXItPmNvb2tpZXNGb3JVcmwodXJsRm9yQ29va2llcyk7
CkBAIC05NCw5ICs5NCw5IEBAIFN0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0
KiAKICAgICByZXR1cm4gcmVzdWx0Q29va2llcy5qb2luKFFMYXRpbjFTdHJpbmcoIjsgIikpOwog
fQogCi1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwp
CitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJs
KQogewotICAgIFFOZXR3b3JrQ29va2llSmFyKiBqYXIgPSBjb250ZXh0ID8gY29udGV4dC0+bmV0
d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBTaGFyZWRDb29raWVKYXJRdDo6c2hh
cmVkKCk7CisgICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IHNlc3Npb24uY29udGV4dCgpID8g
c2Vzc2lvbi5jb250ZXh0KCktPm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCktPmNvb2tpZUphcigpIDog
U2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOwogICAgIGlmICghamFyKQogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CiAKQEAgLTExMSw0MyArMTExLDQzIEBAIFN0cmluZyBjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShOZXQKICAgICByZXR1cm4gcmVzdWx0Q29va2llcy5qb2luKFFMYXRp
bjFTdHJpbmcoIjsgIikpOwogfQogCi1ib29sIGNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1
cmwqLykKK2Jvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKIHsKLSAg
ICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gY29udGV4dCA/IGNvbnRleHQtPm5ldHdvcmtBY2Nl
c3NNYW5hZ2VyKCktPmNvb2tpZUphcigpIDogU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOwor
ICAgIFFOZXR3b3JrQ29va2llSmFyKiBqYXIgPSBzZXNzaW9uLmNvbnRleHQoKSA/IHNlc3Npb24u
Y29udGV4dCgpLT5uZXR3b3JrQWNjZXNzTWFuYWdlcigpLT5jb29raWVKYXIoKSA6IFNoYXJlZENv
b2tpZUphclF0OjpzaGFyZWQoKTsKICAgICByZXR1cm4gISFqYXI7CiB9CiAKLWJvb2wgZ2V0UmF3
Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBh
cnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8sIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQor
Ym9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
S1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8sIFZlY3RvcjxDb29raWU+
JiByYXdDb29raWVzKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiAgICAg
cmF3Q29va2llcy5jbGVhcigpOwogICAgIHJldHVybiBmYWxzZTsgLy8gcmV0dXJuIHRydWUgd2hl
biBpbXBsZW1lbnRlZAogfQogCi12b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCos
IGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQordm9pZCBkZWxldGVDb29raWUoTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgLy8gRklY
TUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2ll
cyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMp
Cit2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChj
b250ZXh0LCAhY29udGV4dCk7IC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9yIGNvb2tpZSBqYXJz
IG90aGVyIHRoYW4gdGhlIHNoYXJlZCBvbmUuCisgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uLCAh
c2Vzc2lvbi5jb250ZXh0KCkpOyAvLyBOb3QgeWV0IGltcGxlbWVudGVkIGZvciBjb29raWUgamFy
cyBvdGhlciB0aGFuIHRoZSBzaGFyZWQgb25lLgogICAgIFNoYXJlZENvb2tpZUphclF0KiBqYXIg
PSBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgaWYgKGphcikKICAgICAgICAgamFy
LT5nZXRIb3N0bmFtZXNXaXRoQ29va2llcyhob3N0bmFtZXMpOwogfQogCi12b2lkIGRlbGV0ZUNv
b2tpZXNGb3JIb3N0bmFtZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiBob3N0bmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKLSAgICBBU1NFUlRf
VU5VU0VEKGNvbnRleHQsICFjb250ZXh0KTsgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBmb3IgY29v
a2llIGphcnMgb3RoZXIgdGhhbiB0aGUgc2hhcmVkIG9uZS4KKyAgICBBU1NFUlRfVU5VU0VEKHNl
c3Npb24sICFzZXNzaW9uLmNvbnRleHQoKSk7IC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9yIGNv
b2tpZSBqYXJzIG90aGVyIHRoYW4gdGhlIHNoYXJlZCBvbmUuCiAgICAgU2hhcmVkQ29va2llSmFy
UXQqIGphciA9IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKICAgICBpZiAoamFyKQogICAg
ICAgICBqYXItPmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShob3N0bmFtZSk7CiB9CiAKLXZvaWQg
ZGVsZXRlQWxsQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCkKK3ZvaWQgZGVsZXRl
QWxsQ29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24pCiB7Ci0gICAgQVNTRVJU
X1VOVVNFRChjb250ZXh0LCAhY29udGV4dCk7IC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9yIGNv
b2tpZSBqYXJzIG90aGVyIHRoYW4gdGhlIHNoYXJlZCBvbmUuCisgICAgQVNTRVJUX1VOVVNFRChz
ZXNzaW9uLCAhc2Vzc2lvbi5jb250ZXh0KCkpOyAvLyBOb3QgeWV0IGltcGxlbWVudGVkIGZvciBj
b29raWUgamFycyBvdGhlciB0aGFuIHRoZSBzaGFyZWQgb25lLgogICAgIFNoYXJlZENvb2tpZUph
clF0KiBqYXIgPSBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgaWYgKGphcikKICAg
ICAgICAgamFyLT5kZWxldGVBbGxDb29raWVzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwCShyZXZpc2lv
biAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2ll
SmFyU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDExIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotc3RhdGljIFNvdXBDb29raWVKYXIqIGNvb2tpZUphckZvckNvbnRleHQo
TmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCitzdGF0aWMgU291cENvb2tpZUphciogY29va2ll
SmFyRm9yU2Vzc2lvbihOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24pCiB7Ci0gICAgcmV0
dXJuIFNPVVBfQ09PS0lFX0pBUihzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUoY29udGV4dC0+c291
cFNlc3Npb24oKSwgU09VUF9UWVBFX0NPT0tJRV9KQVIpKTsKKyAgICBpZiAoIXNlc3Npb24uY29u
dGV4dCgpKQorICAgICAgICByZXR1cm4gc291cENvb2tpZUphcigpOworICAgIHJldHVybiBTT1VQ
X0NPT0tJRV9KQVIoc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHNlc3Npb24uY29udGV4dCgpLT5z
b3VwU2Vzc2lvbigpLCBTT1VQX1RZUEVfQ09PS0lFX0pBUikpOwogfQogCiBzdGF0aWMgR1JlZlB0
cjxTb3VwQ29va2llSmFyPiYgZGVmYXVsdENvb2tpZUphcigpCkBAIC03Myw5ICs3NSw5IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBodHRwT25seUNvb2tpZUV4aXN0cygKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKK3ZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpCiB7Ci0gICAgU291cENvb2tpZUphciogamFyID0gY29udGV4dCA/IGNvb2tpZUph
ckZvckNvbnRleHQoY29udGV4dCkgOiBzb3VwQ29va2llSmFyKCk7CisgICAgU291cENvb2tpZUph
ciogamFyID0gY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKICAgICBpZiAoIWphcikKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0xMDcsOSArMTA5LDkgQEAgdm9pZCBzZXRDb29raWVzRnJvbURP
TShOZXR3b3JraW5nQ29udGV4dAogICAgIHNvdXBfY29va2llc19mcmVlKGV4aXN0aW5nQ29va2ll
cyk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgY29va2llc0ZvckNvbnRleHQoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBmb3JIVFRQSGVhZGVyKQorc3RhdGlj
IFN0cmluZyBjb29raWVzRm9yU2Vzc2lvbihOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IEtVUkwmIHVybCwgYm9vbCBmb3JIVFRQSGVhZGVyKQogewotICAgIFNvdXBDb29raWVK
YXIqIGphciA9IGNvbnRleHQgPyBjb29raWVKYXJGb3JDb250ZXh0KGNvbnRleHQpIDogc291cENv
b2tpZUphcigpOworICAgIFNvdXBDb29raWVKYXIqIGphciA9IGNvb2tpZUphckZvclNlc3Npb24o
c2Vzc2lvbik7CiAgICAgaWYgKCFqYXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIApAQCAt
MTE4LDI1ICsxMjAsMjUgQEAgc3RhdGljIFN0cmluZyBjb29raWVzRm9yQ29udGV4dChOZXR3b3Jr
aQogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZXMuZ2V0KCkpOwogfQogCi1TdHJp
bmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYs
IGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1
cm4gY29va2llc0ZvckNvbnRleHQoY29udGV4dCwgdXJsLCBmYWxzZSk7CisgICAgcmV0dXJuIGNv
b2tpZXNGb3JTZXNzaW9uKHNlc3Npb24sIHVybCwgZmFsc2UpOwogfQogCi1TdHJpbmcgY29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVybiBj
b29raWVzRm9yQ29udGV4dChjb250ZXh0LCB1cmwsIHRydWUpOworICAgIHJldHVybiBjb29raWVz
Rm9yU2Vzc2lvbihzZXNzaW9uLCB1cmwsIHRydWUpOwogfQogCi1ib29sIGNvb2tpZXNFbmFibGVk
KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywg
Y29uc3QgS1VSTCYgLyp1cmwqLykKK2Jvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYg
Lyp1cmwqLykKIHsKLSAgICByZXR1cm4gISFjb29raWVKYXJGb3JDb250ZXh0KGNvbnRleHQpOwor
ICAgIHJldHVybiAhIWNvb2tpZUphckZvclNlc3Npb24oc2Vzc2lvbik7CiB9CiAKLWJvb2wgZ2V0
UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJz
dFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiti
b29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3
Q29va2llcykKIHsKICAgICByYXdDb29raWVzLmNsZWFyKCk7Ci0gICAgU291cENvb2tpZUphciog
amFyID0gY29udGV4dCA/IGNvb2tpZUphckZvckNvbnRleHQoY29udGV4dCkgOiBzb3VwQ29va2ll
SmFyKCk7CisgICAgU291cENvb2tpZUphciogamFyID0gY29va2llSmFyRm9yU2Vzc2lvbihzZXNz
aW9uKTsKICAgICBpZiAoIWphcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xNTcsOSAr
MTU5LDkgQEAgYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjbwogICAgIHJl
dHVybiB0cnVlOwogfQogCi12b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCogY29u
dGV4dCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpCit2b2lkIGRlbGV0ZUNv
b2tpZShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBuYW1lKQogewotICAgIFNvdXBDb29raWVKYXIqIGphciA9IGNvbnRleHQgPyBj
b29raWVKYXJGb3JDb250ZXh0KGNvbnRleHQpIDogc291cENvb2tpZUphcigpOworICAgIFNvdXBD
b29raWVKYXIqIGphciA9IGNvb2tpZUphckZvclNlc3Npb24oc2Vzc2lvbik7CiAgICAgaWYgKCFq
YXIpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTc4LDkgKzE4MCw5IEBAIHZvaWQgZGVsZXRlQ29v
a2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb24KICAgICB9CiB9CiAKLXZvaWQgZ2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIEhhc2hTZXQ8U3RyaW5nPiYg
aG9zdG5hbWVzKQordm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQogewotICAgIFNvdXBD
b29raWVKYXIqIGNvb2tpZUphciA9IGNvbnRleHQgPyBjb29raWVKYXJGb3JDb250ZXh0KGNvbnRl
eHQpIDogc291cENvb2tpZUphcigpOworICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphciA9IGNv
b2tpZUphckZvclNlc3Npb24oc2Vzc2lvbik7CiAgICAgR093blB0cjxHU0xpc3Q+IGNvb2tpZXMo
c291cF9jb29raWVfamFyX2FsbF9jb29raWVzKGNvb2tpZUphcikpOwogICAgIGZvciAoR1NMaXN0
KiBpdGVtID0gY29va2llcy5nZXQoKTsgaXRlbTsgaXRlbSA9IGdfc2xpc3RfbmV4dChpdGVtKSkg
ewogICAgICAgICBHT3duUHRyPFNvdXBDb29raWU+IGNvb2tpZShzdGF0aWNfY2FzdDxTb3VwQ29v
a2llKj4oaXRlbS0+ZGF0YSkpOwpAQCAtMTkwLDEwICsxOTIsMTAgQEAgdm9pZCBnZXRIb3N0bmFt
ZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQwogICAgIH0KIH0KIAotdm9pZCBkZWxldGVDb29raWVz
Rm9ySG9zdG5hbWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgaG9z
dG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAgQ1N0cmluZyBob3N0
TmFtZVN0cmluZyA9IGhvc3RuYW1lLnV0ZjgoKTsKLSAgICBTb3VwQ29va2llSmFyKiBjb29raWVK
YXIgPSBjb250ZXh0ID8gY29va2llSmFyRm9yQ29udGV4dChjb250ZXh0KSA6IHNvdXBDb29raWVK
YXIoKTsKKyAgICBTb3VwQ29va2llSmFyKiBjb29raWVKYXIgPSBjb29raWVKYXJGb3JTZXNzaW9u
KHNlc3Npb24pOwogICAgIEdPd25QdHI8R1NMaXN0PiBjb29raWVzKHNvdXBfY29va2llX2phcl9h
bGxfY29va2llcyhjb29raWVKYXIpKTsKICAgICBmb3IgKEdTTGlzdCogaXRlbSA9IGNvb2tpZXMu
Z2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAgICAgICAgU291cENv
b2tpZSogY29va2llID0gc3RhdGljX2Nhc3Q8U291cENvb2tpZSo+KGl0ZW0tPmRhdGEpOwpAQCAt
MjAzLDkgKzIwNSw5IEBAIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtpbmcK
ICAgICB9CiB9CiAKLXZvaWQgZGVsZXRlQWxsQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29u
dGV4dCkKK3ZvaWQgZGVsZXRlQWxsQ29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24pCiB7Ci0gICAgU291cENvb2tpZUphciogY29va2llSmFyID0gY29udGV4dCA/IGNvb2tpZUph
ckZvckNvbnRleHQoY29udGV4dCkgOiBzb3VwQ29va2llSmFyKCk7CisgICAgU291cENvb2tpZUph
ciogY29va2llSmFyID0gY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKICAgICBHT3duUHRy
PEdTTGlzdD4gY29va2llcyhzb3VwX2Nvb2tpZV9qYXJfYWxsX2Nvb2tpZXMoY29va2llSmFyKSk7
CiAgICAgZm9yIChHU0xpc3QqIGl0ZW0gPSBjb29raWVzLmdldCgpOyBpdGVtOyBpdGVtID0gZ19z
bGlzdF9uZXh0KGl0ZW0pKSB7CiAgICAgICAgIFNvdXBDb29raWUqIGNvb2tpZSA9IHN0YXRpY19j
YXN0PFNvdXBDb29raWUqPihpdGVtLT5kYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAJKHJldmlzaW9uIDEzODQwNykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiR093blB0clNvdXAuaCIKICNp
bmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5k
bGVTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdz
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIK
KyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFy
V2luLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay93aW4vQ29va2llSmFyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBA
QAogCiAjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIk5l
dHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRl
IDx3aW5kb3dzLmg+CiAjaW5jbHVkZSA8V2luaW5ldC5oPgpAQCAtMzUsNyArMzYsNyBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0Nv
bnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVl
KQordm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBL
VVJMJiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIC8vIEZJ
WE1FOiBEZWFsIHdpdGggZmlyc3RQYXJ0eSBhcmd1bWVudC4KICAgICBTdHJpbmcgc3RyID0gdXJs
LnN0cmluZygpOwpAQCAtNDMsNyArNDQsNyBAQCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdv
cmtpbmdDb250ZXh0CiAgICAgSW50ZXJuZXRTZXRDb29raWUoc3RyLmNoYXJhY3RlcnNXaXRoTnVs
bFRlcm1pbmF0aW9uKCksIDAsIHZhbC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigpKTsK
IH0KIAotU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJM
JiwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICAvLyBGSVhNRTog
RGVhbCB3aXRoIGZpcnN0UGFydHkgYXJndW1lbnQuCiAKQEAgLTY0LDQwICs2NSw0MCBAQCBTdHJp
bmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCosCiAgICAgcmV0dXJuIFN0cmluZzo6
YWRvcHQoYnVmZmVyKTsKIH0KIAotU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJiB1cmwpCiB7CiAgICAgLy8gRklYTUU6IGluY2x1ZGUgSHR0cE9ubHkgY29va2llCi0gICAg
cmV0dXJuIGNvb2tpZXNGb3JET00oY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1
cm4gY29va2llc0ZvckRPTShzZXNzaW9uLmNvbnRleHQoKSwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0K
IAotYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3Qg
S1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCitib29sIGNvb2tpZXNF
bmFibGVkKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJz
dFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgZ2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VS
TCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8sIFZlY3RvcjxDb29raWU+JiBy
YXdDb29raWVzKQorYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8sIFZl
Y3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxl
bWVudGVkCiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIHJldHVybiBmYWxzZTsgLy8gcmV0
dXJuIHRydWUgd2hlbiBpbXBsZW1lbnRlZAogfQogCi12b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3Jr
aW5nQ29udGV4dCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQordm9pZCBkZWxldGVDb29r
aWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCiB7
CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBnZXRIb3N0bmFt
ZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCosIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5h
bWVzKQordm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBp
bXBsZW1lbnRlZAogfQogCi12b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShOZXR3b3JraW5n
Q29udGV4dCosIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZXNGb3JI
b3N0bmFtZShOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQog
ewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRlQWxs
Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCopCit2b2lkIGRlbGV0ZUFsbENvb2tpZXMoTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJikKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VIYW5k
bGVXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
d2luL1Jlc291cmNlSGFuZGxlV2luLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VIYW5kbGVXaW4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRGF0YVVSTC5oIgogI2luY2x1ZGUg
IkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUg
Ik5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDEzODQwNykKKysr
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDE2ICsxNDQsOSBAQCB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRTCiAgICAgbV9zZXJpYWxMb2FkaW5nRW5hYmxlZCA9
IGVuYWJsZWQ7CiB9CiAKLXN0YXRpYyBSZW1vdGVOZXR3b3JraW5nQ29udGV4dCogbmV0d29ya2lu
Z0NvbnRleHQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQorc3RhdGljIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQog
ewotICAgIC8vIFRoaXMgbmV0d29ya2luZyBjb250ZXh0IGlzIG9ubHkgbmVlZGVkIHRvIGdldCBz
dG9yYWdlIHNlc3Npb24gZnJvbS4KLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkgewot
ICAgICAgICBzdGF0aWMgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQgPSBSZW1vdGVO
ZXR3b3JraW5nQ29udGV4dDo6Y3JlYXRlKGZhbHNlLCBmYWxzZSwgdHJ1ZSkubGVha1JlZigpOwot
ICAgICAgICByZXR1cm4gY29udGV4dDsKLSAgICB9IGVsc2UgewotICAgICAgICBzdGF0aWMgUmVt
b3RlTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQgPSBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6
Y3JlYXRlKGZhbHNlLCBmYWxzZSwgZmFsc2UpLmxlYWtSZWYoKTsKLSAgICAgICAgcmV0dXJuIGNv
bnRleHQ7Ci0gICAgfQorICAgIHJldHVybiBwcml2YXRlQnJvd3NpbmdFbmFibGVkID8gUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQ6OnByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSA6IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxvYWQoYm9vbCBwcml2YXRlQnJvd3NpbmdF
bmFibGVkLCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCkBAIC0xNjQsMzIgKzE1NywzMiBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpzdGFyCiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNG
b3JET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQogewotICAgIHJlc3VsdCA9IFdlYkNv
cmU6OmNvb2tpZXNGb3JET00obmV0d29ya2luZ0NvbnRleHQocHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCksIGZpcnN0UGFydHksIHVybCk7CisgICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llc0ZvckRP
TShzdG9yYWdlU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJs
KTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zy
b21ET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewotICAgIFdl
YkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKG5ldHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CisgICAgV2ViQ29yZTo6
c2V0Q29va2llc0Zyb21ET00oc3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCks
IGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFi
bGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGJvb2wmIHJlc3Vs
dCkKIHsKLSAgICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChuZXR3b3JraW5nQ29u
dGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXN1
bHQgPSBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzdG9yYWdlU2Vzc2lvbihwcml2YXRlQnJvd3Np
bmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoYm9vbCBwcml2YXRl
QnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmws
IFN0cmluZyYgcmVzdWx0KQogewotICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKG5ldHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJsZWQp
LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBm
aXJzdFBhcnR5LCB1cmwpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpnZXRSYXdDb29raWVzKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmVzdWx0KQogewot
ICAgIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMobmV0d29ya2luZ0NvbnRleHQocHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCwgcmVzdWx0KTsKKyAgICBXZWJDb3JlOjpnZXRS
YXdDb29raWVzKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBh
cnR5LCB1cmwsIHJlc3VsdCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmRlbGV0ZUNvb2tpZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIFdlYkNvcmU6OmRlbGV0ZUNv
b2tpZShuZXR3b3JraW5nQ29udGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgdXJsLCBjb29r
aWVOYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc3RvcmFnZVNlc3Npb24ocHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCksIHVybCwgY29va2llTmFtZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQ
cm9jZXNzTWFpbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWluTWFjLm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWluTWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0ICJDb21tYW5kTGluZS5o
IgogI2ltcG9ydCAiRW52aXJvbm1lbnRVdGlsaXRpZXMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9j
ZXNzLmgiCisjaW1wb3J0ICJXZWJTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPFdlYkNvcmUv
UnVuTG9vcC5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+Ci0jaW1wb3J0IDxX
ZWJTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPG1hY2gvbWFjaF9lcnJvci5oPgogI2ltcG9y
dCA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW1wb3J0IDxzZXJ2ZXJzL2Jvb3Rz
dHJhcC5oPgpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5l
dHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDEzODQwNykKKysr
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
dm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CiAgICAgc3RhdGljIHZvaWQgZGVz
dHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKIAorICAgIHN0YXRpYyBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsgLy8gQ2FuIG9ubHkg
YmUgY2FsbGVkIHdoZW4gdGhlIHNlc3Npb24gZXhpc3RzLgorCiBwcml2YXRlOgogICAgIFJlbW90
ZU5ldHdvcmtpbmdDb250ZXh0KGJvb2wgbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MsIGJvb2wgbG9j
YWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZCwgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVk
KTsKIApAQCAtNDksOCArNTEsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIG5lZWRz
U2l0ZVNwZWNpZmljUXVpcmtzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGxv
Y2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VT
ZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBOU09wZXJhdGlvblF1ZXVlICpz
Y2hlZHVsZWRPcGVyYXRpb25RdWV1ZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JikgY29uc3QgT1ZFUlJJREU7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0J
KHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9S
ZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsMTIg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0
aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbjsK
K3N0YXRpYyBPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiYgcHJpdmF0ZUJyb3dzaW5nU3Rv
cmFnZVNlc3Npb24oKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiwgc2Vzc2lvbiwgKCkp
OworICAgIHJldHVybiBzZXNzaW9uOworfQogCiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6UmVt
b3RlTmV0d29ya2luZ0NvbnRleHQoYm9vbCBuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcywgYm9vbCBs
b2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkLCBib29sIHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQpCiAgICAgOiBtX25lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKG5lZWRzU2l0ZVNwZWNpZmljUXVp
cmtzKQpAQCAtNjMsMTkgKzY4LDIwIEBAIGJvb2wgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6Omxv
Y2FsRmlsZUMKICAgICByZXR1cm4gbV9sb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkOwog
fQogCi1ib29sIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjppblByaXZhdGVCcm93c2luZ01vZGUo
KSBjb25zdAorTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6
c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGVCcm93c2luZ0Vu
YWJsZWQ7CisgICAgaWYgKG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkgeworICAgICAgICBBU1NF
UlQocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSk7CisgICAgICAgIHJldHVybiAqcHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKTsKKyAgICB9CisKKyAgICByZXR1cm4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0KIAotQ0ZVUkxTdG9y
YWdlU2Vzc2lvblJlZiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBj
b25zdAorTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6cHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7Ci0gICAgaWYgKGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgp
KSB7Ci0gICAgICAgIEFTU0VSVChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbik7Ci0gICAg
ICAgIHJldHVybiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbjsKLSAgICB9Ci0gICAgLy8g
RklYTUUgKE5ldHdvcmtQcm9jZXNzKTogUmV0dXJuIGEgZGVmYXVsdCBzZXNzaW9uIHRoYXQncyB1
c2VkIGZvciB0ZXN0aW5nLgotICAgIHJldHVybiAwOworICAgIEFTU0VSVChwcml2YXRlQnJvd3Np
bmdTdG9yYWdlU2Vzc2lvbigpKTsKKyAgICByZXR1cm4gKnByaXZhdGVCcm93c2luZ1N0b3JhZ2VT
ZXNzaW9uKCk7CiB9CiAKIE5TT3BlcmF0aW9uUXVldWUgKlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0
OjpzY2hlZHVsZWRPcGVyYXRpb25RdWV1ZSgpIGNvbnN0CkBAIC0xMDgsMjMgKzExNCwxOCBAQCB2
b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRQcml2YXRlCiAKIHZvaWQgUmVtb3RlTmV0
d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewotICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNz
aW9uKQorICAgIGlmIChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBBU1NFUlQoIXByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRp
ZmllckJhc2UoKS5pc051bGwoKSk7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50
aWZpZXIgPSBTdHJpbmcocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFz
ZSgpICsgIi5Qcml2YXRlQnJvd3NpbmciKS5jcmVhdGVDRlN0cmluZygpOwogCi0gICAgcHJpdmF0
ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24gPSBXS0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihj
ZklkZW50aWZpZXIuZ2V0KCkpOworICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkg
PSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24ocHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpKTsKIH0KIAogdm9pZCBS
ZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQog
ewotICAgIGlmICghcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pCi0gICAgICAgIHJldHVy
bjsKLQotICAgIENGUmVsZWFzZShwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbik7Ci0gICAg
cHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24gPSAwOworICAgIHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uKCkgPSBudWxscHRyOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlck1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlck1hYy5tbQkocmV2aXNpb24gMTM4NDA3
KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9D
dXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vz
cy5oIgogI2ltcG9ydCA8V2ViQ29yZS9LVVJMLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNl
RXJyb3IuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApJbmRleDogU291cmNlL1dlYktp
dDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM4
NDA3KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDQzLDcgKzEwNDMsNiBAQAogCQlFMUI3ODQ3MzE2M0YyNTNF
MDAwN0I2OTIgLyogUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUI3ODQ3MjE2M0YyNTNFMDAwN0I2OTIgLyog
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0gKi87IH07CiAJCUUxQ0MxQjkwMTJEN0VBREYwMDYy
NTgzOCAvKiBQcmludEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEUxQ0MxQjhFMTJEN0VBREYwMDYyNTgzOCAvKiBQcmludEluZm8uaCAqLzsgfTsK
IAkJRTFDQzFCOTExMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mb01hYy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQ0MxQjhGMTJEN0VBREYwMDYy
NTgzOCAvKiBQcmludEluZm9NYWMubW0gKi87IH07Ci0JCUUxRDIyOTcxMTY1MkRDNTIwMEJBQTRC
RCAvKiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXNNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUQyMjk2RTE2NTJEQjlDMDBCQUE0QkQgLyogV2ViUGxh
dGZvcm1TdHJhdGVnaWVzTWFjLm1tICovOyB9OwogCQlFMUVERkRBNjE2Mjg4NjhFMDAzOUVDREEg
LyogTWFpbk1hY1Byb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUE2RkEzMTAxMUUzOTIxRTAwREIxMzcxIC8qIE1haW5NYWNQcm9jZXNzLmNw
cCAqLzsgfTsKIAkJRTFFREZEQTcxNjI4ODY5NjAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nl
c3NNYWluTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTFFREZEOUIxNjI4N0QwQjAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYWluTWFj
Lm1tICovOyB9OwogCQlFMUVERkRBODE2Mjg4Njk5MDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJv
Y2Vzc01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUxRURGREEyMTYyODgzOEMwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFjLm1tICov
OyB9OwpAQCAtMjM0NCw3ICsyMzQzLDYgQEAKIAkJRTFCNzg0NzIxNjNGMjUzRTAwMDdCNjkyIC8q
IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUxQ0MxQjhFMTJEN0VBREYwMDYyNTgzOCAvKiBQcmludEluZm8uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpbnRJbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUUxQ0MxQjhGMTJEN0VBREYwMDYyNTgzOCAvKiBQcmludEluZm9NYWMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQcmludEluZm9NYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxRDIyOTZFMTY1MkRCOUMwMEJBQTRC
RCAvKiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXNNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXNNYWMubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxRURGRDk4MTYyODdCRDEwMDM5RUNEQSAvKiBTaGFyZWRXb3Jr
ZXJQcm9jZXNzTWFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFyZWRX
b3JrZXJQcm9jZXNzTWFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUVERkQ5
QjE2Mjg3RDBCMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01haW5NYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTaGFyZWRXb3JrZXJQcm9jZXNzTWFp
bk1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFFREZEOUQxNjI4N0YxOTAw
MzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMzczMyw3ICszNzMxLDYgQEAKIAkJCQlCQzExMUFERjExMkY1QkMyMDAzMzdCQUIgLyog
V2ViRXJyb3JzTWFjLm1tICovLAogCQkJCTkzOTFGMjgzMTIxQjM4RjUwMEVCRjdFOCAvKiBXZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0LmggKi8sCiAJCQkJOTM5MUYyODQxMjFCMzhGNTAwRUJGN0U4
IC8qIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0gKi8sCi0JCQkJRTFEMjI5NkUxNjUyREI5
QzAwQkFBNEJEIC8qIFdlYlBsYXRmb3JtU3RyYXRlZ2llc01hYy5tbSAqLywKIAkJCQlCQ0M0M0FD
NjEyN0I5OURFMDAzMTdGMTYgLyogV2ViUG9wdXBNZW51TWFjLm1tICovLAogCQkJCUJDQzU3MTU5
MTE1QURBRUYwMDFDQ0FGOSAvKiBXZWJTeXN0ZW1JbnRlcmZhY2UuaCAqLywKIAkJCQlCQ0M1NzE1
QTExNUFEQUVGMDAxQ0NBRjkgLyogV2ViU3lzdGVtSW50ZXJmYWNlLm1tICovLApAQCAtNTk3OCw3
ICs1OTc1LDYgQEAKIAkJCQk1MTIxNzQ2MDE2NEMyMEUzMDAzN0E1QzEgLyogU2hhcmVhYmxlUmVz
b3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEyMTc0NjQxNjRDMjEzNzAwMzdBNUMxIC8q
IFdlYlJlc291cmNlQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRjFBQzZCMTY1MTc1
OUUwMEMxN0Q3RiAvKiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbSBpbiBTb3VyY2VzICov
LAotCQkJCUUxRDIyOTcxMTY1MkRDNTIwMEJBQTRCRCAvKiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXNN
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUEzRDc1QjE2NTFCNDRGMDA4NzEzRDAgLyogUmVt
b3RlTGF5ZXJUcmVlSG9zdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQTNENzYxMTY1MUI3RDMw
MDg3MTNEMCAvKiBSZW1vdGVMYXllclRyZWVIb3N0TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxRkQxOEI1MTY1MUZCQUQwMERCRTFDRSAvKiBOZXR3b3JrUmVzb3VyY2VM
b2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDcgQEAKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9NZW1vcnlTdGF0aXN0aWNzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9BWE9iamVjdENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnRDYWNoZS5oPgpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJD
b29raWVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5TWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db29raWVTdG9yYWdl
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtQ29va2llSmFyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwpAQCAtNTUsNyArNTYsNyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmdldEhvc3RuYW1lc1dp
dGhDCiB7CiAgICAgSGFzaFNldDxTdHJpbmc+IGhvc3RuYW1lczsKIAotICAgIFdlYkNvcmU6Omdl
dEhvc3RuYW1lc1dpdGhDb29raWVzKDAsIGhvc3RuYW1lcyk7CisgICAgV2ViQ29yZTo6Z2V0SG9z
dG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKSwgaG9zdG5hbWVzKTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IGhvc3RuYW1lTGlzdDsK
ICAgICBjb3B5VG9WZWN0b3IoaG9zdG5hbWVzLCBob3N0bmFtZUxpc3QpOwpAQCAtNjUsMTIgKzY2
LDEyIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0SG9zdG5hbWVzV2l0aEMKIAogdm9pZCBX
ZWJDb29raWVNYW5hZ2VyOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgU3RyaW5nJiBo
b3N0bmFtZSkKIHsKLSAgICBXZWJDb3JlOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoMCwgaG9z
dG5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCBob3N0bmFtZSk7CiB9CiAKIHZv
aWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llcygpCiB7Ci0gICAgV2ViQ29yZTo6
ZGVsZXRlQWxsQ29va2llcygwKTsKKyAgICBXZWJDb3JlOjpkZWxldGVBbGxDb29raWVzKE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkpOwogfQogCiB2b2lkIFdl
YkNvb2tpZU1hbmFnZXI6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2Fk
TWFjLm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rv
d25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcg
QEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRG93bmxvYWQuaCIKIAorI2ltcG9ydCA8
V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9BdXRo
ZW50aWNhdGlvbk1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3
IEBACiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSAiV2ViU3lzdGVtSW50ZXJmYWNl
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTTG9jay5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZS5o
PgpAQCAtMzAzLDcgKzMwNCw4IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnN3aXRjaE5ldHdvcmtM
b2FkZXIKIHsKICNpZiAoUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKSkgJiYgIVBMQVRG
T1JNKFdJTikKICAgICAvLyBGSVhNRSAoTmV0d29ya1Byb2Nlc3MpOiBEbyB0aGlzIGluIG5ldHdv
cmsgcHJvY2VzcywgdG9vLgotICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN3aXRjaFRv
TmV3VGVzdGluZ1Nlc3Npb24oKTsKKyAgICBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSgpOwor
ICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOwog
I2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENv
ZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUxvYWRlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJldmlzaW9uIDEzODQwNykK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0xvYWRlclN0cmF0ZWd5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtQ29va2llSmFyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVBhc3RlYm9h
cmQuaD4KQEAgLTExMyw5MCArMTE0LDgzIEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpu
b3RpZnlDb29raWUKICAgICBXZWJDb29raWVNYW5hZ2VyOjpzaGFyZWQoKS5kaXNwYXRjaENvb2tp
ZXNEaWRDaGFuZ2UoKTsKIH0KIAotI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENGTkVUV09SSykK
LVJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmRlZmF1bHRDb29raWVTdG9yYWdlKCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLSNlbmRpZgotCi1T
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitT
dHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsKQogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nl
c3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIFN0cmluZyByZXN1
bHQ7Ci0gICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24o
KS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkNvb2tpZXNGb3JET00oY29udGV4dCAmJiBjb250ZXh0LT5pblByaXZhdGVCcm93
c2luZ01vZGUoKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShyZXN1bHQpLCAwKSkKKyAgICAgICAg
aWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9u
KCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29v
a2llc0ZvckRPTShzZXNzaW9uLmlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCBmaXJzdFBhcnR5
LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNG
b3JET006OlJlcGx5KHJlc3VsdCksIDApKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIFdlYkNv
cmU6OmNvb2tpZXNGb3JET00oY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4g
V2ViQ29yZTo6Y29va2llc0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12
b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29v
a2llU3RyaW5nKQogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9NKGNv
bnRleHQgJiYgY29udGV4dC0+aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCksIGZpcnN0UGFydHksIHVy
bCwgY29va2llU3RyaW5nKSwgMCk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdv
cmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24uaXNQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCksIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKSwgMCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKIAotICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9t
RE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBXZWJDb3Jl
OjpzZXRDb29raWVzRnJvbURPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmlu
Zyk7CiB9CiAKLWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRW5hYmxlZChOZXR3
b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsKQogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYg
KFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIGJv
b2wgcmVzdWx0OwotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25u
ZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZChjb250ZXh0ICYmIGNvbnRleHQtPmluUHJp
dmF0ZUJyb3dzaW5nTW9kZSgpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkOjpSZXBseShyZXN1bHQpLCAwKSkK
KyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5j
b25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Q29va2llc0VuYWJsZWQoc2Vzc2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwg
Zmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpDb29raWVzRW5hYmxlZDo6UmVwbHkocmVzdWx0KSwgMCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1
cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAg
ICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJs
KTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewogI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVz
ZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIFN0cmluZyByZXN1bHQ7Ci0gICAgICAgIGlm
ICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigp
LT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnRleHQgJiYgY29udGV4dC0+aW5Qcml2YXRlQnJv
d3NpbmdNb2RlKCksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWU6OlJlcGx5KHJlc3Vs
dCksIDApKQorICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0
aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLmlzUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpS
ZXBseShyZXN1bHQpLCAwKSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBXZWJDb3JlOjpjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAg
IHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBm
aXJzdFBhcnR5LCB1cmwpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3
Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBW
ZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNT
KQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewot
ICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNv
bm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpHZXRSYXdDb29raWVzKGNvbnRleHQgJiYgY29udGV4dC0+aW5Qcml2YXRlQnJvd3NpbmdN
b2RlKCksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQorICAgICAgICBp
ZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24o
KS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRS
YXdDb29raWVzKHNlc3Npb24uaXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIGZpcnN0UGFydHks
IHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3Q29v
a2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBXZWJDb3Jl
OjpnZXRSYXdDb29raWVzKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJs
LCByYXdDb29raWVzKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNv
b2tpZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29v
a2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsK
LSAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6RGVs
ZXRlQ29va2llKGNvbnRleHQgJiYgY29udGV4dC0+aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCksIHVy
bCwgY29va2llTmFtZSksIDApOworICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3Jr
Q29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVDb29raWUoc2Vzc2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nl
c3Npb24oKSwgdXJsLCBjb29raWVOYW1lKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAj
ZW5kaWYKIAotICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShjb250ZXh0LCB1cmwsIGNvb2tpZU5h
bWUpOworICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1cmwsIGNvb2tpZU5hbWUp
OwogfQogCiAvLyBEYXRhYmFzZVN0cmF0ZWd5CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTU3LDE1ICs1NywxMiBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0cmF0
ZWd5CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkKCkgT1ZFUlJJREU7Ci0j
aWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQotICAgIHZpcnR1YWwgUmV0YWluUHRy
PENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGRlZmF1bHRDb29raWVTdG9yYWdlKCkgT1ZFUlJJREU7
Ci0jZW5kaWYKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKFdlYkNvcmU6Ok5ldHdv
cmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURP
TShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29s
IGdldFJhd0Nvb2tpZXMoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6
OkNvb2tpZT4mKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKFdlYkNv
cmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmlu
ZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29u
c3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tp
ZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29u
c3QgU3RyaW5nJikgT1ZFUlJJREU7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5
CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTAgKzM0LDggQEAgcHVibGljOgogICAgIH0KIAog
ICAgIHN0YXRpYyB2b2lkIHNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmll
ckJhc2UoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIHZvaWQgc3dpdGNoVG9OZXdUZXN0aW5n
U2Vzc2lvbigpOwogICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
KTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwotICAg
IHN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwog
ICAgIHN0YXRpYyB2b2lkIHNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKEhUVFBD
b29raWVBY2NlcHRQb2xpY3kpOwogCiBwcml2YXRlOgpAQCAtNDgsOCArNDYsNyBAQCBwcml2YXRl
OgogCiAgICAgdmlydHVhbCBib29sIG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBib29sIGxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQo
KSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2Rl
KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0
b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBXZWJDb3JlOjpTY2hlZHVsZVBhaXJIYXNoU2V0KiBzY2hlZHVsZWRSdW5Mb29wUGFp
cnMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
YmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0IE9WRVJS
SURFOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dC5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjEsNyArMjEsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0LmgiCiAKLSNpbXBvcnQgPFdlYkNvcmUvQ29va2llU3RvcmFn
ZUNGTmV0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyQ2xpZW50Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgpAQCAt
MzIsOCArMzEsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1zdGF0aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBkZWZhdWx0Q0ZTdG9yYWdlU2Vz
c2lvbjsKLXN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uOworc3RhdGljIE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBwcml2YXRl
QnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChPd25Q
dHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiwgc2Vzc2lvbiwgKCkpOworICAgIHJldHVybiBzZXNz
aW9uOworfQogCiBib29sIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6Om5lZWRzU2l0ZVNwZWNp
ZmljUXVpcmtzKCkgY29uc3QKIHsKQEAgLTY3LDI2ICs2OSwxNyBAQCB2b2lkIFdlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQ6OnNldFByaXZhCiAgICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b25JZGVudGlmaWVyQmFzZSgpID0gaWRlbnRpZmllcjsKIH0KIAotdm9pZCBXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0Ojpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkKLXsKLSAgICAvLyBTZXQg
YSBwcml2YXRlIHNlc3Npb24gZm9yIHRlc3RpbmcgdG8gYXZvaWQgaW50ZXJmZXJpbmcgd2l0aCBn
bG9iYWwgY29va2llcy4gVGhpcyBzaG91bGQgYmUgZGlmZmVyZW50IGZyb20gcHJpdmF0ZSBicm93
c2luZyBzZXNzaW9uLgotICAgIGlmIChkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbikKLSAgICAgICAg
Q0ZSZWxlYXNlKGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uKTsKLSAgICBkZWZhdWx0Q0ZTdG9yYWdl
U2Vzc2lvbiA9IFdLQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU1RSKCJQcml2YXRlIFdl
YktpdCBTZXNzaW9uIikpOwotfQotCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewogICAgIC8vIEZJWE1FIChOZXR3b3JrUHJv
Y2Vzcyk6IERvbid0IGNyZWF0ZSBhbiB1bm5lY2Vzc2FyeSBzZXNzaW9uIHdoZW4gdXNpbmcgbmV0
d29yayBwcm9jZXNzLgogCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAocHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pCisgICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBiYXNlID0gcHJpdmF0
ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpID8gU3RyaW5n
KFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0pIDogcHJpdmF0ZUJyb3dz
aW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpOwotICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gY2ZJZGVudGlmaWVyID0gU3RyaW5nKGJhc2UgKyAiLlByaXZhdGVCcm93c2luZyIpLmNy
ZWF0ZUNGU3RyaW5nKCk7CisgICAgU3RyaW5nIGlkZW50aWZpZXJCYXNlID0gcHJpdmF0ZUJyb3dz
aW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpID8gU3RyaW5nKFtbTlNC
dW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0pIDogcHJpdmF0ZUJyb3dzaW5nU3Rv
cmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpOwogCi0gICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFn
ZVNlc3Npb24gPSBXS0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0
KCkpOworICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkgPSBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oaWRlbnRpZmllckJhc2UpOwog
fQogCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKCkKQEAgLTk0LDM5ICs4NywyOCBAQCB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OmRlc3Ryb3lQCiAgICAgaWYgKCFwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbikK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgQ0ZSZWxlYXNlKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VT
ZXNzaW9uKTsKLSAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbiA9IDA7Ci19Ci0KLUNG
VVJMU3RvcmFnZVNlc3Npb25SZWYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVmYXVsdFN0
b3JhZ2VTZXNzaW9uKCkKLXsKLSAgICByZXR1cm4gZGVmYXVsdENGU3RvcmFnZVNlc3Npb247Ci19
Ci0KLWJvb2wgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6aW5Qcml2YXRlQnJvd3NpbmdNb2Rl
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpICYm
IGZyYW1lKCktPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBwcml2
YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpID0gbnVsbHB0cjsKIH0KIAotQ0ZVUkxTdG9yYWdl
U2Vzc2lvblJlZiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNv
bnN0CitOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0
b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICBpZiAoaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkp
IHsKLSAgICAgICAgQVNTRVJUKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKTsKLSAgICAg
ICAgcmV0dXJuIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uOworICAgIGJvb2wgaW5Qcml2
YXRlQnJvd3NpbmdNb2RlID0gZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpICYmIGZyYW1l
KCktPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBpZiAoaW5Qcml2
YXRlQnJvd3NpbmdNb2RlKSB7CisgICAgICAgIEFTU0VSVChwcml2YXRlQnJvd3NpbmdTdG9yYWdl
U2Vzc2lvbigpKTsKKyAgICAgICAgcmV0dXJuICpwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lv
bigpOwogICAgIH0KLSAgICByZXR1cm4gZGVmYXVsdENGU3RvcmFnZVNlc3Npb247CisgICAgcmV0
dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CiAK
IHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5Rm9y
QWxsQ29udGV4dHMoSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCiB7CiAgICAgW1tOU0hU
VFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXSBzZXRDb29raWVBY2NlcHRQ
b2xpY3k6c3RhdGljX2Nhc3Q8TlNIVFRQQ29va2llQWNjZXB0UG9saWN5Pihwb2xpY3kpXTsKIAot
ICAgIGlmIChSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9
IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCkpCisgICAgaWYgKFJldGFpblB0cjxDRkhUVFBD
b29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpk
ZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCkpCiAgICAgICAgIFdLU2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBwb2xpY3kpOwogCi0gICAg
aWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKSB7Ci0gICAgICAgIFJldGFpblB0cjxD
RkhUVFBDb29raWVTdG9yYWdlUmVmPiBwcml2YXRlQnJvd3NpbmdDb29raWVTdG9yYWdlID0gYWRv
cHRDRihXS0NvcHlIVFRQQ29va2llU3RvcmFnZShwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lv
bikpOwotICAgICAgICBXS1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocHJpdmF0ZUJyb3dzaW5n
Q29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKKyAgICBpZiAocHJpdmF0ZUJyb3dzaW5nU3Rv
cmFnZVNlc3Npb24oKSkgeworICAgICAgICBXS1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKS0+Y29va2llU3RvcmFnZSgpLmdldCgpLCBwb2xp
Y3kpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9tYWMvV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFjLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlBsYXRmb3JtU3Ry
YXRlZ2llc01hYy5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCi0KLSNpbmNsdWRlICJXZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNl
Lmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQot
UmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
ZGVmYXVsdENvb2tpZVN0b3JhZ2UoKQotewotICAgIGlmIChDRlVSTFN0b3JhZ2VTZXNzaW9uUmVm
IHNlc3Npb24gPSBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZWZhdWx0U3RvcmFnZVNlc3Np
b24oKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoV0tDb3B5SFRUUENvb2tpZVN0b3JhZ2Uoc2Vz
c2lvbikpOwotCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICByZXR1cm4gV0tHZXREZWZhdWx0SFRU
UENvb2tpZVN0b3JhZ2UoKTsKLSNlbHNlCi0gICAgLy8gV2hlbiB1c2luZyBOU1VSTENvbm5lY3Rp
b24sIHdlIGFsc28gdXNlIGl0cyBzaGFyZWQgY29va2llIHN0b3JhZ2UuCi0gICAgcmV0dXJuIDA7
Ci0jZW5kaWYKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDEzODQwNykK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0pTRWxlbWVudC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvSlNSYW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWFpblJl
c291cmNlTG9hZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JraW5nQ29udGV4dC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvTm9kZVRyYXZlcnNhbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRG9jdW1lbnQuaD4KQEAgLTI0OCw3ICsyNDks
NyBAQCB2b2lkIFdlYkZyYW1lOjpzdGFydERvd25sb2FkKGNvbnN0IFdlYkNvCiAKICNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0
d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBt
X2NvcmVGcmFtZS0+bG9hZGVyKCktPm5ldHdvcmtpbmdDb250ZXh0KCktPmluUHJpdmF0ZUJyb3dz
aW5nTW9kZSgpOworICAgICAgICBib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBtX2NvcmVG
cmFtZS0+bG9hZGVyKCktPm5ldHdvcmtpbmdDb250ZXh0KCktPnN0b3JhZ2VTZXNzaW9uKCkuaXNQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CiAgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5l
dHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlN0YXJ0RG93bmxvYWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCwgcG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCksIDApOwogICAgICAgICByZXR1cm47CiAgICAg
fQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0
OSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KICNpbXBvcnQgPFdlYkNv
cmUvSFRNTENvbnZlcnRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+Cisj
aW1wb3J0IDxXZWJDb3JlL05ldHdvcmtpbmdDb250ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bh
Z2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CkBAIC02NzgsNyArNjc5LDcgQEAgYm9vbCBXZWJQ
YWdlOjpwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVSTAogICAgIE5TTXV0YWJsZVVSTFJlcXVlc3Qq
IHJlcXVlc3QgPSBbW05TTXV0YWJsZVVSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJMOnVybF07
CiAgICAgW3JlcXVlc3Qgc2V0VmFsdWU6KE5TU3RyaW5nKil1c2VyQWdlbnQoKSBmb3JIVFRQSGVh
ZGVyRmllbGQ6QCJVc2VyLUFnZW50Il07CiAgICAgTlNDYWNoZWRVUkxSZXNwb25zZSAqY2FjaGVk
UmVzcG9uc2U7Ci0gICAgaWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24g
PSBjb3JlUGFnZSgpLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPm5ldHdvcmtpbmdDb250ZXh0KCkt
PnN0b3JhZ2VTZXNzaW9uKCkpCisgICAgaWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFn
ZVNlc3Npb24gPSBjb3JlUGFnZSgpLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPm5ldHdvcmtpbmdD
b250ZXh0KCktPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCkpCiAgICAgICAgIGNh
Y2hlZFJlc3BvbnNlID0gV0tDYWNoZWRSZXNwb25zZUZvclJlcXVlc3Qoc3RvcmFnZVNlc3Npb24s
IHJlcXVlc3QpOwogICAgIGVsc2UKICAgICAgICAgY2FjaGVkUmVzcG9uc2UgPSBbW05TVVJMQ2Fj
aGUgc2hhcmVkVVJMQ2FjaGVdIGNhY2hlZFJlc3BvbnNlRm9yUmVxdWVzdDpyZXF1ZXN0XTsKQEAg
LTY5Miw3ICs2OTMsNyBAQCBzdGF0aWMgTlNDYWNoZWRVUkxSZXNwb25zZSAqY2FjaGVkUmVzcG9u
CiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZVVSTFJlcXVlc3Q+IHJlcXVlc3QoQWRvcHROUywgW1tO
U011dGFibGVVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDp1cmxdKTsKICAgICBbcmVxdWVz
dC5nZXQoKSBzZXRWYWx1ZTooTlNTdHJpbmcgKil3ZWJQYWdlLT51c2VyQWdlbnQoKSBmb3JIVFRQ
SGVhZGVyRmllbGQ6QCJVc2VyLUFnZW50Il07CiAKLSAgICBpZiAoQ0ZVUkxTdG9yYWdlU2Vzc2lv
blJlZiBzdG9yYWdlU2Vzc2lvbiA9IHdlYlBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgpLT5s
b2FkZXIoKS0+bmV0d29ya2luZ0NvbnRleHQoKS0+c3RvcmFnZVNlc3Npb24oKSkKKyAgICBpZiAo
Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbiA9IHdlYlBhZ2UtPmNvcmVQYWdl
KCktPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+bmV0d29ya2luZ0NvbnRleHQoKS0+c3RvcmFnZVNl
c3Npb24oKS5wbGF0Zm9ybVNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuIFdLQ2FjaGVkUmVzcG9u
c2VGb3JSZXF1ZXN0KHN0b3JhZ2VTZXNzaW9uLCByZXF1ZXN0LmdldCgpKTsKIAogICAgIHJldHVy
biBbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIGNhY2hlZFJlc3BvbnNlRm9yUmVxdWVzdDpy
ZXF1ZXN0LmdldCgpXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1Bs
YXRmb3JtU3RyYXRlZ2llc0VmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcAkocmV2aXNpb24gMTM4NDA3
KQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVz
RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsMzQgKzg2LDM0IEBAIHZvaWQgUGxhdGZvcm1T
dHJhdGVnaWVzRWZsOjpub3RpZnlDb29raWUKIHsKIH0KIAotU3RyaW5nIFBsYXRmb3JtU3RyYXRl
Z2llc0VmbDo6Y29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3Qg
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRl
Z2llc0VmbDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1
cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAg
IHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7
CiB9CiAKLXZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpzZXRDb29raWVzRnJvbURPTShOZXR3
b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgUGxhdGZvcm1TdHJhdGVn
aWVzRWZsOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBjb29raWVTdHJpbmcpCiB7Ci0gICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oY29u
dGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNldENv
b2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0K
IAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdD
b250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwp
Citib29sIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKGNvbnRleHQs
IGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHNl
c3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNF
Zmw6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgUGxh
dGZvcm1TdHJhdGVnaWVzRWZsOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNv
bnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29y
ZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJs
KTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmdldFJhd0Nvb2tpZXMoTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
IHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIFBsYXRmb3JtU3RyYXRlZ2ll
c0VmbDo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4m
IHJhd0Nvb2tpZXMpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoY29udGV4
dCwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Z2V0
UmF3Q29va2llcyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12
b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6ZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3Zv
aWQgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2ll
TmFtZSkKIHsKLSAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoY29udGV4dCwgdXJsLCBjb29raWVO
YW1lKTsKKyAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1l
KTsKIH0KIAogdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OnJlZnJlc2hQbHVnaW5zKCkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0Vm
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRm
b3JtU3RyYXRlZ2llc0VmbC5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaAkod29ya2luZyBjb3B5KQpA
QCAtNDcsMTIgKzQ3LDEyIEBAIHByaXZhdGU6CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3Ry
YXRlZ3kKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQoKTsKLSAgICB2aXJ0
dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4
dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwm
LCBjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoV2ViQ29y
ZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBi
b29sIGdldFJhd0Nvb2tpZXMoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6Ok5l
dHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwor
ICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVh
bCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwm
KTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCBib29sIGdldFJh
d0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3Qg
U3RyaW5nJik7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CiAgICAgLy8gLSBV
c2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwCShy
ZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0
Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCwzNCArODAsMzQgQEAg
dm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6Om5vdGlmeUNvb2tpZQogewogfQogCi1TdHJpbmcg
UGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcg
UGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJs
KQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKGNvbnRleHQsIGZpcnN0UGFy
dHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwgZmly
c3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OnNldENvb2tp
ZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBQ
bGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKLSAgICBXZWJDb3JlOjpzZXRDb29r
aWVzRnJvbURPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CisgICAg
V2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBjb29r
aWVTdHJpbmcpOwogfQogCi1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y29va2llc0VuYWJs
ZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNv
bnN0IEtVUkwmIHVybCkKK2Jvb2wgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjb29raWVzRW5hYmxl
ZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0Vu
YWJsZWQoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29v
a2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotU3RyaW5nIFBsYXRm
b3JtU3RyYXRlZ2llc0d0azo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVy
bCkKK1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAg
IHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBm
aXJzdFBhcnR5LCB1cmwpOwogfQogCi1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Z2V0UmF3
Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgUGxh
dGZvcm1TdHJhdGVnaWVzR3RrOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBW
ZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3
Q29va2llcyhjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOworICAgIHJldHVy
biBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgcmF3Q29v
a2llcyk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpkZWxldGVDb29raWUoTmV0
d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBj
b29raWVOYW1lKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmRlbGV0ZUNvb2tpZShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShjb250ZXh0
LCB1cmwsIGNvb2tpZU5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1
cmwsIGNvb2tpZU5hbWUpOwogfQogCiAvLyBQbHVnaW5TdHJhdGVneQpJbmRleDogU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVz
R3RrLmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMiArNDYs
MTIgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneQogICAgIHZp
cnR1YWwgdm9pZCBub3RpZnlDb29raWVzQ2hhbmdlZCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNv
b2tpZXNGb3JET00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCB2b2lk
IHNldENvb2tpZXNGcm9tRE9NKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmlu
ZyYpOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChXZWJDb3JlOjpOZXR3b3JraW5n
Q29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OktVUkwmKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29v
a2llcyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYp
OwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRl
eHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBT
dHJpbmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7
CisgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29va2ll
c0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1
YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKIAog
ICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kKICAgICAvLyAtIFVzaW5nIGRlZmF1bHQg
aW1wbGVtZW50YXRpb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24gMTM4NDA3KQor
KysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2ICsxMDgsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9N
b3VzZUV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUv
UGx1Z2luVmlld0Jhc2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUHJvdGVjdGlvblNwYWNlLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3Vy
Y2VIYW5kbGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsMTMgKzI3LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQoZnJhbWUpKTsKICAgICB9CiAKLSAgICBzdGF0
aWMgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKGNv
bnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyB2b2lkIHN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24o
KTsKICAgICBzdGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CiAgICAg
c3RhdGljIHZvaWQgZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKLSAgICBzdGF0aWMg
Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKLQotICAgIHN0
YXRpYyB2b2lkIHNldENvb2tpZUFjY2VwdFBvbGljeUZvclRlc3RpbmdDb250ZXh0KE5TSFRUUENv
b2tpZUFjY2VwdFBvbGljeSk7CiAKIHByaXZhdGU6CiAgICAgV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dChXZWJDb3JlOjpGcmFtZSogZnJhbWUpCkBAIC00Myw4ICszOCw3IEBAIHByaXZhdGU6CiAK
ICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIGJvb2wgbG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZCgpIGNv
bnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBpblByaXZhdGVCcm93c2luZ01vZGUoKSBj
b25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFn
ZVNlc3Npb24oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0
dWFsIFdlYkNvcmU6OlNjaGVkdWxlUGFpckhhc2hTZXQqIHNjaGVkdWxlZFJ1bkxvb3BQYWlycygp
IGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9j
a2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgT1ZFUlJJREU7
CiB9OwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZpc2lvbiAxMzg0MDcpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAjaW1wb3J0ICJXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0LmgiCiAKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXJDbGll
bnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgpAQCAtMjgsOCArMjksMTEgQEAKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKLXN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGRlZmF1bHRD
RlN0b3JhZ2VTZXNzaW9uOwotc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgcHJpdmF0ZUJy
b3dzaW5nU3RvcmFnZVNlc3Npb247CitzdGF0aWMgT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bj4mIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkKK3sKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+LCBzZXNzaW9uLCAoKSk7CisgICAg
cmV0dXJuIHNlc3Npb247Cit9CiAKIGJvb2wgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6bmVl
ZHNTaXRlU3BlY2lmaWNRdWlya3MoKSBjb25zdAogewpAQCAtNTEsNjkgKzU1LDI3IEBAIFJlc291
cmNlRXJyb3IgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDoKICAgICByZXR1cm4gZnJhbWUoKS0+
bG9hZGVyKCktPmNsaWVudCgpLT5ibG9ja2VkRXJyb3IocmVxdWVzdCk7CiB9CiAKLXN0YXRpYyBT
dHJpbmcmIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKQotewot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJp
bmcsIGJhc2UsICgpKTsKLSAgICByZXR1cm4gYmFzZTsKLX0KLQotdm9pZCBXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjpzZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJC
YXNlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKLXsKLSAgICBwcml2YXRlQnJvd3NpbmdTdG9y
YWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkgPSBpZGVudGlmaWVyOwotfQotCi12b2lkIFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQ6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKQotewotICAg
IC8vIFNldCBhIHByaXZhdGUgc2Vzc2lvbiBmb3IgdGVzdGluZyB0byBhdm9pZCBpbnRlcmZlcmlu
ZyB3aXRoIGdsb2JhbCBjb29raWVzLiBUaGlzIHNob3VsZCBiZSBkaWZmZXJlbnQgZnJvbSBwcml2
YXRlIGJyb3dzaW5nIHNlc3Npb24uCi0gICAgaWYgKGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uKQot
ICAgICAgICBDRlJlbGVhc2UoZGVmYXVsdENGU3RvcmFnZVNlc3Npb24pOwotICAgIGRlZmF1bHRD
RlN0b3JhZ2VTZXNzaW9uID0gV0tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTVFIoIlBy
aXZhdGUgV2ViS2l0IFNlc3Npb24iKSk7Ci19Ci0KIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pCisgICAg
aWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFN0cmluZyBiYXNlID0gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVy
QmFzZSgpLmlzTnVsbCgpID8gU3RyaW5nKFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRl
bnRpZmllcl0pIDogcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgp
OwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVudGlmaWVyID0gU3RyaW5nKGJhc2Ug
KyAiLlByaXZhdGVCcm93c2luZyIpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0KLSAgICBwcml2YXRlQnJv
d3NpbmdTdG9yYWdlU2Vzc2lvbiA9IFdLQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKGNmSWRl
bnRpZmllci5nZXQoKSk7CisgICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSA9IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKIH0KIAogdm9pZCBXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7Ci0gICAg
aWYgKCFwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbikKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgQ0ZSZWxlYXNlKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKTsKLSAgICBwcml2YXRl
QnJvd3NpbmdTdG9yYWdlU2Vzc2lvbiA9IDA7Ci19Ci0KLUNGVVJMU3RvcmFnZVNlc3Npb25SZWYg
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkKLXsKLSAg
ICByZXR1cm4gZGVmYXVsdENGU3RvcmFnZVNlc3Npb247CisgICAgcHJpdmF0ZUJyb3dzaW5nU3Rv
cmFnZVNlc3Npb24oKSA9IG51bGxwdHI7CiB9CiAKLWJvb2wgV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QKK05ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewot
ICAgIHJldHVybiBmcmFtZSgpICYmIGZyYW1lKCktPnNldHRpbmdzKCkgJiYgZnJhbWUoKS0+c2V0
dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwotfQotCi1DRlVSTFN0b3JhZ2VTZXNz
aW9uUmVmIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QK
LXsKLSAgICBpZiAoaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkpIHsKLSAgICAgICAgQVNTRVJUKHBy
aXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKTsKLSAgICAgICAgcmV0dXJuIHByaXZhdGVCcm93
c2luZ1N0b3JhZ2VTZXNzaW9uOworICAgIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlID0gZnJh
bWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpICYmIGZyYW1lKCktPnNldHRpbmdzKCktPnByaXZh
dGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBpZiAoaW5Qcml2YXRlQnJvd3NpbmdNb2RlKSB7Cisg
ICAgICAgIEFTU0VSVChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpKTsKKyAgICAgICAg
cmV0dXJuICpwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpOwogICAgIH0KLSAgICByZXR1
cm4gZGVmYXVsdENGU3RvcmFnZVNlc3Npb247CisgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKLXZvaWQgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yVGVzdGluZ0NvbnRleHQoTlNIVFRQ
Q29va2llQWNjZXB0UG9saWN5IHBvbGljeSkKLXsKLSAgICBBU1NFUlQoZGVmYXVsdENGU3RvcmFn
ZVNlc3Npb24pOwotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBkZWZhdWx0
Q29va2llU3RvcmFnZSA9IGFkb3B0Q0YoV0tDb3B5SFRUUENvb2tpZVN0b3JhZ2UoZGVmYXVsdENG
U3RvcmFnZVNlc3Npb24pKTsKLSAgICBXS1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3koZGVmYXVs
dENvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7Ci19CkluZGV4OiBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAko
cmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDEzICs1MywxMiBAQCBw
cml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5CiAgICAgdmlydHVhbCB2
b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBSZXRhaW5Q
dHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gZGVmYXVsdENvb2tpZVN0b3JhZ2UoKSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKFdlYkNvcmU6Ok5ldHdvcmtpbmdD
b250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
S1VSTCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShXZWJD
b3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIGJvb2wgY29va2llc0VuYWJsZWQoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoV2Vi
Q29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGdldFJh
d0Nvb2tpZXMoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6Ok5l
dHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29r
aWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3Ry
aW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+
JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3Ry
aW5nJikgT1ZFUlJJREU7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CiAgICAg
Ly8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgpJbmRleDogU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5t
bQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw0NyArODcsMzQg
QEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Om5vdGlmeUNvb2tpZQogewogfQogCi1SZXRh
aW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWZh
dWx0Q29va2llU3RvcmFnZSgpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVz
Rm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIGlmIChDRlVSTFN0b3JhZ2VTZXNz
aW9uUmVmIHNlc3Npb24gPSBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZWZhdWx0U3RvcmFn
ZVNlc3Npb24oKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoV0tDb3B5SFRUUENvb2tpZVN0b3Jh
Z2Uoc2Vzc2lvbikpOwotCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICByZXR1cm4gV0tHZXREZWZh
dWx0SFRUUENvb2tpZVN0b3JhZ2UoKTsKLSNlbHNlCi0gICAgLy8gV2hlbiB1c2luZyBOU1VSTENv
bm5lY3Rpb24sIHdlIGFsc28gdXNlIGl0cyBzaGFyZWQgY29va2llIHN0b3JhZ2UuCi0gICAgcmV0
dXJuIDA7Ci0jZW5kaWYKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2ll
c0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsKQotewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9N
KGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNG
b3JET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29v
a2llU3RyaW5nKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKLSAg
ICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIGNv
b2tpZVN0cmluZyk7CisgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbiwgZmly
c3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4g
V2ViQ29yZTo6Y29va2llc0VuYWJsZWQoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsK
IH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJl
dHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb250ZXh0LCBmaXJz
dFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1ib29sIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29u
c3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3
Q29va2llcykKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKLSAgICByZXR1
cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nv
b2tpZXMpOworICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHNlc3Npb24sIGZpcnN0
UGFydHksIHVybCwgcmF3Q29va2llcyk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIFdlYkNvcmU6OmRl
bGV0ZUNvb2tpZShjb250ZXh0LCB1cmwsIGNvb2tpZU5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0
ZUNvb2tpZShzZXNzaW9uLCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCiB2b2lkIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6cmVmcmVzaFBsdWdpbnMoKQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJQcmVmZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4
ICszOSw5IEBACiAjaW1wb3J0ICJXZWJLaXRWZXJzaW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJXZWJO
U0RpY3Rpb25hcnlFeHRyYXMuaCIKICNpbXBvcnQgIldlYk5TVVJMRXh0cmFzLmgiCisjaW1wb3J0
ICJXZWJTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNo
ZVN0b3JhZ2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvQ29va2llU3RvcmFnZUNGTmV0Lmg+CisjaW1w
b3J0IDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2ltcG9ydCA8V2ViQ29yZS9S
ZXNvdXJjZUhhbmRsZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCkBAIC0xMjg2LDEy
ICsxMjg3LDEzIEBAICsgKHZvaWQpX3NldElCQ3JlYXRvcklEOihOU1N0cmluZyAqKXN0cmkKIAog
KyAodm9pZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb24KIHsKLSAgICBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7Cisg
ICAgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UoKTsKKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKIH0KIAogKyAodm9pZClfc2V0Q3VycmVu
dE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVBY2Nl
cHRQb2xpY3kpcG9saWN5CiB7Ci0gICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0Q29v
a2llQWNjZXB0UG9saWN5Rm9yVGVzdGluZ0NvbnRleHQocG9saWN5KTsKKyAgICBXS1NldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKS5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHBvbGljeSk7CiB9CiAKIC0gKEJPT0wpaXNE
T01QYXN0ZUFsbG93ZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJl
dmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMjAxNiw3ICsyMDE2LDcgQEAgLSAoTlNDYWNoZWRVUkxSZXNwb25z
ZSAqKV9jYWNoZWRSZXNwb25zZQogICAgIGlmICghX3ByaXZhdGUtPnBhZ2UpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKLSAgICBpZiAoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lv
biA9IF9wcml2YXRlLT5wYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPm5ldHdvcmtpbmdDb250
ZXh0KCktPnN0b3JhZ2VTZXNzaW9uKCkpCisgICAgaWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYg
c3RvcmFnZVNlc3Npb24gPSBfcHJpdmF0ZS0+cGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5u
ZXR3b3JraW5nQ29udGV4dCgpLT5zdG9yYWdlU2Vzc2lvbigpLnBsYXRmb3JtU2Vzc2lvbigpKQog
ICAgICAgICBjYWNoZWRSZXNwb25zZSA9IFdLQ2FjaGVkUmVzcG9uc2VGb3JSZXF1ZXN0KHN0b3Jh
Z2VTZXNzaW9uLCByZXF1ZXN0LmdldCgpKTsKICAgICBlbHNlCiAgICAgICAgIGNhY2hlZFJlc3Bv
bnNlID0gW1tOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXSBjYWNoZWRSZXNwb25zZUZvclJlcXVl
c3Q6cmVxdWVzdC5nZXQoKV07CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmNwcAkocmV2aXNpb24gMTM4NDA3
KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNR
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDM0ICs5OSwzNCBAQCB2b2lkIFBsYXRmb3JtU3Ry
YXRlZ2llc1F0Ojpub3RpZnlDb29raWVzCiB7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdp
ZXNRdDo6Y29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2ll
c1F0Ojpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVybiBX
ZWJDb3JlOjpjb29raWVzRm9yRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0
dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0K
IAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6c2V0Q29va2llc0Zyb21ET00oTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1F0
OjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBj
b29raWVTdHJpbmcpCiB7Ci0gICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oY29udGV4dCwg
Zmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNldENvb2tpZXNG
cm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9v
bCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wg
UGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJs
KQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChjb250ZXh0LCBmaXJzdFBh
cnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzZXNzaW9uLCBm
aXJzdFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJh
dGVnaWVzUXQ6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYg
dXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1i
b29sIFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3Rv
cjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Z2V0UmF3
Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwm
IGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMp
CiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoY29udGV4dCwgZmlyc3RQYXJ0
eSwgdXJsLCByYXdDb29raWVzKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhz
ZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12b2lkIFBsYXRmb3Jt
U3RyYXRlZ2llc1F0OjpkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBQbGF0Zm9ybVN0
cmF0ZWdpZXNRdDo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0gICAg
V2ViQ29yZTo6ZGVsZXRlQ29va2llKGNvbnRleHQsIHVybCwgY29va2llTmFtZSk7CisgICAgV2Vi
Q29yZTo6ZGVsZXRlQ29va2llKHNlc3Npb24sIHVybCwgY29va2llTmFtZSk7CiB9CiAKIHZvaWQg
UGxhdGZvcm1TdHJhdGVnaWVzUXQ6OnJlZnJlc2hQbHVnaW5zKCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmgJ
KHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxh
dGZvcm1TdHJhdGVnaWVzUXQuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsMTIgKzU4LDEyIEBAIHBy
aXZhdGU6CiAgICAgCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5CiAgICAgdmlydHVh
bCB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2ll
c0ZvckRPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29va2llc0Zyb21ET00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7
Ci0gICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250
ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VS
TCYpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFdl
YkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVz
KFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7Ci0g
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCos
IGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFN0cmlu
ZyBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5h
YmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCBT
dHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdl
YkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwor
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAg
Ly8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQogICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBs
ZW1lbnRhdGlvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvb2tpZU1hbmFnZXJDRk5l
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29va2llTWFuYWdlckNG
TmV0LmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29va2ll
TWFuYWdlckNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1
ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIKIAogI2luY2x1ZGUgPENGTmV0d29yay9DRkhUVFBDb29r
aWVzUHJpdi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llU3RvcmFnZUNGTmV0Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisr
KyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDcg
KzE1NCw2IEBACiAjaWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxD
YWNoZVByaXYuaD4KICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxQcm90b2NvbFByaXYuaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2VDRk5ldC5oPgogI2luY2x1ZGUgPFdlYktpdFN5
c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4gCiAjZW5kaWYKIApJbmRleDog
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw2IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGll
bnQuaCIKICNpZiBVU0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUgPENGTmV0d29yay9DRkhUVFBDb29r
aWVzUHJpdi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llU3RvcmFnZUNGTmV0Lmg+CiAjZW5k
aWYKICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaWYgVVNFKENGTkVUV09SSykKQEAg
LTMzLDggKzMyLDExIEBACiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogI2lmIFVTRShDRk5F
VFdPUkspCi1zdGF0aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBkZWZhdWx0Q0ZTdG9yYWdlU2Vz
c2lvbjsKLXN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uOworc3RhdGljIE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBwcml2YXRl
QnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChPd25Q
dHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiwgc2Vzc2lvbiwgKCkpOworICAgIHJldHVybiBzZXNz
aW9uOworfQogI2VuZGlmCiAKIFBhc3NSZWZQdHI8V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dD4g
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6Y3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgU3Ry
aW5nJiB1c2VyQWdlbnQpCkBAIC02OSw3NSArNzEsNDMgQEAgdm9pZCBXZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0OjpzZXRQcml2YQogICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRl
bnRpZmllckJhc2UoKSA9IGlkZW50aWZpZXI7CiB9CiAKLXZvaWQgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpCi17Ci0jaWYgVVNFKENGTkVUV09S
SykKLSAgICAvLyBTZXQgYSBwcml2YXRlIHNlc3Npb24gZm9yIHRlc3RpbmcgdG8gYXZvaWQgaW50
ZXJmZXJpbmcgd2l0aCBnbG9iYWwgY29va2llcy4gVGhpcyBzaG91bGQgYmUgZGlmZmVyZW50IGZy
b20gcHJpdmF0ZSBicm93c2luZyBzZXNzaW9uLgotICAgIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9u
ID0gd2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTVFIoIlByaXZhdGUgV2ViS2l0IFNl
c3Npb24iKSwgZGVmYXVsdENGU3RvcmFnZVNlc3Npb24pOwotI2VuZGlmCi19Ci0KIHZvaWQgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIGlm
IChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbikKKyAgICBpZiAocHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGJhc2UgPSBw
cml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkuaXNOdWxsKCkgPyBT
dHJpbmcocmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZCdW5kbGVHZXRWYWx1ZUZvcklu
Zm9EaWN0aW9uYXJ5S2V5KENGQnVuZGxlR2V0TWFpbkJ1bmRsZSgpLCBrQ0ZCdW5kbGVJZGVudGlm
aWVyS2V5KSkpIDogcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgp
OwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVudGlmaWVyID0gU3RyaW5nKGJhc2Ug
KyAiLlByaXZhdGVCcm93c2luZyIpLmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgU3RyaW5nIGlkZW50
aWZpZXJCYXNlID0gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgp
LmlzTnVsbCgpID8gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQnVuZGxl
R2V0VmFsdWVGb3JJbmZvRGljdGlvbmFyeUtleShDRkJ1bmRsZUdldE1haW5CdW5kbGUoKSwga0NG
QnVuZGxlSWRlbnRpZmllcktleSkpKSA6IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRl
bnRpZmllckJhc2UoKTsKIAotICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uID0gd2tD
cmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpLCBkZWZhdWx0Q0ZT
dG9yYWdlU2Vzc2lvbik7CisgICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSA9IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihpZGVudGlm
aWVyQmFzZSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpk
ZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7CiAjaWYgVVNFKENGTkVUV09SSykKLSAg
ICBpZiAoIXByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBDRlJlbGVhc2UocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pOwotICAgIHByaXZh
dGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uID0gMDsKKyAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdl
U2Vzc2lvbigpID0gbnVsbHB0cjsKICNlbmRpZgogfQogCiAjaWYgVVNFKENGTkVUV09SSykKLUNG
VVJMU3RvcmFnZVNlc3Npb25SZWYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVmYXVsdFN0
b3JhZ2VTZXNzaW9uKCkKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIHJldHVybiBkZWZhdWx0Q0ZT
dG9yYWdlU2Vzc2lvbjsKLX0KLQotYm9vbCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjppblBy
aXZhdGVCcm93c2luZ01vZGUoKSBjb25zdAotewotICAgIHJldHVybiBmcmFtZSgpICYmIGZyYW1l
KCktPnNldHRpbmdzKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCgpOwotfQotCi1DRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKLXsKLSAgICBib29sIHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQgPSBpblByaXZhdGVCcm93c2luZ01vZGUoKTsKLSAgICBpZiAocHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCkgewotICAgICAgICBBU1NFUlQocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b24pOwotICAgICAgICByZXR1cm4gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb247CisgICAg
Ym9vbCBpblByaXZhdGVCcm93c2luZ01vZGUgPSBmcmFtZSgpICYmIGZyYW1lKCktPnNldHRpbmdz
KCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAg
IGlmIChpblByaXZhdGVCcm93c2luZ01vZGUpIHsKKyAgICAgICAgQVNTRVJUKHByaXZhdGVCcm93
c2luZ1N0b3JhZ2VTZXNzaW9uKCkpOworICAgICAgICByZXR1cm4gKnByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uKCk7CiAgICAgfQotICAgIHJldHVybiBkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lv
bjsKLX0KLQotdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29raWVBY2NlcHRQ
b2xpY3lGb3JUZXN0aW5nQ29udGV4dChDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5IHBv
bGljeSkKLXsKLSAgICBBU1NFUlQoZGVmYXVsdENGU3RvcmFnZVNlc3Npb24pOwotICAgIFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBkZWZhdWx0Q29va2llU3RvcmFnZSA9IGFkb3B0
Q0Yod2tDb3B5SFRUUENvb2tpZVN0b3JhZ2UoZGVmYXVsdENGU3RvcmFnZVNlc3Npb24pKTsKLSAg
ICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KGRlZmF1bHRDb29raWVT
dG9yYWdlLmdldCgpLCBwb2xpY3kpOworICAgIHJldHVybiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQogCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKENGSFRUUENvb2tpZVN0
b3JhZ2VBY2NlcHRQb2xpY3kgcG9saWN5KQogewotICAgIGlmIChSZXRhaW5QdHI8Q0ZIVFRQQ29v
a2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdl
KCkpCisgICAgaWYgKFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9y
YWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29r
aWVTdG9yYWdlKCkpCiAgICAgICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQ
b2xpY3koY29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKIAotICAgIGlmIChwcml2YXRlQnJv
d3NpbmdTdG9yYWdlU2Vzc2lvbikgewotICAgICAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3Rv
cmFnZVJlZj4gcHJpdmF0ZUJyb3dzaW5nQ29va2llU3RvcmFnZSA9IGFkb3B0Q0Yod2tDb3B5SFRU
UENvb2tpZVN0b3JhZ2UocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pKTsKLSAgICAgICAg
Q0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShwcml2YXRlQnJvd3NpbmdD
b29raWVTdG9yYWdlLmdldCgpLCBwb2xpY3kpOwotICAgIH0KKyAgICBpZiAocHJpdmF0ZUJyb3dz
aW5nU3RvcmFnZVNlc3Npb24oKSkKKyAgICAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tp
ZUFjY2VwdFBvbGljeShwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpLT5jb29raWVTdG9y
YWdlKCkuZ2V0KCksIHBvbGljeSk7CiB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0LmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTQg
KzI5LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0PiBjcmVhdGUoV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBXVEY6OlN0cmluZyYgdXNl
ckFnZW50KTsKIAogICAgIHN0YXRpYyB2b2lkIHNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNz
aW9uSWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIHZvaWQgc3dpdGNo
VG9OZXdUZXN0aW5nU2Vzc2lvbigpOwogICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93
c2luZ1Nlc3Npb24oKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbigpOwogCiAjaWYgVVNFKENGTkVUV09SSykKLSAgICBzdGF0aWMgQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZiBkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKLQotICAgIHN0YXRpYyB2b2lkIHNldENv
b2tpZUFjY2VwdFBvbGljeUZvclRlc3RpbmdDb250ZXh0KENGSFRUUENvb2tpZVN0b3JhZ2VBY2Nl
cHRQb2xpY3kpOwogICAgIHN0YXRpYyB2b2lkIHNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENv
bnRleHRzKENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kpOwogI2VuZGlmCiAKQEAgLTUw
LDggKzQ2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHVzZXJBZ2VudCgp
IGNvbnN0OwogICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgcmVmZXJyZXIoKSBjb25zdDsKICNpZiBV
U0UoQ0ZORVRXT1JLKQotICAgIHZpcnR1YWwgYm9vbCBpblByaXZhdGVCcm93c2luZ01vZGUoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24o
KSBjb25zdDsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3Rv
cmFnZVNlc3Npb24oKSBjb25zdDsKICNlbmRpZgogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29u
c3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODYsNDQgKzg2LDM0IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpub3RpZnlDb29raWUKIHsKIH0KIAotI2lmIFVTRShDRk5FVFdPUkspCi1SZXRhaW5QdHI8
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWZhdWx0Q29v
a2llU3RvcmFnZSgpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9N
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIGlmIChDRlVSTFN0b3JhZ2VTZXNzaW9uUmVm
IHNlc3Npb24gPSBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZWZhdWx0U3RvcmFnZVNlc3Np
b24oKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0Yod2tDb3B5SFRUUENvb2tpZVN0b3JhZ2Uoc2Vz
c2lvbikpOwotCi0gICAgcmV0dXJuIHdrR2V0RGVmYXVsdEhUVFBDb29raWVTdG9yYWdlKCk7Ci19
Ci0jZW5kaWYKLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTShO
ZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsKQotewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKGNvbnRleHQs
IGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc2Vz
c2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OnNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5n
KQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKLSAgICBXZWJDb3Jl
OjpzZXRDb29raWVzRnJvbURPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmlu
Zyk7CisgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwg
dXJsLCBjb29raWVTdHJpbmcpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29v
a2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29r
aWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6
Y29va2llc0VuYWJsZWQoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2Vi
Q29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotU3Ry
aW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
TmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmIHVybCkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVybiBXZWJD
b3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb250ZXh0LCBmaXJzdFBhcnR5LCB1
cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShz
ZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Z2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykK
K2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6Z2V0UmF3Q29va2llcyhjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwor
ICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHNlc3Npb24sIGZpcnN0UGFydHksIHVy
bCwgcmF3Q29va2llcyk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxldGVD
b29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNv
b2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tp
ZShjb250ZXh0LCB1cmwsIGNvb2tpZU5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShz
ZXNzaW9uLCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCiB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6cmVmcmVzaFBsdWdpbnMoKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHJldmlzaW9uIDEzODQw
NykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxNSArNTIsMTIgQEAgcHJpdmF0ZToKIAogICAg
IC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneQogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDb29r
aWVzQ2hhbmdlZCgpOwotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBSZXRhaW5QdHI8
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gZGVmYXVsdENvb2tpZVN0b3JhZ2UoKTsKLSNlbmRpZgot
ICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRl
eHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJM
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKFdlYkNvcmU6Ok5ldHdvcmtp
bmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxl
ZChXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0
IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2
aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNv
bnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0
b3I8V2ViQ29yZTo6Q29va2llPiYpOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoV2Vi
Q29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3Ry
aW5nJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAg
ICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIGJv
b2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVj
dG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwm
LCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kKICAg
ICAvLyAtIFVzaW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0
L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRl
Z2llc1dpbkNFLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC93aW5jZS9X
ZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgzLDM0ICs4MywzNCBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpub3RpZnlD
b29rCiB7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y29va2llc0ZvckRP
TShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjb29raWVzRm9y
RE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVz
Rm9yRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNv
b2tpZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBQbGF0Zm9y
bVN0cmF0ZWdpZXNXaW5DRTo6c2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBjb29raWVTdHJpbmcpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpzZXRDb29r
aWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJp
bmcpCiB7Ci0gICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oY29udGV4dCwgZmlyc3RQYXJ0
eSwgdXJsLCBjb29raWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNl
c3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBQbGF0Zm9y
bVN0cmF0ZWdpZXNXaW5DRTo6Y29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgUGxhdGZv
cm1TdHJhdGVnaWVzV2luQ0U6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQog
ewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChjb250ZXh0LCBmaXJzdFBhcnR5
LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzZXNzaW9uLCBmaXJz
dFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJh
dGVnaWVzV2luQ0U6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQog
Ci1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdD
b250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmws
IFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5D
RTo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJh
d0Nvb2tpZXMpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoY29udGV4dCwg
Zmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3
Q29va2llcyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12b2lk
IFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9p
ZCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZU5hbWUpCiB7Ci0gICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKGNvbnRleHQsIHVybCwgY29va2ll
TmFtZSk7CisgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHNlc3Npb24sIHVybCwgY29va2llTmFt
ZSk7CiB9CiAKIHZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OnJlZnJlc2hQbHVnaW5zKCkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVn
aWVzV2luQ0UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBw
b3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJj
ZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuaAko
d29ya2luZyBjb3B5KQpAQCAtNTEsMTIgKzUxLDEyIEBAIHByaXZhdGU6CiAKICAgICAvLyBXZWJD
b3JlOjpDb29raWVzU3RyYXRlZ3kKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5n
ZWQoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKFdlYkNvcmU6Ok5ldHdvcmtp
bmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShXZWJDb3JlOjpO
ZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wgY29va2ll
c0VuYWJsZWQoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBTdHJpbmcg
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7
Ci0gICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRl
eHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJM
JiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29v
a2llKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNv
bnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVz
RnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5n
Jik7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmly
dHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VS
TCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0
ZWd5CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgo=
</data>
<flag name="commit-queue"
          id="197909"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180598</attachid>
            <date>2012-12-22 00:02:18 -0800</date>
            <delta_ts>2012-12-22 01:03:22 -0800</delta_ts>
            <desc>patch for EWS</desc>
            <filename>StorageSession.txt</filename>
            <type>text/plain</type>
            <size>176064</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjAyOCw2ICsyMDI4LDcgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRUUFZhbGlkYXRpb24u
Y3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcAogICAgIHBsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCisgICAgcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29u
dGVudFR5cGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuY3BwCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNTc2MCw2ICs1NzYwLDcgQEAgd2ViY29y
ZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Byb3h5U2VydmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0YXRlTm90aWZpZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdGF0ZU5vdGlmaWVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9u
IDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAg
LTEwNjEsNiArMTA2MSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRU
UFZhbGlkYXRpb24uY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwIFwK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCBcCisgICAgcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcCBcCiAgICAgcGxhdGZv
cm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsv
UHJvdGVjdGlvblNwYWNlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5j
cHAgXApAQCAtMjI3Myw2ICsyMjc0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0
d29yay9IVFRQVmFsaWRhdGlvbi5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBTdGF0dXND
b2Rlcy5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmluZy5oIFwKKyAgICBwbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIFwKICAgICBwbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtpbmdDb250ZXh0LmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
YXRlTm90aWZpZXIuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5o
IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjA3LDcgKzIwNyw3IEBA
IF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yRDFFdgogX19aTjdXZWJDb3JlMTJjYWNoZVN0b3Jh
Z2VFdgogX19aTjdXZWJDb3JlMTJjcmVhdGVNYXJrdXBFUEtOU180Tm9kZUVOU18xM0VDaGlsZHJl
bk9ubHlFUE4zV1RGNlZlY3RvcklQUzBfTG0wRUVFTlNfMTNFQWJzb2x1dGVVUkxzRVBOUzVfSU5T
XzEzUXVhbGlmaWVkTmFtZUVMbTBFRUUKIF9fWk43V2ViQ29yZTEyY3JlYXRlTWFya3VwRVBLTlNf
NVJhbmdlRVBOM1dURjZWZWN0b3JJUE5TXzROb2RlRUxtMEVFRU5TXzIzRUFubm90YXRlRm9ySW50
ZXJjaGFuZ2VFYk5TXzEzRUFic29sdXRlVVJMc0UKLV9fWk43V2ViQ29yZTEyZGVsZXRlQ29va2ll
RVBOU18xN05ldHdvcmtpbmdDb250ZXh0RVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdFCitfX1pO
N1dlYkNvcmUxMmRlbGV0ZUNvb2tpZUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNf
NEtVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMmdjQ29udHJvbGxlckV2CiBfX1pO
N1dlYkNvcmUxMmljb25EYXRhYmFzZUV2CiBfX1pON1dlYkNvcmUxMnRvVWludDhBcnJheUVOM0pT
QzdKU1ZhbHVlRQpAQCAtMjM2LDEwICsyMzYsMTAgQEAgX19aTjdXZWJDb3JlMTNSZXNvdXJjZUVy
cm9yQzFFUDdOU0Vycm9yCiBfX1pON1dlYkNvcmUxM1Jlc291cmNlRXJyb3JDMUVQOV9fQ0ZFcnJv
cgogX19aTjdXZWJDb3JlMTNTdHlsZWRFbGVtZW50MjJzZXRJbmxpbmVTdHlsZVByb3BlcnR5RU5T
XzEzQ1NTUHJvcGVydHlJREVSS04zV1RGNlN0cmluZ0ViCiBfX1pON1dlYkNvcmUxM1N0eWxlZEVs
ZW1lbnQyMnNldElubGluZVN0eWxlUHJvcGVydHlFTlNfMTNDU1NQcm9wZXJ0eUlERWROU18xN0NT
U1ByaW1pdGl2ZVZhbHVlOVVuaXRUeXBlc0ViCi1fX1pON1dlYkNvcmUxM2Nvb2tpZXNGb3JET01F
UE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VSTEVTNF8KK19fWk43V2ViQ29yZTEzY29v
a2llc0ZvckRPTUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfNEtVUkxFUzVfCiBf
X1pON1dlYkNvcmUxM2NyZWF0ZVdyYXBwZXJFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUds
b2JhbE9iamVjdEVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUxM2RpcmVjdG9yeU5hbWVFUktOM1dU
RjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxM2dldFJhd0Nvb2tpZXNFUE5TXzE3TmV0d29ya2luZ0Nv
bnRleHRFUktOU180S1VSTEVTNF9STjNXVEY2VmVjdG9ySU5TXzZDb29raWVFTG0wRUVFCitfX1pO
N1dlYkNvcmUxM2dldFJhd0Nvb2tpZXNFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05T
XzRLVVJMRVM1X1JOM1dURjZWZWN0b3JJTlNfNkNvb2tpZUVMbTBFRUUKIF9fWk43V2ViQ29yZTEz
dG9BcnJheUJ1ZmZlckVOM0pTQzdKU1ZhbHVlRQogX19aTjdXZWJDb3JlMTN0b0hUTUxFbGVtZW50
RVBOU18yMUZvcm1Bc3NvY2lhdGVkRWxlbWVudEUKIF9fWk43V2ViQ29yZTEzdG9KU0RPTVdpbmRv
d0VOM0pTQzdKU1ZhbHVlRQpAQCAtMjU0LDYgKzI1NCwxMCBAQCBfX1pON1dlYkNvcmUxNERvY3Vt
ZW50TG9hZGVyMTNhdHRhY2hUb0ZyCiBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTVkZXRh
Y2hGcm9tRnJhbWVFdgogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjE4YWRkQXJjaGl2ZVJl
c291cmNlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzE1QXJjaGl2ZVJlc291cmNlRUVFCiBfX1pON1dl
YkNvcmUxNFJlc291cmNlTG9hZGVyMzJkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUVS
S05TXzIzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VFCitfX1pON1dlYkNvcmUxNGNvb2tpZXNFbmFi
bGVkRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU180S1VSTEVTNV8KK19fWk43V2Vi
Q29yZTE3c2V0Q29va2llc0Zyb21ET01FUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05T
XzRLVVJMRVM1X1JLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMjFOZXR3b3JrU3RvcmFnZVNl
c3Npb24yMWRlZmF1bHRTdG9yYWdlU2Vzc2lvbkV2CitfX1pON1dlYkNvcmUyMU5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjI1c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbkV2CiBfX1pON1dlYkNvcmUyMVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTExZGVzZXJpYWxpemVFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMxXzE0
SlNHbG9iYWxPYmplY3RFUE4zV1RGNlZlY3RvcklOUzZfNlJlZlB0cklOU18xMU1lc3NhZ2VQb3J0
RUVFTG0xRUVFTlNfMjJTZXJpYWxpemF0aW9uRXJyb3JNb2RlRQogX19aTjdXZWJDb3JlMjFTZXJp
YWxpemVkU2NyaXB0VmFsdWU2Y3JlYXRlRVBOM0pTQzlFeGVjU3RhdGVFTlMxXzdKU1ZhbHVlRVBO
M1dURjZWZWN0b3JJTlM1XzZSZWZQdHJJTlNfMTFNZXNzYWdlUG9ydEVFRUxtMUVFRVBOUzZfSU5T
N19JTlM1XzExQXJyYXlCdWZmZXJFRUVMbTFFRUVOU18yMlNlcmlhbGl6YXRpb25FcnJvck1vZGVF
CiBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTZjcmVhdGVFUktOM1dURjZTdHJp
bmdFCkBAIC0yODQsNyArMjg4LDYgQEAgX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjlzZWxl
Y3RBbGxFdgogX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbkMxRVBOU181RnJhbWVFCiBfX1pO
N1dlYkNvcmUxNExvYWRlclN0cmF0ZWd5MjFyZXNvdXJjZUxvYWRTY2hlZHVsZXJFdgogX19aTjdX
ZWJDb3JlMTRQbHVnaW5Eb2N1bWVudDEwcGx1Z2luTm9kZUV2Ci1fX1pON1dlYkNvcmUxNGNvb2tp
ZXNFbmFibGVkRVBOU18xN05ldHdvcmtpbmdDb250ZXh0RVJLTlNfNEtVUkxFUzRfCiBfX1pOSzdX
ZWJDb3JlNUZyYW1lMjV0cmFja2VkUmVwYWludFJlY3RzQXNUZXh0RXYKIF9fWk43V2ViQ29yZTlG
cmFtZVZpZXcxN3NldFRyYWNrc1JlcGFpbnRzRWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMHJl
c2V0VHJhY2tlZFJlcGFpbnRzRXYKQEAgLTQ4OCw3ICs0OTEsNyBAQCBfX1pON1dlYkNvcmUxNlZp
c2libGVTZWxlY3Rpb25DMUVSS05TXzE1CiBfX1pON1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb25D
MUVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRWIKIF9fWk43V2ViQ29yZTE2Y3JlYXRlRnVsbE1hcmt1
cEVQS05TXzROb2RlRQogX19aTjdXZWJDb3JlMTZjcmVhdGVGdWxsTWFya3VwRVBLTlNfNVJhbmdl
RQotX19aTjdXZWJDb3JlMTZkZWxldGVBbGxDb29raWVzRVBOU18xN05ldHdvcmtpbmdDb250ZXh0
RQorX19aTjdXZWJDb3JlMTZkZWxldGVBbGxDb29raWVzRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNl
c3Npb25FCiBfX1pON1dlYkNvcmUxNmVuY2xvc2luZ0ludFJlY3RFUktOU185RmxvYXRSZWN0RQog
X19aTjdXZWJDb3JlMTZpc0VuZE9mUGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNf
MjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCiBfX1pON1dlYkNvcmUxNmlzVXNlclZpc2li
bGVVUkxFUDhOU1N0cmluZwpAQCAtNTExLDcgKzUxNCw2IEBAIF9fWk43V2ViQ29yZTE3U3VicmVz
b3VyY2VMb2FkZXI2Y3JlYXRlRVAKIF9fWk43V2ViQ29yZTE3Vmlld3BvcnRBcmd1bWVudHMxOWRl
cHJlY2F0ZWRUYXJnZXREUElFCiBfX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0dXJlRVBOU18x
N0pTRE9NR2xvYmFsT2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNsYXNzSW5mb0UKIF9f
Wk43V2ViQ29yZTE3b3BlblRlbXBvcmFyeUZpbGVFUktOM1dURjZTdHJpbmdFUmkKLV9fWk43V2Vi
Q29yZTE3c2V0Q29va2llc0Zyb21ET01FUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VS
TEVTNF9SS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE3dXNlclZpc2libGVTdHJpbmdFUDVO
U1VSTAogX19aTjdXZWJDb3JlMThET01XaW5kb3dFeHRlbnNpb25DMUVQTlNfNUZyYW1lRVBOU18x
NURPTVdyYXBwZXJXb3JsZEUKIF9fWk43V2ViQ29yZTE4SFRNTENvbnRlbnRFbGVtZW50NmNyZWF0
ZUVQTlNfOERvY3VtZW50RQpAQCAtNTk1LDYgKzU5Nyw3IEBAIF9fWk43V2ViQ29yZTIwcHJvdG9j
b2xJc0phdmFTY3JpcHRFUktOM1cKIF9fWk43V2ViQ29yZTIwU3BhY2VTcGxpdFN0cmluZ0RhdGFE
MUV2CiBfX1pON1dlYkNvcmUyMUJhY2tGb3J3YXJkQ29udHJvbGxlcjExaXRlbUF0SW5kZXhFaQog
X19aTjdXZWJDb3JlMjFNZW1vcnlQcmVzc3VyZUhhbmRsZXI3aW5zdGFsbEV2CitfX1pON1dlYkNv
cmUyMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjI4Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkVS
S04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIxUGxhdGZvcm1LZXlib2FyZEV2ZW50MjRkaXNh
bWJpZ3VhdGVLZXlEb3duRXZlbnRFTlNfMTNQbGF0Zm9ybUV2ZW50NFR5cGVFYgogX19aTjdXZWJD
b3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIxOXN0YXJ0UmVzb3VyY2VMb2FkZXJFUE5TXzE0UmVz
b3VyY2VMb2FkZXJFCiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjIwc2VydmVQ
ZW5kaW5nUmVxdWVzdHNFTlNfMjBSZXNvdXJjZUxvYWRQcmlvcml0eUUKQEAgLTY1MCw3ICs2NTMs
NyBAQCBfX1pON1dlYkNvcmUyM2NyZWF0ZUZyYWdtZW50RnJvbU5vZGVzRVBOCiBfX1pON1dlYkNv
cmUyM2RhdGFGb3JVUkxDb21wb25lbnRUeXBlRVA1TlNVUkxsCiBfX1pON1dlYkNvcmUyM2RlY29k
ZUhvc3ROYW1lV2l0aFJhbmdlRVA4TlNTdHJpbmc4X05TUmFuZ2UKIF9fWk43V2ViQ29yZTIzZW5j
b2RlSG9zdE5hbWVXaXRoUmFuZ2VFUDhOU1N0cmluZzhfTlNSYW5nZQotX19aTjdXZWJDb3JlMjNn
ZXRIb3N0bmFtZXNXaXRoQ29va2llc0VQTlNfMTdOZXR3b3JraW5nQ29udGV4dEVSTjNXVEY3SGFz
aFNldElOUzJfNlN0cmluZ0VOUzJfMTBTdHJpbmdIYXNoRU5TMl8xMEhhc2hUcmFpdHNJUzRfRUVF
RQorX19aTjdXZWJDb3JlMjNnZXRIb3N0bmFtZXNXaXRoQ29va2llc0VSS05TXzIxTmV0d29ya1N0
b3JhZ2VTZXNzaW9uRVJOM1dURjdIYXNoU2V0SU5TM182U3RyaW5nRU5TM18xMFN0cmluZ0hhc2hF
TlMzXzEwSGFzaFRyYWl0c0lTNV9FRUVFCiBfX1pON1dlYkNvcmUyNEJpbmFyeVByb3BlcnR5TGlz
dFdyaXRlcjE3d3JpdGVQcm9wZXJ0eUxpc3RFdgogX19aTjdXZWJDb3JlMjRDYWNoZWRSZXNvdXJj
ZUhhbmRsZUJhc2UxMXNldFJlc291cmNlRVBOU18xNENhY2hlZFJlc291cmNlRQogX19aTjdXZWJD
b3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIxMGZpcnN0Q2hpbGRFdgpAQCAtNjY5LDcgKzY3
Miw3IEBAIF9fWk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyQzIKIF9fWk43V2Vi
Q29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyRDJFdgogX19aTjdXZWJDb3JlMjRjcmVhdGVG
cmFnbWVudEZyb21NYXJrdXBFUE5TXzhEb2N1bWVudEVSS04zV1RGNlN0cmluZ0VTNV9OU18yN0Zy
YWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbkUKIF9fWk43V2ViQ29yZTI0ZGVjb2RlVVJMRXNjYXBl
U2VxdWVuY2VzRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMjRkZWxldGVDb29raWVzRm9y
SG9zdG5hbWVFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOM1dURjZTdHJpbmdFCitfX1pON1dl
YkNvcmUyNGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNz
aW9uRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjRmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b25FUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyNG5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdl
ZEUKIF9fWk43V2ViQ29yZTI1SGlzdG9yeVByb3BlcnR5TGlzdFdyaXRlcjExcmVsZWFzZURhdGFF
dgpAQCAtNjk2LDEwICs2OTksOSBAQCBfX1pON1dlYkNvcmUyN0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvCiBfX1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazE0c2V0T3Jp
ZW50YXRpb25FTjNXVEYxMFBhc3NSZWZQdHJJTlNfMjFEZXZpY2VPcmllbnRhdGlvbkRhdGFFRUUK
IF9fWk43V2ViQ29yZTI3RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrQzFFdgogX19aTjdXZWJD
b3JlMjdzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXNFdgotX19aTjdXZWJDb3JlMjZkZWZhdWx0
Q0ZIVFRQQ29va2llU3RvcmFnZUV2CiBfX1pON1dlYkNvcmUyOGVuY29kZVdpdGhVUkxFc2NhcGVT
ZXF1ZW5jZXNFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyOHJlbW92ZUxhbmd1YWdlQ2hh
bmdlT2JzZXJ2ZXJFUHYKLV9fWk43V2ViQ29yZTI5Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWVFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VSTEVTNF8KK19fWk43V2ViQ29yZTI5
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWVFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lv
bkVSS05TXzRLVVJMRVM1XwogX19aTjdXZWJDb3JlMjlpc0NoYXJhY3RlclNtYXJ0UmVwbGFjZUV4
ZW1wdEVpYgogX19aTjdXZWJDb3JlMzBob3N0TmFtZU5lZWRzRGVjb2RpbmdXaXRoUmFuZ2VFUDhO
U1N0cmluZzhfTlNSYW5nZQogX19aTjdXZWJDb3JlMzBob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRo
UmFuZ2VFUDhOU1N0cmluZzhfTlNSYW5nZQpAQCAtMTMzMCw2ICsxMzMyLDcgQEAgX19aTks3V2Vi
Q29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U2aXNIVAogX19aTks3V2ViQ29yZTIwUmVzb3VyY2VS
ZXNwb25zZUJhc2U4bWltZVR5cGVFdgogX19aTks3V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9s
bGVyMTJmb3J3YXJkQ291bnRFdgogX19aTks3V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9sbGVy
OWJhY2tDb3VudEV2CitfX1pOSzdXZWJDb3JlMjFOZXR3b3JrU3RvcmFnZVNlc3Npb24xM2Nvb2tp
ZVN0b3JhZ2VFdgogX19aTks3V2ViQ29yZTIxUmVuZGVyTGF5ZXJDb21wb3NpdG9yMTFzY3JvbGxM
YXllckV2CiBfX1pOSzdXZWJDb3JlMjFSZW5kZXJMYXllckNvbXBvc2l0b3IxNXJvb3RSZW5kZXJM
YXllckV2CiBfX1pOSzdXZWJDb3JlMjFVc2VyQ29udGVudFVSTFBhdHRlcm43bWF0Y2hlc0VSS05T
XzRLVVJMRQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC00MzY3LDYgKzQzNjcsNyBA
QAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmNwcCcsCkBAIC00Mzg2LDcg
KzQzODcsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRp
b25DRi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZO
ZXQuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VD
Rk5ldC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9y
YWdlQ0ZOZXQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9jZi9Eb3dubG9hZEJ1bmRsZS5o
JywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzI2MjEsNiArMzI2MjEsMTAgQEAKIAkJCQkJ
PgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3Jt
XG5ldHdvcmtcTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJ
CQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXE5ldHdvcmtp
bmdDb250ZXh0LmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBAIC0zMjg0NCwxMCArMzI4NDgsNiBA
QAogCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJCQkJPC9GaWxlPgogCQkJCQk8RmlsZQot
CQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXENvb2tpZVN0b3JhZ2VD
Rk5ldC5oIgotCQkJCQkJPgotCQkJCQk8L0ZpbGU+Ci0JCQkJCTxGaWxlCiAJCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAi
CiAJCQkJCQk+CiAJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTMyOTQwLDYgKzMyOTQwLDEw
IEBACiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAi
CisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKIAkJCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGxhdGZvcm1cbmV0d29ya1xjZlxQcm94eVNlcnZlckNGTmV0LmNwcCIKIAkJCQkJCT4KIAkJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDM3LDcgKzIwMzcsNiBAQAogCQk3RUU2ODQ2MTEyRDI2RTM4MDBFNzk0MTUgLyogQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdFRTY4NDRFMTJEMjZFMzgwMEU3OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdFRTY4NDYyMTJEMjZFMzgwMEU3OTQxNSAvKiBDb29raWVKYXJDRk5ldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ0RjEyRDI2RTM4
MDBFNzk0MTUgLyogQ29va2llSmFyQ0ZOZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2MzEyRDI2RTM4
MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDUwMTJEMjZFMzgwMEU3OTQxNSAvKiBDb29r
aWVTdG9yYWdlQ0ZOZXQuY3BwICovOyB9OwotCQk3RUU2ODQ2NDEyRDI2RTM4MDBFNzk0MTUgLyog
Q29va2llU3RvcmFnZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VF
Njg0NjUxMkQyNkUzODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NTIxMkQyNkUz
ODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2
NjEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1MzEyRDI2RTM4MDBFNzk0
MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgKi87IH07CiAJCTdFRTY4NDY3MTJEMjZFMzgw
MEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1NDEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURh
dGFTdHJlYW1DRk5ldC5oICovOyB9OwpAQCAtNjA5NSw2ICs2MDk0LDggQEAKIAkJRTEzNEY1QUIx
MkVFMzQzRjAwNEVDNThEIC8qIEludFJlY3RIYXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTM0RjVBQTEyRUUzNDNGMDA0RUM1OEQgLyogSW50UmVj
dEhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMTM5ODY2MzE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTM5ODY2MTE1NDc4NDc0MDAx
RTNGNjUgLyogU3R5bGVSZXNvbHZlci5jcHAgKi87IH07CiAJCUUxMzk4NjY0MTU0Nzg0NzQwMDFF
M0Y2NSAvKiBTdHlsZVJlc29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTM5ODY2MjE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5o
ICovOyB9OworCQlFMTNFRjM0NDE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTNF
RjM0MjE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTEzRUYzNDkxNjg1MEM0
NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxM0VGMzQ3MTY4NTBDNDcwMDM0Qzgz
RiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgKi87IH07CiAJCUUxM0YwMUYxMTI3
MEUxOTAwMERGQkE3MSAvKiBDb29raWVTdG9yYWdlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEzRjAxRjAxMjcwRTE5MDAwREZCQTcxIC8qIENv
b2tpZVN0b3JhZ2VNYWMubW0gKi87IH07CiAJCUUxNDI0QzhBMTY0QjNCNEUwMEYzMkQ0MCAvKiBQ
bGF0Zm9ybUNvb2tpZUphci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTE0MjRDODkxNjRCM0I0RTAwRjMyRDQwIC8qIFBsYXRmb3JtQ29va2llSmFyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTE0MjRD
OTAxNjRCNDYwQjAwRjMyRDQwIC8qIENvb2tpZUphck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNDI0QzhGMTY0QjQ2MEIwMEYzMkQ0MCAvKiBD
b29raWVKYXJNYWMubW0gKi87IH07CkBAIC05MzcwLDcgKzkzNzEsNiBAQAogCQk3RUU2ODQ0RTEy
RDI2RTM4MDBFNzk0MTUgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NEYxMkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZUph
ckNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvb2tpZUph
ckNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTAxMkQyNkUz
ODAwRTc5NDE1IC8qIENvb2tpZVN0b3JhZ2VDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDb29raWVTdG9yYWdlQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNG
TmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tpZVN0b3JhZ2VDRk5l
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1MjEyRDI2RTM4MDBFNzk0
MTUgLyogQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTMxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybURhdGFT
dHJlYW1DRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDU0MTJE
MjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZvcm1EYXRhU3RyZWFtQ0ZOZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEzNTc2LDYgKzEzNTc2LDggQEAKIAkJRTEzNEY1QUExMkVFMzQzRjAwNEVD
NThEIC8qIEludFJlY3RIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
dFJlY3RIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMzk4NjYxMTU0Nzg0
NzQwMDFFM0Y2NSAvKiBTdHlsZVJlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0eWxlUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMTM5ODY2MjE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZVJlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUxM0VGMzQyMTY4NEVDRjQwMDM0QzgzRiAvKiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxM0VGMzQ3MTY4NTBD
NDcwMDM0QzgzRiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxM0YwMUVBMTI3MEUxMEQwMERGQkE3MSAv
KiBDb29raWVTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tp
ZVN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEzRjAxRjAxMjcwRTE5
MDAwREZCQTcxIC8qIENvb2tpZVN0b3JhZ2VNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBDb29raWVTdG9yYWdlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMTQyNEM4OTE2NEIzQjRFMDBGMzJENDAgLyogUGxhdGZvcm1Db29raWVKYXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxhdGZvcm1Db29raWVKYXIuaDsg
cGF0aCA9IG5ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE1ODMzLDYgKzE1ODM1LDcgQEAKIAkJCQkzN0REQ0Q5MjEzODQ0RkQ1MDAwOEI3
OTMgLyogTUlNRUhlYWRlci5jcHAgKi8sCiAJCQkJMzdERENEOTMxMzg0NEZENTAwMDhCNzkzIC8q
IE1JTUVIZWFkZXIuaCAqLywKIAkJCQk2MjhEMjE0QjEyMTMxRUQxMDA1NURDRkMgLyogTmV0d29y
a2luZ0NvbnRleHQuaCAqLywKKwkJCQlFMTNFRjM0MjE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmggKi8sCiAJCQkJMUE3RkE2MUEwRERBM0JCRTAwMjhGOEE1IC8qIE5l
dHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCAqLywKIAkJCQkxQTdGQTYxODBEREEzQjNBMDAyOEY4QTUg
LyogTmV0d29ya1N0YXRlTm90aWZpZXIuaCAqLywKIAkJCQk0NDc5NTgwMjE2NDNCNDdCMDAxRTBB
N0YgLyogUGFyc2VkQ29udGVudFR5cGUuY3BwICovLApAQCAtMjA0MDMsMTMgKzIwNDA2LDEzIEBA
CiAJCQkJN0VFNjg0NEUxMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmggKi8sCiAJCQkJN0VFNjg0NEYxMkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZUphckNGTmV0LmNw
cCAqLywKIAkJCQk3RUU2ODQ1MDEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0
LmNwcCAqLywKLQkJCQk3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNG
TmV0LmggKi8sCiAJCQkJN0VFNjg0NTIxMkQyNkUzODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9y
YWdlQ0ZOZXQuY3BwICovLAogCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5l
dC5jcHAgKi8sCiAJCQkJN0VFNjg0NTMxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU0MTJEMjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0
cmVhbUNGTmV0LmggKi8sCiAJCQkJN0VFNjg0NTUxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1
bkxvb3BDRi5jcHAgKi8sCiAJCQkJN0VFNjg0NTYxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1
bkxvb3BDRi5oICovLAorCQkJCUUxM0VGMzQ3MTY4NTBDNDcwMDM0QzgzRiAvKiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb25DRk5ldC5jcHAgKi8sCiAJCQkJMUFGOEUxQzExMjU2NzNFMDAwMjMwRkY3IC8q
IFByb3h5U2VydmVyQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAv
KiBSZXNvdXJjZUVycm9yLmggKi8sCiAJCQkJN0VFNjg0NTgxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlRXJyb3JDRi5jcHAgKi8sCkBAIC0yMjg5NCw3ICsyMjg5Nyw2IEBACiAJCQkJRDhCNjE1
MkYxMDMyNDk1MTAwQzg1NTRBIC8qIENvb2tpZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzM5QjVC
NjMxMzFEQUEzMjAwRjQ4RDAyIC8qIENvb2tpZXNTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzNEMDIxMkQxMzFEQjM3QjAwNDA5MUE4IC8qIENvb2tpZVN0b3JhZ2UuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTdFRTY4NDY0MTJEMjZFMzgwMEU3OTQxNSAvKiBDb29raWVTdG9yYWdlQ0ZOZXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZFNkZENDg4MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29yZGlu
YXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZEMDQwQTE5ODlDQTAwN0ZCOEM1IC8qIENv
dW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCOTc5MEU4MjA2OTIwMEIyNTk2NSAvKiBD
b3VudGVyQ29udGVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTk4Miw2ICsyNTk4NCw3IEBACiAJ
CQkJRjM3QTU2MjMxNjc5Q0Y3QjAwQzU3MDQ2IC8qIEhlYXBHcmFwaFNlcmlhbGl6ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjg4OTBBMTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCODg5MEYxNjdEMzAxNjAwMTBDREE1
IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTEzRUYz
NDQxNjg0RUNGNDAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0yOTEwMCw2ICsyOTEwMyw3IEBACiAJCQkJMEZCODg5MEIxNjdEMkZBMTAwMTBDREE1
IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCODg5
MEUxNjdEMzAxNjAwMTBDREE1IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyMDlCNDU2QjE2Nzk2QTdFMDBFNTRFNEUgLyogSlNDcnlwdG9DdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTEzRUYzNDkxNjg1MEM0NzAwMzRDODNGIC8qIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nvb2tpZUphci5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db29raWVKYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTmV0
d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvb2tpZUphci5oIgogCiAjaWYg
VVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCkBAIC00Myw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4dChjb25z
dCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CisgICAgLy8gRklYTUU6IFJldHVybmluZyAwIG1lYW5z
IGZhbGxpbmcgYmFjayB0byBkZWZhdWx0IGNvbnRleHQuIFRoYXQncyBub3QgYSBjaG9pY2UgdGhh
dCBpcyBhcHByb3ByaWF0ZSB0byBkbyBhdCBydW50aW1lCiAgICAgaWYgKCFkb2N1bWVudCkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CkBA
IC01NCw1NyArNTYsNjggQEAgc3RhdGljIE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29u
dAogICAgIHJldHVybiBsb2FkZXItPm5ldHdvcmtpbmdDb250ZXh0KCk7CiB9CiAKKyNpZiBQTEFU
Rk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCitpbmxpbmUgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzdG9yYWdlU2Vzc2lvbihjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQgPSBuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCk7CisgICAg
cmV0dXJuIGNvbnRleHQgPyBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpIDogTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKK30KKyNkZWZpbmUgU0VTU0lPTihk
b2N1bWVudCkgc3RvcmFnZVNlc3Npb24oZG9jdW1lbnQpCisjZWxzZQorI2RlZmluZSBTRVNTSU9O
KGRvY3VtZW50KSBOZXR3b3JrU3RvcmFnZVNlc3Npb24obmV0d29ya2luZ0NvbnRleHQoZG9jdW1l
bnQpKQorI2VuZGlmCisKIFN0cmluZyBjb29raWVzKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgS1VSTCYgdXJsKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAgIHJl
dHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmNvb2tpZXNGb3JE
T00obmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgdXJsKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNT
dHJhdGVneSgpLT5jb29raWVzRm9yRE9NKFNFU1NJT04oZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsKICNlbHNlCi0gICAgcmV0dXJuIGNvb2tpZXNGb3JE
T00obmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgdXJsKTsKKyAgICByZXR1cm4gY29va2llc0ZvckRPTShTRVNTSU9OKGRvY3VtZW50
KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVybCk7CiAjZW5kaWYKIH0KIAog
dm9pZCBzZXRDb29raWVzKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykK
LSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPnNldENvb2tpZXNG
cm9tRE9NKG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlG
b3JDb29raWVzKCksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+Y29va2llc1N0cmF0ZWd5KCktPnNldENvb2tpZXNGcm9tRE9NKFNFU1NJT04oZG9jdW1lbnQp
LCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBjb29raWVTdHJpbmcpOwog
I2Vsc2UKLSAgICBzZXRDb29raWVzRnJvbURPTShuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCks
IGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZVN0cmluZyk7Cisg
ICAgc2V0Q29va2llc0Zyb21ET00oU0VTU0lPTihkb2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZVN0cmluZyk7CiAjZW5kaWYKIH0KIAogYm9vbCBj
b29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAjaWYgVVNFKFBMQVRG
T1JNX1NUUkFURUdJRVMpCi0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVz
U3RyYXRlZ3koKS0+Y29va2llc0VuYWJsZWQobmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBk
b2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgZG9jdW1lbnQtPmNvb2tpZVVSTCgpKTsK
KyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5jb29r
aWVzRW5hYmxlZChTRVNTSU9OKGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29r
aWVzKCksIGRvY3VtZW50LT5jb29raWVVUkwoKSk7CiAjZWxzZQotICAgIHJldHVybiBjb29raWVz
RW5hYmxlZChuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCBkb2N1bWVudC0+Y29va2llVVJMKCkpOworICAgIHJldHVybiBjb29raWVz
RW5hYmxlZChTRVNTSU9OKGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVz
KCksIGRvY3VtZW50LT5jb29raWVVUkwoKSk7CiAjZW5kaWYKIH0KIAogU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VS
TCYgdXJsKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAgIHJldHVybiBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFy
dHlGb3JDb29raWVzKCksIHVybCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5j
b29raWVzU3RyYXRlZ3koKS0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU0VTU0lPTihk
b2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpOwogI2Vsc2UK
LSAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUobmV0d29ya2luZ0NvbnRl
eHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsKKyAg
ICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU0VTU0lPTihkb2N1bWVudCks
IGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpOwogI2VuZGlmCiB9CiAKIGJv
b2wgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVy
bCwgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMpCiB7CiAjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJ
RVMpCi0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+
Z2V0UmF3Q29va2llcyhuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCksIGRvY3VtZW50LT5maXJz
dFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOworICAgIHJldHVybiBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmdldFJhd0Nvb2tpZXMoU0VTU0lPTihkb2N1
bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOwog
I2Vsc2UKLSAgICByZXR1cm4gZ2V0UmF3Q29va2llcyhuZXR3b3JraW5nQ29udGV4dChkb2N1bWVu
dCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOworICAg
IHJldHVybiBnZXRSYXdDb29raWVzKFNFU1NJT04oZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBjb29raWVzKTsKICNlbmRpZgogfQogCiB2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb29raWVOYW1lKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+ZGVsZXRlQ29va2llKG5l
dHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmRlbGV0ZUNvb2tpZShTRVNTSU9OKGRv
Y3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKICNlbHNlCi0gICAgZGVsZXRlQ29va2llKG5ldHdv
cmtpbmdDb250ZXh0KGRvY3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBkZWxldGVDb29r
aWUoU0VTU0lPTihkb2N1bWVudCksIHVybCwgY29va2llTmFtZSk7CiAjZW5kaWYKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxMzg0
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlSG9z
dC5oIgogI2luY2x1ZGUgIkFzeW5jRmlsZVN0cmVhbS5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gMTM4NDA3KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJDYWNoZVBvbGljeS5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJQdXJnZVByaW9yaXR5LmgiCisjaW5jbHVkZSAi
UmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0
LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAkocmV2
aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDMwICszMywyMiBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKE1B
QykgfHwgVVNFKENGTkVUV09SSykKLXR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0
b3JhZ2UqICBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgS1VSTDsKLWNsYXNzIE5ldHdvcmtpbmdDb250ZXh0OworY2xhc3MgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOwogc3RydWN0IENvb2tpZTsKIAogY2xhc3MgQ29va2llc1N0cmF0
ZWd5IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQoKSA9
IDA7CiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBS
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gZGVmYXVsdENvb2tpZVN0b3JhZ2UoKSA9
IDA7Ci0jZW5kaWYKLQotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2lu
Z0NvbnRleHQqLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmlu
ZykgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4
dCosIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmKSA9IDA7Ci0gICAgdmlydHVh
bCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOwotICAgIHZpcnR1YWwg
Ym9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+JikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiBjb29raWVOYW1lKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY29v
a2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXRS
YXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgfkNvb2tpZXNTdHJhdGVneSgpIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAkocmV2aXNpb24gMTM4
NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5k
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1
ZXN0LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOZXR3b3JrU3RvcmFnZVNlc3Np
b25faAorI2RlZmluZSBOZXR3b3JrU3RvcmFnZVNlc3Npb25faAorCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgUExBVEZP
Uk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQordHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTFN0
b3JhZ2VTZXNzaW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwordHlwZWRlZiBzdHJ1Y3QgT3Bh
cXVlQ0ZIVFRQQ29va2llU3RvcmFnZSogIENGSFRUUENvb2tpZVN0b3JhZ2VSZWY7CisjZW5kaWYK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOZXR3b3JraW5nQ29udGV4dDsKKworY2xh
c3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3
b3JrU3RvcmFnZVNlc3Npb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsK
KyAgICBzdGF0aWMgUGFzc093blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IGNyZWF0ZURlZmF1
bHRTZXNzaW9uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckJhc2UpOworICAgIHN0YXRpYyBQYXNz
T3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gY3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlKTsKKworICAgIHN0YXRpYyB2b2lkIHN3aXRj
aFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKKworI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVU
V09SSykKKyAgICAvLyBNYXkgYmUgbnVsbCwgaW4gd2hpY2ggY2FzZSBhIEZvdW5kYXRpb24gZGVm
YXVsdCBzaG91bGQgYmUgdXNlZC4KKyAgICBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHBsYXRmb3Jt
U2Vzc2lvbigpIHsgcmV0dXJuIG1fcGxhdGZvcm1TZXNzaW9uLmdldCgpOyB9CisgICAgUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UoKSBjb25zdDsKKyAgICBi
b29sIGlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNQcml2YXRl
OyB9CisjZWxzZQorICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihOZXR3b3JraW5nQ29udGV4dCop
OworICAgIH5OZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsKKyAgICBOZXR3b3JraW5nQ29udGV4dCog
Y29udGV4dCgpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisjaWYgUExBVEZPUk0oTUFDKSB8
fCBVU0UoQ0ZORVRXT1JLKQorICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihDRlVSTFN0b3JhZ2VT
ZXNzaW9uUmVmIHBsYXRmb3JtU2Vzc2lvbik7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKCk7
CisgICAgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IG1fcGxhdGZvcm1TZXNzaW9u
OworICAgIGJvb2wgbV9pc1ByaXZhdGU7CisjZWxzZQorICAgIFJlZlB0cjxOZXR3b3JraW5nQ29u
dGV4dD4gbV9jb250ZXh0OworI2VuZGlmCit9OworCisjaWYgUExBVEZPUk0oV0lOKQorLy8gTmVl
ZGVkIGZvciBXZWJLaXQxIEFQSSBvbmx5Lgordm9pZCBvdmVycmlkZUNvb2tpZVN0b3JhZ2UoQ0ZI
VFRQQ29va2llU3RvcmFnZVJlZik7CitDRkhUVFBDb29raWVTdG9yYWdlUmVmIG92ZXJyaWRlbkNv
b2tpZVN0b3JhZ2UoKTsKKyNlbmRpZgorCit9CisKKyNlbmRpZiAvLyBOZXR3b3JrU3RvcmFnZVNl
c3Npb25faApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25TdHViLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvblN0dWIuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHVi
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKKworI2luY2x1
ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitOZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbihOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCkKKyAgICA6IG1fY29udGV4dChj
b250ZXh0KQoreworfQorCitOZXR3b3JrU3RvcmFnZVNlc3Npb246On5OZXR3b3JrU3RvcmFnZVNl
c3Npb24oKQoreworfQorCitOZXR3b3JraW5nQ29udGV4dCogTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Ojpjb250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOworfQorCitQ
YXNzT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
cmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKGNvbnN0IFN0cmluZyYpCit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK05ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKQor
eworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBzZXNzaW9u
LCAoMCkpOworICAgIHJldHVybiBzZXNzaW9uOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpCit7Cit9CisKK30KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgJ
KHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsOSBAQAogI2lmbmRl
ZiBOZXR3b3JraW5nQ29udGV4dF9oCiAjZGVmaW5lIE5ldHdvcmtpbmdDb250ZXh0X2gKIAorI2lu
Y2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQogI2lu
Y2x1ZGUgIlNjaGVkdWxlUGFpci5oIgpAQCAtNDAsMTAgKzQyLDYgQEAgY2xhc3MgV2ViQ29va2ll
SmFyOwogT0JKQ19DTEFTUyBOU09wZXJhdGlvblF1ZXVlOwogI2VuZGlmCiAKLSNpZiBQTEFURk9S
TShNQUMpIHx8IFVTRShDRk5FVFdPUkspCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMU3Rv
cmFnZVNlc3Npb24qIENGVVJMU3RvcmFnZVNlc3Npb25SZWY7Ci0jZW5kaWYKLQogI2lmIFBMQVRG
T1JNKFFUKQogUVRfQkVHSU5fTkFNRVNQQUNFCiBjbGFzcyBRT2JqZWN0OwpAQCAtNjgsNiArNjYs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAKICNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICAvLyBGSVhNRTogV3JhcCBXZWJD
b29raWVKYXIgaW50byBhIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB0byBtYWtlIHRoZSBjb2RlIGNy
b3NzLXBsYXRmb3JtLgogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUph
cigpIGNvbnN0ID0gMDsKICNlbmRpZgogCkBAIC04MCwxMSArNzksMTIgQEAgcHVibGljOgogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBi
b29sIGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIENGVVJM
U3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0
dWFsIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCA9IDA7CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKFFUKQorICAgIC8vIEZJWE1FOiBXcmFwIFFOZXR3b3JrQWNj
ZXNzTWFuYWdlciBpbnRvIGEgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIHRvIG1ha2UgdGhlIGNvZGUg
Y3Jvc3MtcGxhdGZvcm0uCiAgICAgdmlydHVhbCBRT2JqZWN0KiBvcmlnaW5hdGluZ09iamVjdCgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFFOZXR3b3JrQWNjZXNzTWFuYWdlciogbmV0d29ya0Fj
Y2Vzc01hbmFnZXIoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIG1pbWVTbmlmZmluZ0Vu
YWJsZWQoKSBjb25zdCA9IDA7CkBAIC05OCw2ICs5OCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAj
aWYgVVNFKFNPVVApCisgICAgLy8gRklYTUU6IFdyYXAgU291cFNlc3Npb24gaW50byBhIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiB0byBtYWtlIHRoZSBjb2RlIGNyb3NzLXBsYXRmb3JtLgogICAgIHZp
cnR1YWwgU291cFNlc3Npb24qIHNvdXBTZXNzaW9uKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
dWludDY0X3QgaW5pdGlhdGluZ1BhZ2VJRCgpIGNvbnN0ID0gMDsKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QbGF0Zm9ybUNvb2tpZUphci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIu
aAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Q
bGF0Zm9ybUNvb2tpZUphci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxOSArMzQsMTkgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgS1VSTDsKLWNsYXNzIE5ldHdvcmtpbmdDb250ZXh0
OworY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogc3RydWN0IENvb2tpZTsKIAogLy8gSWYg
bmV0d29ya2luZyBjb250ZXh0IGlzIG51bGwsIGRlZmF1bHQgY29va2llIHN0b3JhZ2UgaXMgdXNl
ZC4KLVN0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpOwotdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3Jr
aW5nQ29udGV4dCosIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBjb25zdCBT
dHJpbmcmKTsKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJik7Ci1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJik7Ci1ib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiwgVmVjdG9yPENvb2tpZT4mKTsKLXZvaWQg
ZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmlu
ZyYpOwotdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCosIEhh
c2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKTsKLXZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1l
KE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7Ci12b2lkIGRlbGV0
ZUFsbENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqKTsKK1N0cmluZyBjb29raWVzRm9yRE9NKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmKTsKK3ZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYp
OworYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJik7CitTdHJpbmcgY29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpOworYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBW
ZWN0b3I8Q29va2llPiYpOwordm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOwordm9pZCBnZXRIb3N0bmFtZXNX
aXRoQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBIYXNoU2V0PFN0cmluZz4m
IGhvc3RuYW1lcyk7Cit2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKK3ZvaWQgZGVsZXRlQWxs
Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mKTsKIAogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAko
cmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1
ZGUgIkJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3
b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5j
bHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCShyZXZpc2lvbiAxMzg0
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDEzICsyNiwxMyBAQAogI2lmbmRlZiBSZXNvdXJjZUhhbmRs
ZV9oCiAjZGVmaW5lIFJlc291cmNlSGFuZGxlX2gKIAotI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DbGllbnQuaCIKICNpbmNsdWRl
ICJIVFRQSGVhZGVyTWFwLmgiCi0jaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogI2lmIFVT
RShTT1VQKQordHlwZWRlZiBzdHJ1Y3QgX0dUbHNDZXJ0aWZpY2F0ZSBHVGxzQ2VydGlmaWNhdGU7
CiB0eXBlZGVmIHN0cnVjdCBfU291cFNlc3Npb24gU291cFNlc3Npb247CiB0eXBlZGVmIHN0cnVj
dCBfU291cFJlcXVlc3QgU291cFJlcXVlc3Q7CiAjZW5kaWYKQEAgLTc4LDYgKzc4LDcgQEAgY2xh
c3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgRnJh
bWU7CiBjbGFzcyBLVVJMOworY2xhc3MgTmV0d29ya2luZ0NvbnRleHQ7CiBjbGFzcyBQcm90ZWN0
aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VIYW5kbGVDbGll
bnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNG
TmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Nvb2tpZUphckNGTmV0LmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDkgKzI5LDggQEAKICNpZiBVU0UoQ0ZORVRXT1JLKQogCiAjaW5jbHVkZSAiQ29va2llLmgi
Ci0jaW5jbHVkZSAiQ29va2llU3RvcmFnZUNGTmV0LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgotI2lu
Y2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJTb2Z0TGlua2lu
Zy5oIgogI2luY2x1ZGUgPENGTmV0d29yay9DRkhUVFBDb29raWVzUHJpdi5oPgpAQCAtOTUsMTUg
Kzk0LDEyIEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gZmlsdGVyQ29va2kKICAgICBy
ZXR1cm4gZmlsdGVyZWRDb29raWVzOwogfQogCi12b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdv
cmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIC8vIDxyZGFyOi8vcHJvYmxl
bS81NjMyODgzPiBDRkhUVFBDb29raWVTdG9yYWdlIHN0b3JlcyBhbiBlbXB0eSBjb29raWUsIHdo
aWNoIHdvdWxkIGJlIHNlbnQgYXMgIkNvb2tpZTogPSIuCiAgICAgaWYgKHZhbHVlLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2Uo
Y29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29r
aWVTdG9yYWdlKTsKLQogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsQ0YoQWRvcHRDRiwgdXJs
LmNyZWF0ZUNGVVJMKCkpOwogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gZmlyc3RQYXJ0eUZvckNv
b2tpZXNDRihBZG9wdENGLCBmaXJzdFBhcnR5LmNyZWF0ZUNGVVJMKCkpOwogCkBAIC0xMTksNTQg
KzExNSw0MyBAQCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0CiAgICAg
UmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVDcmVh
dGVXaXRoUmVzcG9uc2VIZWFkZXJGaWVsZHMoa0NGQWxsb2NhdG9yRGVmYXVsdCwKICAgICAgICAg
aGVhZGVyRmllbGRzQ0YuZ2V0KCksIHVybENGLmdldCgpKSk7CiAKLSAgICBDRkhUVFBDb29raWVT
dG9yYWdlU2V0Q29va2llcyhjb29raWVTdG9yYWdlLmdldCgpLCBmaWx0ZXJDb29raWVzKGNvb2tp
ZXNDRi5nZXQoKSkuZ2V0KCksIHVybENGLmdldCgpLCBmaXJzdFBhcnR5Rm9yQ29va2llc0NGLmdl
dCgpKTsKKyAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llcyhzZXNzaW9uLmNvb2tpZVN0
b3JhZ2UoKS5nZXQoKSwgZmlsdGVyQ29va2llcyhjb29raWVzQ0YuZ2V0KCkpLmdldCgpLCB1cmxD
Ri5nZXQoKSwgZmlyc3RQYXJ0eUZvckNvb2tpZXNDRi5nZXQoKSk7CiB9CiAKLVN0cmluZyBjb29r
aWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiwgY29uc3Qg
S1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIFJldGFpblB0cjxD
RkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRD
RkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2Uo
KTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7Ci0KICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+
IHVybENGKEFkb3B0Q0YsIHVybC5jcmVhdGVDRlVSTCgpKTsKIAogICAgIGJvb2wgc2VjdXJlID0g
dXJsLnByb3RvY29sSXMoImh0dHBzIik7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tp
ZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkwoY29va2ll
U3RvcmFnZS5nZXQoKSwgdXJsQ0YuZ2V0KCksIHNlY3VyZSkpOworICAgIFJldGFpblB0cjxDRkFy
cmF5UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVz
Rm9yVVJMKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCB1cmxDRi5nZXQoKSwgc2VjdXJl
KSk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaGVhZGVyQ0YoQWRvcHRDRiwgQ0ZI
VFRQQ29va2llQ29weVJlcXVlc3RIZWFkZXJGaWVsZHMoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmls
dGVyQ29va2llcyhjb29raWVzQ0YuZ2V0KCkpLmdldCgpKSk7CiAgICAgcmV0dXJuIChDRlN0cmlu
Z1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShoZWFkZXJDRi5nZXQoKSwgc19jb29raWVDRik7CiB9
CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkK
K1N0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwp
CiB7Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2Ug
PSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0
Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsKLQogICAg
IFJldGFpblB0cjxDRlVSTFJlZj4gdXJsQ0YoQWRvcHRDRiwgdXJsLmNyZWF0ZUNGVVJMKCkpOwog
CiAgICAgYm9vbCBzZWN1cmUgPSB1cmwucHJvdG9jb2xJcygiaHR0cHMiKTsKLSAgICBSZXRhaW5Q
dHI8Q0ZBcnJheVJlZj4gY29va2llc0NGKEFkb3B0Q0YsIENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5
Q29va2llc0ZvclVSTChjb29raWVTdG9yYWdlLmdldCgpLCB1cmxDRi5nZXQoKSwgc2VjdXJlKSk7
CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29r
aWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCks
IHVybENGLmdldCgpLCBzZWN1cmUpKTsKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBo
ZWFkZXJDRihBZG9wdENGLCBDRkhUVFBDb29raWVDb3B5UmVxdWVzdEhlYWRlckZpZWxkcyhrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBjb29raWVzQ0YuZ2V0KCkpKTsKICAgICByZXR1cm4gKENGU3RyaW5n
UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGhlYWRlckNGLmdldCgpLCBzX2Nvb2tpZUNGKTsKIH0K
IAotYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3Qg
S1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCitib29sIGNvb2tpZXNF
bmFibGVkKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJz
dFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCiB7Ci0gICAgUmV0YWluUHRyPENGSFRUUENv
b2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENv
b2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAg
IEFTU0VSVChjb29raWVTdG9yYWdlKTsKLQotICAgIENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQ
b2xpY3kgcG9saWN5ID0gQ0ZIVFRQQ29va2llU3RvcmFnZUdldENvb2tpZUFjY2VwdFBvbGljeShj
b29raWVTdG9yYWdlLmdldCgpKTsKKyAgICBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5
IHBvbGljeSA9IENGSFRUUENvb2tpZVN0b3JhZ2VHZXRDb29raWVBY2NlcHRQb2xpY3koc2Vzc2lv
bi5jb29raWVTdG9yYWdlKCkuZ2V0KCkpOwogICAgIHJldHVybiBwb2xpY3kgPT0gQ0ZIVFRQQ29v
a2llU3RvcmFnZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluIHx8IHBvbGlj
eSA9PSBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5QWx3YXlzOwogfQogCi1ib29sIGdl
dFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmly
c3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQor
Ym9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
S1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJh
d0Nvb2tpZXMpCiB7CiAgICAgcmF3Q29va2llcy5jbGVhcigpOwotICAgIFJldGFpblB0cjxDRkhU
VFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhU
VFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsK
LSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7CiAKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVy
bENGKEFkb3B0Q0YsIHVybC5jcmVhdGVDRlVSTCgpKTsKIAogICAgIGJvb2wgc2VuZFNlY3VyZUNv
b2tpZXMgPSB1cmwucHJvdG9jb2xJcygiaHR0cHMiKTsKLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJl
Zj4gY29va2llc0NGKEFkb3B0Q0YsIENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2llc0ZvclVS
TChjb29raWVTdG9yYWdlLmdldCgpLCB1cmxDRi5nZXQoKSwgc2VuZFNlY3VyZUNvb2tpZXMpKTsK
KyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29va2llc0NGKEFkb3B0Q0YsIENGSFRUUENvb2tp
ZVN0b3JhZ2VDb3B5Q29va2llc0ZvclVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwg
dXJsQ0YuZ2V0KCksIHNlbmRTZWN1cmVDb29raWVzKSk7CiAKICAgICBDRkluZGV4IGNvdW50ID0g
Q0ZBcnJheUdldENvdW50KGNvb2tpZXNDRi5nZXQoKSk7CiAgICAgcmF3Q29va2llcy5yZXNlcnZl
Q2FwYWNpdHkoY291bnQpOwpAQCAtMTkwLDEwICsxNzUsOSBAQCBib29sIGdldFJhd0Nvb2tpZXMo
TmV0d29ya2luZ0NvbnRleHQqIGNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgZGVsZXRl
Q29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgbmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgUmV0
YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8g
Y3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2ll
U3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsKKyAgICBSZXRhaW5QdHI8Q0ZI
VFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IHNlc3Npb24uY29va2llU3RvcmFn
ZSgpOwogCiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmxDRihBZG9wdENGLCB1cmwuY3JlYXRl
Q0ZVUkwoKSk7CiAKQEAgLTIxMCwxMiArMTk0LDkgQEAgdm9pZCBkZWxldGVDb29raWUoTmV0d29y
a2luZ0NvbnRleHQqIGNvbgogICAgIH0KIH0KIAotdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2ll
cyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMp
Cit2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7Ci0gICAgUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRU
UENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwot
ICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsKLQotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBj
b29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzKGNvb2tpZVN0
b3JhZ2UuZ2V0KCkpKTsKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29va2llc0NGKEFkb3B0
Q0YsIENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2llcyhzZXNzaW9uLmNvb2tpZVN0b3JhZ2Uo
KS5nZXQoKSkpOwogICAgIGlmICghY29va2llc0NGKQogICAgICAgICByZXR1cm47CiAKQEAgLTIy
NywxMCArMjA4LDkgQEAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQwog
ICAgIH0KIH0KIAotdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFN0cmluZyYg
aG9zdG5hbWUpCiB7Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tp
ZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkg
OiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVTdG9yYWdl
KTsKKyAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9
IHNlc3Npb24uY29va2llU3RvcmFnZSgpOwogCiAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNv
b2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXMoY29va2llU3Rv
cmFnZS5nZXQoKSkpOwogICAgIGlmICghY29va2llc0NGKQpAQCAtMjQ1LDEyICsyMjUsOSBAQCB2
b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShOZXR3b3JraW5nCiAgICAgfQogfQogCi12b2lk
IGRlbGV0ZUFsbENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCit2b2lkIGRlbGV0
ZUFsbENvb2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQogewotICAgIFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1
cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0
b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7Ci0KLSAgICBDRkhUVFBDb29raWVT
dG9yYWdlRGVsZXRlQWxsQ29va2llcyhjb29raWVTdG9yYWdlLmdldCgpKTsKKyAgICBDRkhUVFBD
b29raWVTdG9yYWdlRGVsZXRlQWxsQ29va2llcyhzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQo
KSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAJ
KHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
Q29va2llU3RvcmFnZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOSArMjYsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2UuaCIKIAotI2luY2x1
ZGUgIkNvb2tpZVN0b3JhZ2VDRk5ldC5oIgotCi0jaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIK
KyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNDgsNTYgKzQ2LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAjaWYgUExBVEZPUk0oV0lOKQogCi1zdGF0aWMgUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+JiBjb29raWVTdG9yYWdlT3ZlcnJpZGUoKQotewotICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+LCBjb29raWVT
dG9yYWdlLCAoKSk7Ci0gICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2U7Ci19Ci0KLSNlbmRpZgotCi1S
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY3VycmVudENGSFRUUENvb2tpZVN0b3Jh
Z2UoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCi17Ci0jaWYgUExBVEZPUk0oV0lOKQotICAg
IGlmIChSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4mIG92ZXJyaWRlID0gY29va2ll
U3RvcmFnZU92ZXJyaWRlKCkpCi0gICAgICAgIHJldHVybiBvdmVycmlkZTsKLSNlbmRpZgotCi0g
ICAgaWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VT
ZXNzaW9uKCkpCi0gICAgICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJl
Zj4oQWRvcHRDRiwgd2tDb3B5SFRUUENvb2tpZVN0b3JhZ2Uoc2Vzc2lvbikpOwotCi0jaWYgVVNF
KENGTkVUV09SSykKLSAgICByZXR1cm4gd2tHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UoKTsK
LSNlbHNlCi0gICAgLy8gV2hlbiB1c2luZyBOU1VSTENvbm5lY3Rpb24sIHdlIGFsc28gdXNlIGl0
cyBzaGFyZWQgY29va2llIHN0b3JhZ2UuCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotUmV0
YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdl
KCkKLXsKLSNpZiBQTEFURk9STShXSU4pCi0gICAgaWYgKFJldGFpblB0cjxDRkhUVFBDb29raWVT
dG9yYWdlUmVmPiYgb3ZlcnJpZGUgPSBjb29raWVTdG9yYWdlT3ZlcnJpZGUoKSkKLSAgICAgICAg
cmV0dXJuIG92ZXJyaWRlOwotI2VuZGlmCi0KLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPmNvb2tpZXNTdHJhdGVneSgpLT5kZWZhdWx0Q29va2llU3RvcmFnZSgpOwotfQotCi0jaWYg
UExBVEZPUk0oV0lOKQotCi12b2lkIG92ZXJyaWRlQ29va2llU3RvcmFnZShDRkhUVFBDb29raWVT
dG9yYWdlUmVmIGNvb2tpZVN0b3JhZ2UpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICAvLyBGSVhNRTogV2h5IGRvbid0IHdlIHJldGFpbiBpdD8gVGhlIG9ubHkgY2FsbGVyIGlz
IGFuIEFQSSBtZXRob2QgdGhhdCB0YWtlcyBjb29raWUgc3RvcmFnZSBhcyBhIHJhdyBhcmd1bWVu
dC4KLSAgICBjb29raWVTdG9yYWdlT3ZlcnJpZGUoKS5hZG9wdENGKGNvb2tpZVN0b3JhZ2UpOwot
fQotCi1DRkhUVFBDb29raWVTdG9yYWdlUmVmIG92ZXJyaWRlbkNvb2tpZVN0b3JhZ2UoKQotewot
ICAgIHJldHVybiBjb29raWVTdG9yYWdlT3ZlcnJpZGUoKS5nZXQoKTsKLX0KLQogc3RhdGljIHZv
aWQgbm90aWZ5Q29va2llc0NoYW5nZWRPbk1haW5UaHJlYWQodm9pZCopCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKQEAgLTEzMCw3ICs3OCw3IEBAIHZvaWQgc3RhcnRPYnNlcnZpbmdD
b29raWVDaGFuZ2VzKCkKICAgICBDRlJ1bkxvb3BSZWYgcnVuTG9vcCA9IGNvb2tpZVN0b3JhZ2VP
YnNlcnZlclJ1bkxvb3AoKTsKICAgICBBU1NFUlQocnVuTG9vcCk7CiAKLSAgICBSZXRhaW5QdHI8
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGRlZmF1bHRDRkhUVFBDb29r
aWVTdG9yYWdlKCk7CisgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tp
ZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigp
LmNvb2tpZVN0b3JhZ2UoKTsKICAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7CiAKICAgICBDRkhU
VFBDb29raWVTdG9yYWdlU2NoZWR1bGVXaXRoUnVuTG9vcChjb29raWVTdG9yYWdlLmdldCgpLCBy
dW5Mb29wLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwpAQCAtMTQ0LDcgKzkyLDcgQEAgdm9pZCBz
dG9wT2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpCiAgICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBj
b29raWVTdG9yYWdlT2JzZXJ2ZXJSdW5Mb29wKCk7CiAgICAgQVNTRVJUKHJ1bkxvb3ApOwogCi0g
ICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBkZWZh
dWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOworICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9y
YWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3Rv
cmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCk7CiAgICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2Up
OwogCiAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVJlbW92ZU9ic2VydmVyKGNvb2tpZVN0b3JhZ2Uu
Z2V0KCksIHJ1bkxvb3AsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSwgbm90aWZ5Q29va2llc0NoYW5n
ZWQsIDApOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVT
dG9yYWdlQ0ZOZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIENvb2tpZVN0b3JhZ2VD
Rk5ldF9oCi0jZGVmaW5lIENvb2tpZVN0b3JhZ2VDRk5ldF9oCi0KLSNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+Ci0KLXR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0b3JhZ2UqICBD
RkhUVFBDb29raWVTdG9yYWdlUmVmOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE5l
dHdvcmtpbmdDb250ZXh0OwotCi1SZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY3Vy
cmVudENGSFRUUENvb2tpZVN0b3JhZ2UoTmV0d29ya2luZ0NvbnRleHQqKTsgLy8gV2lsbCBiZSBu
dWxsIHdoZW4gdXNpbmcgc2hhcmVkIE5TSFRUUENvb2tpZVN0b3JhZ2UuCi1SZXRhaW5QdHI8Q0ZI
VFRQQ29va2llU3RvcmFnZVJlZj4gZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsgLy8gRG9l
c24ndCB0YWtlIGN1cnJlbnQgc2Vzc2lvbiBpbnRvIGFjY291bnQuCi0KLSNpZiBQTEFURk9STShX
SU4pCi0vLyBOZWVkZWQgZm9yIFdlYktpdDEgQVBJIG9ubHkuCi12b2lkIG92ZXJyaWRlQ29va2ll
U3RvcmFnZShDRkhUVFBDb29raWVTdG9yYWdlUmVmKTsKLUNGSFRUUENvb2tpZVN0b3JhZ2VSZWYg
b3ZlcnJpZGVuQ29va2llU3RvcmFnZSgpOwotI2VuZGlmCi0KLX0KLQotI2VuZGlmIC8vIENvb2tp
ZVN0b3JhZ2VDRk5ldF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29y
a1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExOCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaCIKKworI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNpbmNs
dWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24oQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBwbGF0Zm9ybVNlc3Npb24pCisgICAgOiBt
X3BsYXRmb3JtU2Vzc2lvbihwbGF0Zm9ybVNlc3Npb24pCisgICAgLCBtX2lzUHJpdmF0ZShmYWxz
ZSkKK3sKK30KKworc3RhdGljIE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBkZWZhdWx0
TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4sIHNl
c3Npb24sICgpKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKQoreworICAgIC8vIFNldCBhIHBy
aXZhdGUgc2Vzc2lvbiBmb3IgdGVzdGluZyB0byBhdm9pZCBpbnRlcmZlcmluZyB3aXRoIGdsb2Jh
bCBjb29raWVzLiBUaGlzIHNob3VsZCBiZSBkaWZmZXJlbnQgZnJvbSBwcml2YXRlIGJyb3dzaW5n
IHNlc3Npb24uCisgICAgLy8gRklYTUU6IEl0IGxvb2tzIGxpa2UgY3JlYXRpbmcgYSBuZXcgc2Vz
c2lvbiB3aXRoIHRoZSBzYW1lIGlkZW50aWZpZXIgbWF5IGJlIGp1c3QgY3JlYXRpbmcgYSByZWZl
cmVuY2UgdG8gdGhlIHNhbWUgc3RvcmFnZS4gU2VlIDxyZGFyOi8vcHJvYmxlbS8xMTU3MTQ1MD4g
YW5kIDxyZGFyOi8vcHJvYmxlbS8xMjM4NDM4MD4uCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGRl
ZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSA9IGFkb3B0UHRyKG5ldyBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24od2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTVFIoIlByaXZhdGUgV2Vi
S2l0IFNlc3Npb24iKSkpKTsKKyNlbHNlCisgICAgZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bigpID0gYWRvcHRQdHIobmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbih3a0NyZWF0ZVByaXZhdGVT
dG9yYWdlU2Vzc2lvbihDRlNUUigiUHJpdmF0ZSBXZWJLaXQgU2Vzc2lvbiIpLCBkZWZhdWx0TmV0
d29ya1N0b3JhZ2VTZXNzaW9uKCktPnBsYXRmb3JtU2Vzc2lvbigpKSkpOworI2VuZGlmCit9CisK
KyNpZiBQTEFURk9STShXSU4pCitzdGF0aWMgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWY+JiBjb29raWVTdG9yYWdlT3ZlcnJpZGUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
UmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+LCBjb29raWVTdG9yYWdlLCAoKSk7Cisg
ICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2U7Cit9CisKK3ZvaWQgb3ZlcnJpZGVDb29raWVTdG9yYWdl
KENGSFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSkKK3sKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIC8vIEZJWE1FOiBXaHkgZG9uJ3Qgd2UgcmV0YWluIGl0PyBUaGUg
b25seSBjYWxsZXIgaXMgYW4gQVBJIG1ldGhvZCB0aGF0IHRha2VzIGNvb2tpZSBzdG9yYWdlIGFz
IGEgcmF3IGFyZ3VtZW50LgorICAgIGNvb2tpZVN0b3JhZ2VPdmVycmlkZSgpLmFkb3B0Q0YoY29v
a2llU3RvcmFnZSk7Cit9CisKK0NGSFRUUENvb2tpZVN0b3JhZ2VSZWYgb3ZlcnJpZGVuQ29va2ll
U3RvcmFnZSgpCit7CisgICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2VPdmVycmlkZSgpLmdldCgpOwor
fQorI2VuZGlmCisKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKQoreworICAgIGlmICghZGVmYXVsdE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbigpKQorICAgICAgICBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgPSBh
ZG9wdFB0cihuZXcgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKDApKTsKKyAgICByZXR1cm4gKmRlZmF1
bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsKK30KKworUGFzc093blB0cjxOZXR3b3JrU3RvcmFn
ZVNlc3Npb24+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlKQoreworICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gY2ZJZGVudGlmaWVyID0gU3RyaW5nKGlkZW50aWZpZXJCYXNlICsgIi5Qcml2YXRl
QnJvd3NpbmciKS5jcmVhdGVDRlN0cmluZygpOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIE93
blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IHNlc3Npb24gPSBhZG9wdFB0cihuZXcgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uKHdrQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKGNmSWRlbnRpZmll
ci5nZXQoKSkpKTsKKyNlbHNlCisgICAgT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gc2Vz
c2lvbiA9IGFkb3B0UHRyKG5ldyBOZXR3b3JrU3RvcmFnZVNlc3Npb24od2tDcmVhdGVQcml2YXRl
U3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpLCBkZWZhdWx0TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uKCktPnBsYXRmb3JtU2Vzc2lvbigpKSkpOworI2VuZGlmCisgICAgc2Vzc2lvbi0+bV9p
c1ByaXZhdGUgPSB0cnVlOworCisgICAgcmV0dXJuIHNlc3Npb24ucmVsZWFzZSgpOworfQorCitS
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
b29raWVTdG9yYWdlKCkgY29uc3QKK3sKKyNpZiBQTEFURk9STShXSU4pCisgICAgaWYgKFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiYgb3ZlcnJpZGUgPSBjb29raWVTdG9yYWdlT3Zl
cnJpZGUoKSkKKyAgICAgICAgcmV0dXJuIG92ZXJyaWRlOworI2VuZGlmCisKKyAgICBpZiAobV9w
bGF0Zm9ybVNlc3Npb24pCisgICAgICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3Rv
cmFnZVJlZj4oQWRvcHRDRiwgd2tDb3B5SFRUUENvb2tpZVN0b3JhZ2UobV9wbGF0Zm9ybVNlc3Np
b24uZ2V0KCkpKTsKKworI2lmIFVTRShDRk5FVFdPUkspCisgICAgcmV0dXJuIHdrR2V0RGVmYXVs
dEhUVFBDb29raWVTdG9yYWdlKCk7CisjZWxzZQorICAgIC8vIFdoZW4gdXNpbmcgTlNVUkxDb25u
ZWN0aW9uLCB3ZSBhbHNvIHVzZSBpdHMgc2hhcmVkIGNvb2tpZSBzdG9yYWdlLgorICAgIHJldHVy
biAwOworI2VuZGlmCit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAkocmV2aXNpb24g
MTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogCiAjaW5jbHVk
ZSAiQXV0aGVudGljYXRpb25DRi5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmgiCi0jaW5jbHVkZSAiQ29va2llU3RvcmFnZUNGTmV0LmgiCiAjaW5jbHVkZSAiQ3JlZGVudGlh
bFN0b3JhZ2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUg
IkZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCIKQEAgLTM4LDYgKzM3LDcgQEAKICNpbmNsdWRlICJMb2Fk
ZXJSdW5Mb29wQ0YuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVS
ZWdpc3RyeS5oIgorI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXNwb25zZS5oIgpAQCAtMTY1LDcgKzE2NSw3IEBAIHN0YXRpYyBDRlVSTFJl
cXVlc3RSZWYgd2lsbFNlbmRSZXF1ZXN0KEMKICAgICAgICAgICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gbmV3TWV0aG9kID0gYWRvcHRDRihDRlVSTFJlcXVlc3RDb3B5SFRUUFJlcXVlc3RNZXRo
b2QoY2ZSZXF1ZXN0KSk7CiAgICAgICAgICAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlV2l0aE9wdGlv
bnMobGFzdEhUVFBNZXRob2QuZ2V0KCksIG5ld01ldGhvZC5nZXQoKSwgQ0ZSYW5nZU1ha2UoMCwg
Q0ZTdHJpbmdHZXRMZW5ndGgobGFzdEhUVFBNZXRob2QuZ2V0KCkpKSwga0NGQ29tcGFyZUNhc2VJ
bnNlbnNpdGl2ZSkpIHsKICAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlVVJMUmVx
dWVzdFJlZj4gbXV0YWJsZVJlcXVlc3QoQWRvcHRDRiwgQ0ZVUkxSZXF1ZXN0Q3JlYXRlTXV0YWJs
ZUNvcHkoMCwgY2ZSZXF1ZXN0KSk7Ci0gICAgICAgICAgICAgICAgd2tTZXRSZXF1ZXN0U3RvcmFn
ZVNlc3Npb24oaGFuZGxlLT5zdG9yYWdlU2Vzc2lvbigpLCBtdXRhYmxlUmVxdWVzdC5nZXQoKSk7
CisgICAgICAgICAgICAgICAgd2tTZXRSZXF1ZXN0U3RvcmFnZVNlc3Npb24oaGFuZGxlLT5zdG9y
YWdlU2Vzc2lvbigpLnBsYXRmb3JtU2Vzc2lvbigpLCBtdXRhYmxlUmVxdWVzdC5nZXQoKSk7CiAg
ICAgICAgICAgICAgICAgQ0ZVUkxSZXF1ZXN0U2V0SFRUUFJlcXVlc3RNZXRob2QobXV0YWJsZVJl
cXVlc3QuZ2V0KCksIGxhc3RIVFRQTWV0aG9kLmdldCgpKTsKIAogICAgICAgICAgICAgICAgIEZv
cm1EYXRhKiBib2R5ID0gaGFuZGxlLT5maXJzdFJlcXVlc3QoKS5odHRwQm9keSgpOwpAQCAtMzk5
LDcgKzM5OSw3IEBAIHN0YXRpYyBib29sIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZVAKIHsK
ICAgICAvLyBJZiBhIFVSTCBhbHJlYWR5IGhhcyBjb29raWVzLCB0aGVuIHdlJ2xsIHJlbGF4IHRo
ZSAzcmQgcGFydHkgY29va2llIHBvbGljeSBhbmQgYWNjZXB0IG5ldyBjb29raWVzLgogCi0gICAg
UmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNmQ29va2llU3RvcmFnZSA9IGN1cnJl
bnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpOworICAgIFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiBjZkNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigp
LmNvb2tpZVN0b3JhZ2UoKTsKICAgICBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5IGNv
b2tpZUFjY2VwdFBvbGljeSA9IENGSFRUUENvb2tpZVN0b3JhZ2VHZXRDb29raWVBY2NlcHRQb2xp
Y3koY2ZDb29raWVTdG9yYWdlLmdldCgpKTsKIAogICAgIGlmIChjb29raWVBY2NlcHRQb2xpY3kg
IT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9t
YWluKQpAQCAtNTA2LDcgKzUwNiw3IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KE5ldHdv
cmtpbmdDb24KICAgICBpZiAoIWNvbnRleHQtPmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9u
KCk7CisgICAgZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCku
cGxhdGZvcm1TZXNzaW9uKCk7CiAKICAgICBib29sIHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdl
ID0gIWNsaWVudCgpIHx8IGNsaWVudCgpLT5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSh0aGlz
KTsKIApAQCAtNzQxLDcgKzc0MSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJj
ZVN5bmNocm8KIAogICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gaGFuZGxlID0gYWRvcHRSZWYo
bmV3IFJlc291cmNlSGFuZGxlKHJlcXVlc3QsIGNsaWVudC5nZXQoKSwgZmFsc2UgLypkZWZlcnNM
b2FkaW5nKi8sIHRydWUgLypzaG91bGRDb250ZW50U25pZmYqLykpOwogCi0gICAgaGFuZGxlLT5k
LT5tX3N0b3JhZ2VTZXNzaW9uID0gY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKTsKKyAgICBoYW5k
bGUtPmQtPm1fc3RvcmFnZVNlc3Npb24gPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLnBsYXRm
b3JtU2Vzc2lvbigpOwogCiAgICAgaWYgKGhhbmRsZS0+ZC0+bV9zY2hlZHVsZWRGYWlsdXJlVHlw
ZSAhPSBOb0ZhaWx1cmUpIHsKICAgICAgICAgZXJyb3IgPSBjb250ZXh0LT5ibG9ja2VkRXJyb3Io
cmVxdWVzdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVt
L0Nvb2tpZUphckNocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2Nocm9taXVtL0Nvb2tpZUphckNocm9taXVtLmNwcAkocmV2aXNpb24gMTM4
NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9Db29raWVK
YXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDU1ICs0MSw1NSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyKQordm9pZCBzZXRDb29raWVzRnJvbURPTShO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHlGb3JD
b29raWVzLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyKQogewotICAg
IGlmICghY29udGV4dCkKKyAgICBpZiAoIXNlc3Npb24uY29udGV4dCgpKQogICAgICAgICByZXR1
cm47Ci0gICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9IGNvbnRleHQtPmNvb2tp
ZUphcigpOworICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVKYXIgPSBzZXNzaW9uLmNv
bnRleHQoKS0+Y29va2llSmFyKCk7CiAgICAgaWYgKGNvb2tpZUphcikKICAgICAgICAgY29va2ll
SmFyLT5zZXRDb29raWUodXJsLCBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29va2llU3RyKTsKIH0K
IAotU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29v
a2llc0ZvckRPTShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgaWYgKCFjb250ZXh0
KQorICAgIGlmICghc2Vzc2lvbi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
ICAgICBTdHJpbmcgcmVzdWx0OwotICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVKYXIg
PSBjb250ZXh0LT5jb29raWVKYXIoKTsKKyAgICBXZWJLaXQ6OldlYkNvb2tpZUphciogY29va2ll
SmFyID0gc2Vzc2lvbi5jb250ZXh0KCktPmNvb2tpZUphcigpOwogICAgIGlmIChjb29raWVKYXIp
CiAgICAgICAgIHJlc3VsdCA9IGNvb2tpZUphci0+Y29va2llcyh1cmwsIGZpcnN0UGFydHlGb3JD
b29raWVzKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1TdHJpbmcgY29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgS1VSTCYgdXJsKQogewotICAgIGlmICgh
Y29udGV4dCkKKyAgICBpZiAoIXNlc3Npb24uY29udGV4dCgpKQogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAgICAgU3RyaW5nIHJlc3VsdDsKLSAgICBXZWJLaXQ6OldlYkNvb2tpZUphciogY29v
a2llSmFyID0gY29udGV4dC0+Y29va2llSmFyKCk7CisgICAgV2ViS2l0OjpXZWJDb29raWVKYXIq
IGNvb2tpZUphciA9IHNlc3Npb24uY29udGV4dCgpLT5jb29raWVKYXIoKTsKICAgICBpZiAoY29v
a2llSmFyKQogICAgICAgICByZXN1bHQgPSBjb29raWVKYXItPmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKHVybCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEtVUkwmIGNvb2tpZVVSTCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMpCiti
b29sIGNvb2tpZXNFbmFibGVkKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
S1VSTCYgY29va2llVVJMLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcykKIHsKICAg
ICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIGlmICghY29udGV4dCkKKyAgICBpZiAoIXNlc3Np
b24uY29udGV4dCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIFdlYktpdDo6V2ViQ29v
a2llSmFyKiBjb29raWVKYXIgPSBjb250ZXh0LT5jb29raWVKYXIoKTsKKyAgICBXZWJLaXQ6Oldl
YkNvb2tpZUphciogY29va2llSmFyID0gc2Vzc2lvbi5jb250ZXh0KCktPmNvb2tpZUphcigpOwog
ICAgIGlmIChjb29raWVKYXIpCiAgICAgICAgIHJlc3VsdCA9IGNvb2tpZUphci0+Y29va2llc0Vu
YWJsZWQoY29va2llVVJMLCBmaXJzdFBhcnR5Rm9yQ29va2llcyk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8
Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2llcyhOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBL
VVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewogICAgIHJhd0Nvb2tpZXMu
Y2xlYXIoKTsKLSAgICBpZiAoIWNvbnRleHQpCisgICAgaWYgKCFzZXNzaW9uLmNvbnRleHQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFdlYktpdDo6V2ViVmVjdG9yPFdlYktpdDo6V2Vi
Q29va2llPiB3ZWJDb29raWVzOwotICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVKYXIg
PSBjb250ZXh0LT5jb29raWVKYXIoKTsKKyAgICBXZWJLaXQ6OldlYkNvb2tpZUphciogY29va2ll
SmFyID0gc2Vzc2lvbi5jb250ZXh0KCktPmNvb2tpZUphcigpOwogICAgIGlmIChjb29raWVKYXIp
CiAgICAgICAgIGNvb2tpZUphci0+cmF3Q29va2llcyh1cmwsIGZpcnN0UGFydHlGb3JDb29raWVz
LCB3ZWJDb29raWVzKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgd2ViQ29va2llcy5z
aXplKCk7ICsraSkgewpAQCAtMTAwLDI2ICsxMDAsMjYgQEAgYm9vbCBnZXRSYXdDb29raWVzKE5l
dHdvcmtpbmdDb250ZXh0KiBjbwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIGRlbGV0ZUNv
b2tpZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQog
ewotICAgIGlmICghY29udGV4dCkKKyAgICBpZiAoIXNlc3Npb24uY29udGV4dCgpKQogICAgICAg
ICByZXR1cm47Ci0gICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9IGNvbnRleHQt
PmNvb2tpZUphcigpOworICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVKYXIgPSBzZXNz
aW9uLmNvbnRleHQoKS0+Y29va2llSmFyKCk7CiAgICAgaWYgKGNvb2tpZUphcikKICAgICAgICAg
Y29va2llSmFyLT5kZWxldGVDb29raWUodXJsLCBjb29raWVOYW1lKTsKIH0KIAotdm9pZCBnZXRI
b3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCogLypjb250ZXh0Ki8sIEhhc2hT
ZXQ8U3RyaW5nPiYgLypob3N0bmFtZXMqLykKK3ZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMo
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNldDxTdHJpbmc+JiAvKmhvc3RuYW1lcyovKQog
ewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRlQ29v
a2llc0Zvckhvc3RuYW1lKE5ldHdvcmtpbmdDb250ZXh0KiAvKmNvbnRleHQqLywgY29uc3QgU3Ry
aW5nJiAvKmhvc3RuYW1lKi8pCit2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBTdHJpbmcmIC8qaG9zdG5hbWUqLykKIHsKICAgICAvLyBG
SVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQogCi12b2lkIGRlbGV0ZUFsbENvb2tpZXMoTmV0
d29ya2luZ0NvbnRleHQqIC8qY29udGV4dCovKQordm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3Vy
Y2VIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2hyb21pdW0vUmVzb3VyY2VIYW5kbGUuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1Jlc291cmNlSGFuZGxlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsMTIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogCisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQu
aCIKKyNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVD
bGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUludGVybmFsLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldyYXBwZWRSZXNvdXJjZVJlcXVlc3QuaCIK
ICNpbmNsdWRlICJXcmFwcGVkUmVzb3VyY2VSZXNwb25zZS5oIgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcAko
cmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJs
L0Nvb2tpZUphckN1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw1MCArMjcsNTAgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gY29va2ll
SmFyOwogCi12b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3Qg
S1VSTCYsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgc2V0Q29v
a2llc0Zyb21ET00oTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICBjb29raWVKYXIuc2V0KHVybC5z
dHJpbmcoKSwgdmFsdWUpOwogfQogCi1TdHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29u
dGV4dCosIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llc0ZvckRP
TShOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQog
ewogICAgIHJldHVybiBjb29raWVKYXIuZ2V0KHVybC5zdHJpbmcoKSk7CiB9CiAKLVN0cmluZyBj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
Y29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBL
VVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQogewogICAgIC8vIEZJWE1FOiBp
bmNsdWRlIEh0dHBPbmx5IGNvb2tpZS4KICAgICByZXR1cm4gY29va2llSmFyLmdldCh1cmwuc3Ry
aW5nKCkpOwogfQogCi1ib29sIGNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKK2Jv
b2wgY29va2llc0VuYWJsZWQoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgLypm
aXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLWJvb2wgZ2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3Qg
S1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8sIFZlY3RvcjxDb29raWU+
JiByYXdDb29raWVzKQorYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovLCBWZWN0b3I8
Q29va2llPiYgcmF3Q29va2llcykKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRl
ZAogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKICAgICByZXR1cm4gZmFsc2U7IC8vIHJldHVybiB0
cnVlIHdoZW4gaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0Nv
bnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKK3ZvaWQgZGVsZXRlQ29va2llKE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQogewogICAg
IC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZ2V0SG9zdG5hbWVzV2l0
aENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykK
K3ZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFz
aFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVt
ZW50ZWQKIH0KIAotdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZ0NvbnRl
eHQqLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQordm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5h
bWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKICAg
ICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQogCi12b2lkIGRlbGV0ZUFsbENvb2tp
ZXMoTmV0d29ya2luZ0NvbnRleHQqKQordm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1
cmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAK
ICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgorI2luY2x1ZGUgIk5ldHdvcmtpbmdD
b250ZXh0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUhhbmRsZUludGVybmFsLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVNYW5hZ2VyLmgiCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2ll
SmFyTWFjLm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDgg
QEAKICNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiQ29va2llLmgiCiAjaW1w
b3J0ICJDb29raWVTdG9yYWdlLmgiCi0jaW1wb3J0ICJDb29raWVTdG9yYWdlQ0ZOZXQuaCIKICNp
bXBvcnQgIktVUkwuaCIKLSNpbXBvcnQgIk5ldHdvcmtpbmdDb250ZXh0LmgiCisjaW1wb3J0ICJO
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjIsMzEgKzYxLDI5IEBAIHN0YXRpYyBSZXRh
aW5QdHI8TlNBcnJheT4gZmlsdGVyQ29va2llcygKICAgICByZXR1cm4gZmlsdGVyZWRDb29raWVz
OwogfQogCi1TdHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
Y29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwm
IHVybCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBSZXRhaW5Q
dHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBjdXJy
ZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVTdG9y
YWdlKCk7Ci0gICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXNGb3JVUkwoY29va2ll
U3RvcmFnZS5nZXQoKSwgdXJsKTsKKyAgICBOU0FycmF5ICpjb29raWVzID0gd2tIVFRQQ29va2ll
c0ZvclVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsKTsKICAgICByZXR1cm4g
W1tOU0hUVFBDb29raWUgcmVxdWVzdEhlYWRlckZpZWxkc1dpdGhDb29raWVzOmZpbHRlckNvb2tp
ZXMoY29va2llcykuZ2V0KCldIG9iamVjdEZvcktleTpAIkNvb2tpZSJdOwogCiAgICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLVN0cmluZyBj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
Y29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAg
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgUmV0YWluUHRyPENGSFRUUENv
b2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENv
b2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAg
IE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hUVFBDb29raWVzRm9yVVJMKGNvb2tpZVN0b3JhZ2UuZ2V0
KCksIHVybCk7CisgICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXNGb3JVUkwoc2Vz
c2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHVybCk7CiAgICAgcmV0dXJuIFtbTlNIVFRQQ29v
a2llIHJlcXVlc3RIZWFkZXJGaWVsZHNXaXRoQ29va2llczpjb29raWVzXSBvYmplY3RGb3JLZXk6
QCJDb29raWUiXTsKIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAgICAgcmV0dXJu
IFN0cmluZygpOwogfQogCi12b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgY29va2llU3RyKQordm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TOwogCkBAIC0xMDMsMzEgKzEwMCwyOCBAQCB2b2lkIHNldENvb2tpZXNGcm9t
RE9NKE5ldHdvcmtpbmdDb250ZXh0CiAgICAgUmV0YWluUHRyPE5TQXJyYXk+IGZpbHRlcmVkQ29v
a2llcyA9IGZpbHRlckNvb2tpZXMoW05TSFRUUENvb2tpZSBjb29raWVzV2l0aFJlc3BvbnNlSGVh
ZGVyRmllbGRzOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6Y29va2llU3RyaW5n
IGZvcktleTpAIlNldC1Db29raWUiXSBmb3JVUkw6Y29va2llVVJMXSk7CiAgICAgQVNTRVJUKFtm
aWx0ZXJlZENvb2tpZXMuZ2V0KCkgY291bnRdIDw9IDEpOwogCi0gICAgUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRU
UENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwot
ICAgIHdrU2V0SFRUUENvb2tpZXNGb3JVUkwoY29va2llU3RvcmFnZS5nZXQoKSwgZmlsdGVyZWRD
b29raWVzLmdldCgpLCBjb29raWVVUkwsIGZpcnN0UGFydHkpOworICAgIHdrU2V0SFRUUENvb2tp
ZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIGZpbHRlcmVkQ29va2llcy5n
ZXQoKSwgY29va2llVVJMLCBmaXJzdFBhcnR5KTsKIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQorYm9v
bCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQogewogICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVT
dG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVT
dG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBOU0hU
VFBDb29raWVBY2NlcHRQb2xpY3kgY29va2llQWNjZXB0UG9saWN5ID0gc3RhdGljX2Nhc3Q8TlNI
VFRQQ29va2llQWNjZXB0UG9saWN5Pih3a0dldEhUVFBDb29raWVBY2NlcHRQb2xpY3koY29va2ll
U3RvcmFnZS5nZXQoKSkpOworICAgIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSBjb29raWVBY2Nl
cHRQb2xpY3kgPSBzdGF0aWNfY2FzdDxOU0hUVFBDb29raWVBY2NlcHRQb2xpY3k+KHdrR2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSkpOwogICAg
IHJldHVybiBjb29raWVBY2NlcHRQb2xpY3kgPT0gTlNIVFRQQ29va2llQWNjZXB0UG9saWN5QWx3
YXlzIHx8IGNvb2tpZUFjY2VwdFBvbGljeSA9PSBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5
RnJvbU1haW5Eb2N1bWVudERvbWFpbjsKIAogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1
cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5
Ki8sIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAg
cmF3Q29va2llcy5jbGVhcigpOwogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAot
ICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29u
dGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRU
UENvb2tpZVN0b3JhZ2UoKTsKLSAgICBOU0FycmF5ICpjb29raWVzID0gd2tIVFRQQ29va2llc0Zv
clVSTChjb29raWVTdG9yYWdlLmdldCgpLCB1cmwpOworICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3
a0hUVFBDb29raWVzRm9yVVJMKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCB1cmwpOwog
ICAgIE5TVUludGVnZXIgY291bnQgPSBbY29va2llcyBjb3VudF07CiAgICAgcmF3Q29va2llcy5y
ZXNlcnZlQ2FwYWNpdHkoY291bnQpOwogICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNv
dW50OyArK2kpIHsKQEAgLTE0MSwxMiArMTM1LDEyIEBAIGJvb2wgZ2V0UmF3Q29va2llcyhOZXR3
b3JraW5nQ29udGV4dCogY28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBkZWxldGVDb29r
aWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBjb29raWVOYW1lKQordm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFt
ZSkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKICAgICBOU1VSTCAqY29v
a2llVVJMID0gdXJsOwotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29r
aWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQp
IDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKKyAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29v
a2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IHNlc3Npb24uY29va2llU3RvcmFnZSgpOwog
ICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hUVFBDb29raWVzRm9yVVJMKGNvb2tpZVN0b3JhZ2Uu
Z2V0KCksIGNvb2tpZVVSTCk7CiAKICAgICBOU1N0cmluZyAqY29va2llTmFtZVN0cmluZyA9IGNv
b2tpZU5hbWU7CkBAIC0xNjEsMTIgKzE1NSwxMSBAQCB2b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3Jr
aW5nQ29udGV4dCogY29uCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAotdm9p
ZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgSGFz
aFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCit2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgSGFzaFNldDxTdHJpbmc+JiBob3N0
bmFtZXMpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3Vy
cmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3Rv
cmFnZSgpOwotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hUVFBDb29raWVzKGNvb2tpZVN0b3Jh
Z2UuZ2V0KCkpOworICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hUVFBDb29raWVzKHNlc3Npb24u
Y29va2llU3RvcmFnZSgpLmdldCgpKTsKICAgICAKICAgICBmb3IgKE5TSFRUUENvb2tpZSogY29v
a2llIGluIGNvb2tpZXMpCiAgICAgICAgIGhvc3RuYW1lcy5hZGQoW2Nvb2tpZSBkb21haW5dKTsK
QEAgLTE3NCwxMSArMTY3LDExIEBAIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0d29y
a2luZ0MKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCi12b2lkIGRlbGV0ZUNv
b2tpZXNGb3JIb3N0bmFtZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiBob3N0bmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKICAgICBC
RUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2ll
U3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBjdXJyZW50Q0ZIVFRQQ29va2ll
U3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCk7CisgICAgUmV0
YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBzZXNzaW9uLmNv
b2tpZVN0b3JhZ2UoKTsKICAgICBOU0FycmF5ICpjb29raWVzID0gd2tIVFRQQ29va2llcyhjb29r
aWVTdG9yYWdlLmdldCgpKTsKICAgICBpZiAoIWNvb2tpZXMpCiAgICAgICAgIHJldHVybjsKQEAg
LTE5MSwxMCArMTg0LDkgQEAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya2lu
ZwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKLXZvaWQgZGVsZXRlQWxsQ29v
a2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCkKK3ZvaWQgZGVsZXRlQWxsQ29va2llcyhj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24pCiB7Ci0gICAgUmV0YWluUHRyPENG
SFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENG
SFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgp
OwotICAgIHdrRGVsZXRlQWxsSFRUUENvb2tpZXMoY29va2llU3RvcmFnZS5nZXQoKSk7CisgICAg
d2tEZWxldGVBbGxIVFRQQ29va2llcyhzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSk7CiB9
CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZVN0
b3JhZ2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvQ29va2llU3RvcmFnZU1hYy5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llU3RvcmFnZU1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjUsNyArMjUsNiBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
Q29va2llU3RvcmFnZS5oIgotI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2VDRk5ldC5oIgogCiAjaW1w
b3J0ICJSZXNvdXJjZUhhbmRsZS5oIgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQkocmV2aXNpb24g
MTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VI
YW5kbGVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDYgQEAKICNpbXBvcnQgIkJs
b2JSZWdpc3RyeS5oIgogI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJDb29r
aWVTdG9yYWdlLmgiCi0jaW1wb3J0ICJDb29raWVTdG9yYWdlQ0ZOZXQuaCIKICNpbXBvcnQgIkNy
ZWRlbnRpYWxTdG9yYWdlLmgiCiAjaW1wb3J0ICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2lt
cG9ydCAiRW1wdHlQcm90b2NvbERlZmluaXRpb25zLmgiCkBAIC00Miw2ICs0MSw3IEBACiAjaW1w
b3J0ICJGcmFtZUxvYWRlci5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTUlNRVR5
cGVSZWdpc3RyeS5oIgorI2ltcG9ydCAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbXBvcnQgIlBh
Z2UuaCIKICNpbXBvcnQgIlJlc291cmNlRXJyb3IuaCIKICNpbXBvcnQgIlJlc291cmNlUmVzcG9u
c2UuaCIKQEAgLTE0Nyw3ICsxNDcsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRSZWxheFRoaXJkUGFy
dHlDb29raWVQCiB7CiAgICAgLy8gSWYgYSBVUkwgYWxyZWFkeSBoYXMgY29va2llcywgdGhlbiB3
ZSdsbCByZWxheCB0aGUgM3JkIHBhcnR5IGNvb2tpZSBwb2xpY3kgYW5kIGFjY2VwdCBuZXcgY29v
a2llcy4KIAotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjZkNvb2tpZVN0
b3JhZ2UgPSBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KTsKKyAgICBSZXRhaW5Q
dHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY2ZDb29raWVTdG9yYWdlID0gY29udGV4dC0+c3Rv
cmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCk7CiAgICAgTlNIVFRQQ29va2llQWNjZXB0UG9s
aWN5IGNvb2tpZUFjY2VwdFBvbGljeSA9IHN0YXRpY19jYXN0PE5TSFRUUENvb2tpZUFjY2VwdFBv
bGljeT4od2tHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNmQ29va2llU3RvcmFnZS5nZXQoKSkp
OwogCiAgICAgaWYgKGNvb2tpZUFjY2VwdFBvbGljeSAhPSBOU0hUVFBDb29raWVBY2NlcHRQb2xp
Y3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbikKQEAgLTIzMCw3ICsyMzAsNyBAQCBib29sIFJl
c291cmNlSGFuZGxlOjpzdGFydChOZXR3b3JraW5nQ29uCiAgICAgaWYgKCFjb250ZXh0LT5pc1Zh
bGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGQtPm1fc3RvcmFnZVNlc3Npb24g
PSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpOworICAgIGQtPm1fc3RvcmFnZVNlc3Npb24gPSBj
b250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLnBsYXRmb3JtU2Vzc2lvbigpOwogCiAgICAgQVNTRVJU
KCFkLT5tX3Byb3h5KTsKICAgICBkLT5tX3Byb3h5LmFkb3B0TlMod2tDcmVhdGVOU1VSTENvbm5l
Y3Rpb25EZWxlZ2F0ZVByb3h5KCkpOwpAQCAtMzk2LDcgKzM5Niw3IEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGU6OmxvYWRSZXNvdXJjZVN5bmNocm8KIAogICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4g
aGFuZGxlID0gYWRvcHRSZWYobmV3IFJlc291cmNlSGFuZGxlKHJlcXVlc3QsIGNsaWVudC5nZXQo
KSwgZmFsc2UgLypkZWZlcnNMb2FkaW5nKi8sIHRydWUgLypzaG91bGRDb250ZW50U25pZmYqLykp
OwogCi0gICAgaGFuZGxlLT5kLT5tX3N0b3JhZ2VTZXNzaW9uID0gY29udGV4dC0+c3RvcmFnZVNl
c3Npb24oKTsKKyAgICBoYW5kbGUtPmQtPm1fc3RvcmFnZVNlc3Npb24gPSBjb250ZXh0LT5zdG9y
YWdlU2Vzc2lvbigpLnBsYXRmb3JtU2Vzc2lvbigpOwogCiAgICAgaWYgKGNvbnRleHQgJiYgaGFu
ZGxlLT5kLT5tX3NjaGVkdWxlZEZhaWx1cmVUeXBlICE9IE5vRmFpbHVyZSkgewogICAgICAgICBl
cnJvciA9IGNvbnRleHQtPmJsb2NrZWRFcnJvcihyZXF1ZXN0KTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvQ29va2llSmFyUXQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvQ29va2llSmFyUXQuY3BwCShyZXZpc2lv
biAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L0Nvb2tpZUph
clF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTUgKzQ2LDE1IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIFNoYXJlZENvb2tpZUphclF0KiBzX3NoYXJlZENvb2tpZUphclF0ID0g
MDsKIAotdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZh
bHVlKQordm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiB2YWx1ZSkKIHsKLSAgICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gY29udGV4dCA/IGNvbnRl
eHQtPm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCktPmNvb2tpZUphcigpIDogU2hhcmVkQ29va2llSmFy
UXQ6OnNoYXJlZCgpOworICAgIFFOZXR3b3JrQ29va2llSmFyKiBqYXIgPSBzZXNzaW9uLmNvbnRl
eHQoKSA/IHNlc3Npb24uY29udGV4dCgpLT5uZXR3b3JrQWNjZXNzTWFuYWdlcigpLT5jb29raWVK
YXIoKSA6IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKICAgICBpZiAoIWphcikKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgUVVybCB1cmxGb3JDb29raWVzKHVybCk7CiAgICAgUVVybCBmaXJz
dFBhcnR5VXJsKGZpcnN0UGFydHkpOwotICAgIGlmICghdGhpcmRQYXJ0eUNvb2tpZVBvbGljeVBl
cm1pdHMoY29udGV4dCwgdXJsRm9yQ29va2llcywgZmlyc3RQYXJ0eVVybCkpCisgICAgaWYgKCF0
aGlyZFBhcnR5Q29va2llUG9saWN5UGVybWl0cyhzZXNzaW9uLmNvbnRleHQoKSwgdXJsRm9yQ29v
a2llcywgZmlyc3RQYXJ0eVVybCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFFMaXN0PFFOZXR3
b3JrQ29va2llPiBjb29raWVzID0gUU5ldHdvcmtDb29raWU6OnBhcnNlQ29va2llcyhRU3RyaW5n
KHZhbHVlKS50b0xhdGluMSgpKTsKQEAgLTY5LDE1ICs2OSwxNSBAQCB2b2lkIHNldENvb2tpZXNG
cm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0CiAgICAgamFyLT5zZXRDb29raWVzRnJvbVVybChjb29r
aWVzLCB1cmxGb3JDb29raWVzKTsKIH0KIAotU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVy
bCkKK1N0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIFFOZXR3b3Jr
Q29va2llSmFyKiBqYXIgPSBjb250ZXh0ID8gY29udGV4dC0+bmV0d29ya0FjY2Vzc01hbmFnZXIo
KS0+Y29va2llSmFyKCkgOiBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CisgICAgUU5ldHdv
cmtDb29raWVKYXIqIGphciA9IHNlc3Npb24uY29udGV4dCgpID8gc2Vzc2lvbi5jb250ZXh0KCkt
Pm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCktPmNvb2tpZUphcigpIDogU2hhcmVkQ29va2llSmFyUXQ6
OnNoYXJlZCgpOwogICAgIGlmICghamFyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAg
ICBRVXJsIHVybEZvckNvb2tpZXModXJsKTsKICAgICBRVXJsIGZpcnN0UGFydHlVcmwoZmlyc3RQ
YXJ0eSk7Ci0gICAgaWYgKCF0aGlyZFBhcnR5Q29va2llUG9saWN5UGVybWl0cyhjb250ZXh0LCB1
cmxGb3JDb29raWVzLCBmaXJzdFBhcnR5VXJsKSkKKyAgICBpZiAoIXRoaXJkUGFydHlDb29raWVQ
b2xpY3lQZXJtaXRzKHNlc3Npb24uY29udGV4dCgpLCB1cmxGb3JDb29raWVzLCBmaXJzdFBhcnR5
VXJsKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgUUxpc3Q8UU5ldHdvcmtDb29r
aWU+IGNvb2tpZXMgPSBqYXItPmNvb2tpZXNGb3JVcmwodXJsRm9yQ29va2llcyk7CkBAIC05NCw5
ICs5NCw5IEBAIFN0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiAKICAgICBy
ZXR1cm4gcmVzdWx0Q29va2llcy5qb2luKFFMYXRpbjFTdHJpbmcoIjsgIikpOwogfQogCi1TdHJp
bmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcg
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQogewotICAg
IFFOZXR3b3JrQ29va2llSmFyKiBqYXIgPSBjb250ZXh0ID8gY29udGV4dC0+bmV0d29ya0FjY2Vz
c01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7Cisg
ICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IHNlc3Npb24uY29udGV4dCgpID8gc2Vzc2lvbi5j
b250ZXh0KCktPm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCktPmNvb2tpZUphcigpIDogU2hhcmVkQ29v
a2llSmFyUXQ6OnNoYXJlZCgpOwogICAgIGlmICghamFyKQogICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CiAKQEAgLTExMSw0MyArMTExLDQzIEBAIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShOZXQKICAgICByZXR1cm4gcmVzdWx0Q29va2llcy5qb2luKFFMYXRpbjFTdHJpbmco
IjsgIikpOwogfQogCi1ib29sIGNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKK2Jv
b2wgY29va2llc0VuYWJsZWQoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKIHsKLSAgICBRTmV0d29y
a0Nvb2tpZUphciogamFyID0gY29udGV4dCA/IGNvbnRleHQtPm5ldHdvcmtBY2Nlc3NNYW5hZ2Vy
KCktPmNvb2tpZUphcigpIDogU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOworICAgIFFOZXR3
b3JrQ29va2llSmFyKiBqYXIgPSBzZXNzaW9uLmNvbnRleHQoKSA/IHNlc3Npb24uY29udGV4dCgp
LT5uZXR3b3JrQWNjZXNzTWFuYWdlcigpLT5jb29raWVKYXIoKSA6IFNoYXJlZENvb2tpZUphclF0
OjpzaGFyZWQoKTsKICAgICByZXR1cm4gISFqYXI7CiB9CiAKLWJvb2wgZ2V0UmF3Q29va2llcyhO
ZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNv
bnN0IEtVUkwmIC8qdXJsKi8sIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBnZXRS
YXdDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypm
aXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8sIFZlY3RvcjxDb29raWU+JiByYXdDb29r
aWVzKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiAgICAgcmF3Q29va2ll
cy5jbGVhcigpOwogICAgIHJldHVybiBmYWxzZTsgLy8gcmV0dXJuIHRydWUgd2hlbiBpbXBsZW1l
bnRlZAogfQogCi12b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IEtV
UkwmLCBjb25zdCBTdHJpbmcmKQordm9pZCBkZWxldGVDb29raWUoTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5
ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3Jr
aW5nQ29udGV4dCogY29udGV4dCwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCit2b2lkIGdl
dEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgSGFz
aFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCAh
Y29udGV4dCk7IC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9yIGNvb2tpZSBqYXJzIG90aGVyIHRo
YW4gdGhlIHNoYXJlZCBvbmUuCisgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uLCAhc2Vzc2lvbi5j
b250ZXh0KCkpOyAvLyBOb3QgeWV0IGltcGxlbWVudGVkIGZvciBjb29raWUgamFycyBvdGhlciB0
aGFuIHRoZSBzaGFyZWQgb25lLgogICAgIFNoYXJlZENvb2tpZUphclF0KiBqYXIgPSBTaGFyZWRD
b29raWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgaWYgKGphcikKICAgICAgICAgamFyLT5nZXRIb3N0
bmFtZXNXaXRoQ29va2llcyhob3N0bmFtZXMpOwogfQogCi12b2lkIGRlbGV0ZUNvb2tpZXNGb3JI
b3N0bmFtZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBob3N0bmFt
ZSkKK3ZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKLSAgICBBU1NFUlRfVU5VU0VEKGNv
bnRleHQsICFjb250ZXh0KTsgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBmb3IgY29va2llIGphcnMg
b3RoZXIgdGhhbiB0aGUgc2hhcmVkIG9uZS4KKyAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb24sICFz
ZXNzaW9uLmNvbnRleHQoKSk7IC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9yIGNvb2tpZSBqYXJz
IG90aGVyIHRoYW4gdGhlIHNoYXJlZCBvbmUuCiAgICAgU2hhcmVkQ29va2llSmFyUXQqIGphciA9
IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKICAgICBpZiAoamFyKQogICAgICAgICBqYXIt
PmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShob3N0bmFtZSk7CiB9CiAKLXZvaWQgZGVsZXRlQWxs
Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCkKK3ZvaWQgZGVsZXRlQWxsQ29va2ll
cyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24pCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChj
b250ZXh0LCAhY29udGV4dCk7IC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9yIGNvb2tpZSBqYXJz
IG90aGVyIHRoYW4gdGhlIHNoYXJlZCBvbmUuCisgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uLCAh
c2Vzc2lvbi5jb250ZXh0KCkpOyAvLyBOb3QgeWV0IGltcGxlbWVudGVkIGZvciBjb29raWUgamFy
cyBvdGhlciB0aGFuIHRoZSBzaGFyZWQgb25lLgogICAgIFNoYXJlZENvb2tpZUphclF0KiBqYXIg
PSBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgaWYgKGphcikKICAgICAgICAgamFy
LT5kZWxldGVBbGxDb29raWVzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcAkocmV2aXNp
b24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29y
a1JlcGx5SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNs
dWRlICJCbG9iRGF0YS5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTUlN
RVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAJKHJl
dmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9D
b29raWVKYXJTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsMTEgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgU291cENvb2tpZUphciogY29va2llSmFyRm9yQ29u
dGV4dChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCkKK3N0YXRpYyBTb3VwQ29va2llSmFyKiBj
b29raWVKYXJGb3JTZXNzaW9uKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKIHsKLSAg
ICByZXR1cm4gU09VUF9DT09LSUVfSkFSKHNvdXBfc2Vzc2lvbl9nZXRfZmVhdHVyZShjb250ZXh0
LT5zb3VwU2Vzc2lvbigpLCBTT1VQX1RZUEVfQ09PS0lFX0pBUikpOworICAgIGlmICghc2Vzc2lv
bi5jb250ZXh0KCkpCisgICAgICAgIHJldHVybiBzb3VwQ29va2llSmFyKCk7CisgICAgcmV0dXJu
IFNPVVBfQ09PS0lFX0pBUihzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUoc2Vzc2lvbi5jb250ZXh0
KCktPnNvdXBTZXNzaW9uKCksIFNPVVBfVFlQRV9DT09LSUVfSkFSKSk7CiB9CiAKIHN0YXRpYyBH
UmVmUHRyPFNvdXBDb29raWVKYXI+JiBkZWZhdWx0Q29va2llSmFyKCkKQEAgLTczLDkgKzc1LDkg
QEAgc3RhdGljIGlubGluZSBib29sIGh0dHBPbmx5Q29va2llRXhpc3RzKAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCogY29u
dGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJp
bmcmIHZhbHVlKQordm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBTb3VwQ29va2llSmFyKiBqYXIgPSBjb250ZXh0ID8gY29v
a2llSmFyRm9yQ29udGV4dChjb250ZXh0KSA6IHNvdXBDb29raWVKYXIoKTsKKyAgICBTb3VwQ29v
a2llSmFyKiBqYXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Npb24pOwogICAgIGlmICghamFy
KQogICAgICAgICByZXR1cm47CiAKQEAgLTEwNyw5ICsxMDksOSBAQCB2b2lkIHNldENvb2tpZXNG
cm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0CiAgICAgc291cF9jb29raWVzX2ZyZWUoZXhpc3RpbmdD
b29raWVzKTsKIH0KIAotc3RhdGljIFN0cmluZyBjb29raWVzRm9yQ29udGV4dChOZXR3b3JraW5n
Q29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBib29sIGZvckhUVFBIZWFkZXIpCitz
dGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNzaW9uKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgS1VSTCYgdXJsLCBib29sIGZvckhUVFBIZWFkZXIpCiB7Ci0gICAgU291cENv
b2tpZUphciogamFyID0gY29udGV4dCA/IGNvb2tpZUphckZvckNvbnRleHQoY29udGV4dCkgOiBz
b3VwQ29va2llSmFyKCk7CisgICAgU291cENvb2tpZUphciogamFyID0gY29va2llSmFyRm9yU2Vz
c2lvbihzZXNzaW9uKTsKICAgICBpZiAoIWphcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
CkBAIC0xMTgsMjUgKzEyMCwyNSBAQCBzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JDb250ZXh0KE5l
dHdvcmtpCiAgICAgcmV0dXJuIFN0cmluZzo6ZnJvbVVURjgoY29va2llcy5nZXQoKSk7CiB9CiAK
LVN0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBL
VVJMJiwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQogewotICAg
IHJldHVybiBjb29raWVzRm9yQ29udGV4dChjb250ZXh0LCB1cmwsIGZhbHNlKTsKKyAgICByZXR1
cm4gY29va2llc0ZvclNlc3Npb24oc2Vzc2lvbiwgdXJsLCBmYWxzZSk7CiB9CiAKLVN0cmluZyBj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
Y29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0
dXJuIGNvb2tpZXNGb3JDb250ZXh0KGNvbnRleHQsIHVybCwgdHJ1ZSk7CisgICAgcmV0dXJuIGNv
b2tpZXNGb3JTZXNzaW9uKHNlc3Npb24sIHVybCwgdHJ1ZSk7CiB9CiAKLWJvb2wgY29va2llc0Vu
YWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0
eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQorYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBL
VVJMJiAvKnVybCovKQogewotICAgIHJldHVybiAhIWNvb2tpZUphckZvckNvbnRleHQoY29udGV4
dCk7CisgICAgcmV0dXJuICEhY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKIH0KIAotYm9v
bCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiAv
KmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2ll
cykKK2Jvb2wgZ2V0UmF3Q29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+
JiByYXdDb29raWVzKQogewogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKLSAgICBTb3VwQ29va2ll
SmFyKiBqYXIgPSBjb250ZXh0ID8gY29va2llSmFyRm9yQ29udGV4dChjb250ZXh0KSA6IHNvdXBD
b29raWVKYXIoKTsKKyAgICBTb3VwQ29va2llSmFyKiBqYXIgPSBjb29raWVKYXJGb3JTZXNzaW9u
KHNlc3Npb24pOwogICAgIGlmICghamFyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTE1
Nyw5ICsxNTksOSBAQCBib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3ZvaWQgZGVs
ZXRlQ29va2llKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgU291cENvb2tpZUphciogamFyID0gY29udGV4
dCA/IGNvb2tpZUphckZvckNvbnRleHQoY29udGV4dCkgOiBzb3VwQ29va2llSmFyKCk7CisgICAg
U291cENvb2tpZUphciogamFyID0gY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKICAgICBp
ZiAoIWphcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNzgsOSArMTgwLDkgQEAgdm9pZCBkZWxl
dGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbgogICAgIH0KIH0KIAotdm9pZCBnZXRIb3N0
bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgSGFzaFNldDxTdHJp
bmc+JiBob3N0bmFtZXMpCit2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7Ci0gICAg
U291cENvb2tpZUphciogY29va2llSmFyID0gY29udGV4dCA/IGNvb2tpZUphckZvckNvbnRleHQo
Y29udGV4dCkgOiBzb3VwQ29va2llSmFyKCk7CisgICAgU291cENvb2tpZUphciogY29va2llSmFy
ID0gY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKICAgICBHT3duUHRyPEdTTGlzdD4gY29v
a2llcyhzb3VwX2Nvb2tpZV9qYXJfYWxsX2Nvb2tpZXMoY29va2llSmFyKSk7CiAgICAgZm9yIChH
U0xpc3QqIGl0ZW0gPSBjb29raWVzLmdldCgpOyBpdGVtOyBpdGVtID0gZ19zbGlzdF9uZXh0KGl0
ZW0pKSB7CiAgICAgICAgIEdPd25QdHI8U291cENvb2tpZT4gY29va2llKHN0YXRpY19jYXN0PFNv
dXBDb29raWUqPihpdGVtLT5kYXRhKSk7CkBAIC0xOTAsMTAgKzE5MiwxMCBAQCB2b2lkIGdldEhv
c3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtpbmdDCiAgICAgfQogfQogCi12b2lkIGRlbGV0ZUNv
b2tpZXNGb3JIb3N0bmFtZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiBob3N0bmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKICAgICBDU3RyaW5n
IGhvc3ROYW1lU3RyaW5nID0gaG9zdG5hbWUudXRmOCgpOwotICAgIFNvdXBDb29raWVKYXIqIGNv
b2tpZUphciA9IGNvbnRleHQgPyBjb29raWVKYXJGb3JDb250ZXh0KGNvbnRleHQpIDogc291cENv
b2tpZUphcigpOworICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphciA9IGNvb2tpZUphckZvclNl
c3Npb24oc2Vzc2lvbik7CiAgICAgR093blB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29raWVf
amFyX2FsbF9jb29raWVzKGNvb2tpZUphcikpOwogICAgIGZvciAoR1NMaXN0KiBpdGVtID0gY29v
a2llcy5nZXQoKTsgaXRlbTsgaXRlbSA9IGdfc2xpc3RfbmV4dChpdGVtKSkgewogICAgICAgICBT
b3VwQ29va2llKiBjb29raWUgPSBzdGF0aWNfY2FzdDxTb3VwQ29va2llKj4oaXRlbS0+ZGF0YSk7
CkBAIC0yMDMsOSArMjA1LDkgQEAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29y
a2luZwogICAgIH0KIH0KIAotdm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0KQordm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbikKIHsKLSAgICBTb3VwQ29va2llSmFyKiBjb29raWVKYXIgPSBjb250ZXh0ID8gY29v
a2llSmFyRm9yQ29udGV4dChjb250ZXh0KSA6IHNvdXBDb29raWVKYXIoKTsKKyAgICBTb3VwQ29v
a2llSmFyKiBjb29raWVKYXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Npb24pOwogICAgIEdP
d25QdHI8R1NMaXN0PiBjb29raWVzKHNvdXBfY29va2llX2phcl9hbGxfY29va2llcyhjb29raWVK
YXIpKTsKICAgICBmb3IgKEdTTGlzdCogaXRlbSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0g
PSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAgICAgICAgU291cENvb2tpZSogY29va2llID0gc3Rh
dGljX2Nhc3Q8U291cENvb2tpZSo+KGl0ZW0tPmRhdGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAkocmV2aXNpb24gMTM4NDA3
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJHT3duUHRyU291cC5o
IgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+
CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5n
Lmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJj
ZUhhbmRsZVNvdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkxvY2FsaXplZFN0
cmluZ3MuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3Ry
eS5oIgorI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2llSmFyV2luLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Db29r
aWVKYXJXaW4uY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3dpbi9Db29raWVKYXJXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpbmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2lu
Y2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDxXaW5pbmV0Lmg+CkBAIC0zNSw3ICszNiw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3Jr
aW5nQ29udGV4dCosIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
dmFsdWUpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAg
Ly8gRklYTUU6IERlYWwgd2l0aCBmaXJzdFBhcnR5IGFyZ3VtZW50LgogICAgIFN0cmluZyBzdHIg
PSB1cmwuc3RyaW5nKCk7CkBAIC00Myw3ICs0NCw3IEBAIHZvaWQgc2V0Q29va2llc0Zyb21ET00o
TmV0d29ya2luZ0NvbnRleHQKICAgICBJbnRlcm5ldFNldENvb2tpZShzdHIuY2hhcmFjdGVyc1dp
dGhOdWxsVGVybWluYXRpb24oKSwgMCwgdmFsLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9u
KCkpOwogfQogCi1TdHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0
IEtVUkwmLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQogewogICAgIC8vIEZJ
WE1FOiBEZWFsIHdpdGggZmlyc3RQYXJ0eSBhcmd1bWVudC4KIApAQCAtNjQsNDAgKzY1LDQwIEBA
IFN0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiwKICAgICByZXR1cm4gU3Ry
aW5nOjphZG9wdChidWZmZXIpOwogfQogCi1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHks
IGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNv
bnN0IEtVUkwmIHVybCkKIHsKICAgICAvLyBGSVhNRTogaW5jbHVkZSBIdHRwT25seSBjb29raWUK
LSAgICByZXR1cm4gY29va2llc0ZvckRPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAg
IHJldHVybiBjb29raWVzRm9yRE9NKHNlc3Npb24uY29udGV4dCgpLCBmaXJzdFBhcnR5LCB1cmwp
OwogfQogCi1ib29sIGNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKK2Jvb2wgY29v
a2llc0VuYWJsZWQoTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAv
KmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKIHsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLywgVmVjdG9yPENvb2tp
ZT4mIHJhd0Nvb2tpZXMpCitib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwq
LywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQg
aW1wbGVtZW50ZWQKICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAgICAgcmV0dXJuIGZhbHNlOyAv
LyByZXR1cm4gdHJ1ZSB3aGVuIGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKE5l
dHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCit2b2lkIGRlbGV0
ZUNvb2tpZShOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5n
JikKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQogCi12b2lkIGdldEhv
c3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiwgSGFzaFNldDxTdHJpbmc+JiBo
b3N0bmFtZXMpCit2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQogewogICAgIC8vIEZJWE1FOiBOb3Qg
eWV0IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdv
cmtpbmdDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKK3ZvaWQgZGVsZXRlQ29va2ll
c0Zvckhvc3RuYW1lKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYgaG9zdG5h
bWUpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxl
dGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KikKK3ZvaWQgZGVsZXRlQWxsQ29va2llcyhO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVu
dGVkCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJj
ZUhhbmRsZVdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay93aW4vUmVzb3VyY2VIYW5kbGVXaW4uY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUhhbmRsZVdpbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJEYXRhVVJMLmgiCiAjaW5j
bHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5j
bHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgog
I2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVu
dC5oIgpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMTM4NDA3
KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQsMTYgKzE0NCw5IEBAIHZvaWQgTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldFMKICAgICBtX3NlcmlhbExvYWRpbmdFbmFi
bGVkID0gZW5hYmxlZDsKIH0KIAotc3RhdGljIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0KiBuZXR3
b3JraW5nQ29udGV4dChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCitzdGF0aWMgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbihib29sIHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQpCiB7Ci0gICAgLy8gVGhpcyBuZXR3b3JraW5nIGNvbnRleHQgaXMgb25seSBuZWVkZWQgdG8g
Z2V0IHN0b3JhZ2Ugc2Vzc2lvbiBmcm9tLgotICAgIGlmIChwcml2YXRlQnJvd3NpbmdFbmFibGVk
KSB7Ci0gICAgICAgIHN0YXRpYyBSZW1vdGVOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCA9IFJl
bW90ZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVhdGUoZmFsc2UsIGZhbHNlLCB0cnVlKS5sZWFrUmVm
KCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHN0YXRp
YyBSZW1vdGVOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCA9IFJlbW90ZU5ldHdvcmtpbmdDb250
ZXh0OjpjcmVhdGUoZmFsc2UsIGZhbHNlLCBmYWxzZSkubGVha1JlZigpOwotICAgICAgICByZXR1
cm4gY29udGV4dDsKLSAgICB9CisgICAgcmV0dXJuIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgPyBS
ZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6cHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpIDogTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0KIAogdm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnREb3dubG9hZChib29sIHByaXZhdGVCcm93
c2luZ0VuYWJsZWQsIHVpbnQ2NF90IGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKQEAgLTE2NCwzMiArMTU3LDMyIEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnN0YXIKIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29v
a2llc0ZvckRPTShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmIHVybCwgU3RyaW5nJiByZXN1bHQpCiB7Ci0gICAgcmVzdWx0ID0g
V2ViQ29yZTo6Y29va2llc0ZvckRPTShuZXR3b3JraW5nQ29udGV4dChwcml2YXRlQnJvd3NpbmdF
bmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVz
Rm9yRE9NKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5
LCB1cmwpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29r
aWVzRnJvbURPTShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7Ci0g
ICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00obmV0d29ya2luZ0NvbnRleHQocHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBXZWJD
b3JlOjpzZXRDb29raWVzRnJvbURPTShzdG9yYWdlU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdFbmFi
bGVkKSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQogCiB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRW5hYmxlZChib29sIHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgYm9vbCYg
cmVzdWx0KQogewotICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKG5ldHdvcmtp
bmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwpOworICAg
IHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVC
cm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCiB2b2lkIE5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShib29sIHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
IHVybCwgU3RyaW5nJiByZXN1bHQpCiB7Ci0gICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUobmV0d29ya2luZ0NvbnRleHQocHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCksIGZpcnN0UGFydHksIHVybCk7CisgICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoc3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCksIGZpcnN0UGFydHksIHVybCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M6OmdldFJhd0Nvb2tpZXMoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByZXN1bHQp
CiB7Ci0gICAgV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhuZXR3b3JraW5nQ29udGV4dChwcml2YXRl
QnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsLCByZXN1bHQpOworICAgIFdlYkNvcmU6
OmdldFJhd0Nvb2tpZXMoc3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZp
cnN0UGFydHksIHVybCwgcmVzdWx0KTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6ZGVsZXRlQ29va2llKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0gICAgV2ViQ29yZTo6ZGVs
ZXRlQ29va2llKG5ldHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCB1cmws
IGNvb2tpZU5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzdG9yYWdlU2Vzc2lvbihw
cml2YXRlQnJvd3NpbmdFbmFibGVkKSwgdXJsLCBjb29raWVOYW1lKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0
d29ya1Byb2Nlc3NNYWluTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01haW5NYWMubW0JKHJldmlzaW9uIDEzODQwNykK
KysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01haW5N
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMxLDkgQEAKICNpbXBvcnQgIkNvbW1hbmRM
aW5lLmgiCiAjaW1wb3J0ICJFbnZpcm9ubWVudFV0aWxpdGllcy5oIgogI2ltcG9ydCAiTmV0d29y
a1Byb2Nlc3MuaCIKKyNpbXBvcnQgIldlYlN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8V2Vi
Q29yZS9SdW5Mb29wLmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KLSNpbXBv
cnQgPFdlYlN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9ydCA8bWFjaC9tYWNoX2Vycm9yLmg+CiAj
aW1wb3J0IDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRpbmcuaD4KICNpbXBvcnQgPHNlcnZlcnMv
Ym9vdHN0cmFwLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVt
b3RlTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAkocmV2aXNpb24gMTM4NDA3
KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdD
b250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDggQEAgcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKICAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwogCisgICAgc3RhdGljIFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgcHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOyAvLyBDYW4g
b25seSBiZSBjYWxsZWQgd2hlbiB0aGUgc2Vzc2lvbiBleGlzdHMuCisKIHByaXZhdGU6CiAgICAg
UmVtb3RlTmV0d29ya2luZ0NvbnRleHQoYm9vbCBuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcywgYm9v
bCBsb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkLCBib29sIHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQpOwogCkBAIC00OSw4ICs1MSw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wg
bmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJv
b2wgbG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZCgpIGNvbnN0IE9WRVJSSURFOwotICAg
IHZpcnR1YWwgYm9vbCBpblByaXZhdGVCcm93c2luZ01vZGUoKSBjb25zdCBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3Rv
cmFnZVNlc3Npb24oKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIE5TT3BlcmF0aW9uUXVl
dWUgKnNjaGVkdWxlZE9wZXJhdGlvblF1ZXVlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmKSBjb25zdCBPVkVSUklERTsKIApJbmRleDogU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4
dC5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
bWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICsz
NSwxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
LXN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNz
aW9uOworc3RhdGljIE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBwcml2YXRlQnJvd3Np
bmdTdG9yYWdlU2Vzc2lvbigpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+LCBzZXNzaW9u
LCAoKSk7CisgICAgcmV0dXJuIHNlc3Npb247Cit9CiAKIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0
OjpSZW1vdGVOZXR3b3JraW5nQ29udGV4dChib29sIG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzLCBi
b29sIGxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQsIGJvb2wgcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCkKICAgICA6IG1fbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MobmVlZHNTaXRlU3BlY2lm
aWNRdWlya3MpCkBAIC02MywxOSArNjgsMjAgQEAgYm9vbCBSZW1vdGVOZXR3b3JraW5nQ29udGV4
dDo6bG9jYWxGaWxlQwogICAgIHJldHVybiBtX2xvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJs
ZWQ7CiB9CiAKLWJvb2wgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmluUHJpdmF0ZUJyb3dzaW5n
TW9kZSgpIGNvbnN0CitOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFJlbW90ZU5ldHdvcmtpbmdDb250
ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZDsKKyAgICBpZiAobV9wcml2YXRlQnJvd3NpbmdFbmFibGVkKSB7CisgICAgICAg
IEFTU0VSVChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpKTsKKyAgICAgICAgcmV0dXJu
ICpwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpOworICAgIH0KKworICAgIHJldHVybiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQogCi1DRlVS
TFN0b3JhZ2VTZXNzaW9uUmVmIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lv
bigpIGNvbnN0CitOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0
Ojpwcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKLSAgICBpZiAoaW5Qcml2YXRlQnJvd3NpbmdN
b2RlKCkpIHsKLSAgICAgICAgQVNTRVJUKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKTsK
LSAgICAgICAgcmV0dXJuIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uOwotICAgIH0KLSAg
ICAvLyBGSVhNRSAoTmV0d29ya1Byb2Nlc3MpOiBSZXR1cm4gYSBkZWZhdWx0IHNlc3Npb24gdGhh
dCdzIHVzZWQgZm9yIHRlc3RpbmcuCi0gICAgcmV0dXJuIDA7CisgICAgQVNTRVJUKHByaXZhdGVC
cm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpOworICAgIHJldHVybiAqcHJpdmF0ZUJyb3dzaW5nU3Rv
cmFnZVNlc3Npb24oKTsKIH0KIAogTlNPcGVyYXRpb25RdWV1ZSAqUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQ6OnNjaGVkdWxlZE9wZXJhdGlvblF1ZXVlKCkgY29uc3QKQEAgLTEwOCwyMyArMTE0LDE4
IEBAIHZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnNldFByaXZhdGUKIAogdm9pZCBSZW1v
dGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7Ci0g
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFn
ZVNlc3Npb24pCisgICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25J
ZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpKTsKICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNm
SWRlbnRpZmllciA9IFN0cmluZyhwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZp
ZXJCYXNlKCkgKyAiLlByaXZhdGVCcm93c2luZyIpLmNyZWF0ZUNGU3RyaW5nKCk7CiAKLSAgICBw
cml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbiA9IFdLQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNz
aW9uKGNmSWRlbnRpZmllci5nZXQoKSk7CisgICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b24oKSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bihwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkpOwogfQogCiB2
b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bigpCiB7Ci0gICAgaWYgKCFwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbikKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgQ0ZSZWxlYXNlKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKTsK
LSAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbiA9IDA7CisgICAgcHJpdmF0ZUJyb3dz
aW5nU3RvcmFnZVNlc3Npb24oKSA9IG51bGxwdHI7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5h
Z2VyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1
c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWFjLm1tCShyZXZpc2lvbiAx
Mzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMv
bWFjL0N1c3RvbVByb3RvY29sTWFuYWdlck1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMsNiAr
MzMsNyBAQAogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW1wb3J0ICJXZWJQ
cm9jZXNzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0tVUkwuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVz
b3VyY2VFcnJvci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwNDMsNyArMTA0Myw2IEBACiAJCUUxQjc4NDczMTYz
RjI1M0UwMDA3QjY5MiAvKiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQjc4NDcyMTYzRjI1M0UwMDA3QjY5
MiAvKiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbSAqLzsgfTsKIAkJRTFDQzFCOTAxMkQ3RUFE
RjAwNjI1ODM4IC8qIFByaW50SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTFDQzFCOEUxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mby5oICov
OyB9OwogCQlFMUNDMUI5MTEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvTWFjLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFDQzFCOEYxMkQ3RUFE
RjAwNjI1ODM4IC8qIFByaW50SW5mb01hYy5tbSAqLzsgfTsKLQkJRTFEMjI5NzExNjUyREM1MjAw
QkFBNEJEIC8qIFdlYlBsYXRmb3JtU3RyYXRlZ2llc01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRDIyOTZFMTY1MkRCOUMwMEJBQTRCRCAvKiBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXNNYWMubW0gKi87IH07CiAJCUUxRURGREE2MTYyODg2OEUwMDM5
RUNEQSAvKiBNYWluTWFjUHJvY2Vzcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQTZGQTMxMDExRTM5MjFFMDBEQjEzNzEgLyogTWFpbk1hY1Byb2Nl
c3MuY3BwICovOyB9OwogCQlFMUVERkRBNzE2Mjg4Njk2MDAzOUVDREEgLyogU2hhcmVkV29ya2Vy
UHJvY2Vzc01haW5NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFMUVERkQ5QjE2Mjg3RDBCMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01h
aW5NYWMubW0gKi87IH07CiAJCUUxRURGREE4MTYyODg2OTkwMDM5RUNEQSAvKiBTaGFyZWRXb3Jr
ZXJQcm9jZXNzTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRTFFREZEQTIxNjI4ODM4QzAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYWMu
bW0gKi87IH07CkBAIC0yMzQ0LDcgKzIzNDMsNiBAQAogCQlFMUI3ODQ3MjE2M0YyNTNFMDAwN0I2
OTIgLyogUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBSZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTFDQzFCOEUxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mby5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQcmludEluZm8uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFDQzFCOEYxMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5m
b01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFByaW50SW5m
b01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJRTFEMjI5NkUxNjUyREI5QzAw
QkFBNEJEIC8qIFdlYlBsYXRmb3JtU3RyYXRlZ2llc01hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBsYXRmb3JtU3RyYXRlZ2llc01hYy5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFFREZEOTgxNjI4N0JEMTAwMzlFQ0RBIC8qIFNoYXJl
ZFdvcmtlclByb2Nlc3NNYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNo
YXJlZFdvcmtlclByb2Nlc3NNYWluLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUx
RURGRDlCMTYyODdEMEIwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb2Nl
c3NNYWluTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUVERkQ5RDE2Mjg3
RjE5MDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTaGFyZWRXb3JrZXJQcm9jZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0zNzMzLDcgKzM3MzEsNiBAQAogCQkJCUJDMTExQURGMTEyRjVCQzIwMDMzN0JB
QiAvKiBXZWJFcnJvcnNNYWMubW0gKi8sCiAJCQkJOTM5MUYyODMxMjFCMzhGNTAwRUJGN0U4IC8q
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCAqLywKIAkJCQk5MzkxRjI4NDEyMUIzOEY1MDBF
QkY3RTggLyogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbSAqLywKLQkJCQlFMUQyMjk2RTE2
NTJEQjlDMDBCQUE0QkQgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFjLm1tICovLAogCQkJCUJD
QzQzQUM2MTI3Qjk5REUwMDMxN0YxNiAvKiBXZWJQb3B1cE1lbnVNYWMubW0gKi8sCiAJCQkJQkND
NTcxNTkxMTVBREFFRjAwMUNDQUY5IC8qIFdlYlN5c3RlbUludGVyZmFjZS5oICovLAogCQkJCUJD
QzU3MTVBMTE1QURBRUYwMDFDQ0FGOSAvKiBXZWJTeXN0ZW1JbnRlcmZhY2UubW0gKi8sCkBAIC01
OTc4LDcgKzU5NzUsNiBAQAogCQkJCTUxMjE3NDYwMTY0QzIwRTMwMDM3QTVDMSAvKiBTaGFyZWFi
bGVSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTIxNzQ2NDE2NEMyMTM3MDAzN0E1
QzEgLyogV2ViUmVzb3VyY2VCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFGMUFDNkIx
NjUxNzU5RTAwQzE3RDdGIC8qIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tIGluIFNvdXJj
ZXMgKi8sCi0JCQkJRTFEMjI5NzExNjUyREM1MjAwQkFBNEJEIC8qIFdlYlBsYXRmb3JtU3RyYXRl
Z2llc01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBQTNENzVCMTY1MUI0NEYwMDg3MTNEMCAv
KiBSZW1vdGVMYXllclRyZWVIb3N0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFBM0Q3NjExNjUx
QjdEMzAwODcxM0QwIC8qIFJlbW90ZUxheWVyVHJlZUhvc3RNZXNzYWdlUmVjZWl2ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTFGRDE4QjUxNjUxRkJBRDAwREJFMUNFIC8qIE5ldHdvcmtSZXNv
dXJjZUxvYWRlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsNyBA
QAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL01lbW9yeVN0YXRpc3RpY3MuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0FYT2JqZWN0Q2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRm9udENhY2hl
Lmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFu
YWdlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVz
L1dlYkNvb2tpZU1hbmFnZXIuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyUHJveHlNZXNzYWdl
cy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVN0
b3JhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Db29raWVKYXIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CkBAIC01NSw3ICs1Niw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0SG9zdG5h
bWVzV2l0aEMKIHsKICAgICBIYXNoU2V0PFN0cmluZz4gaG9zdG5hbWVzOwogCi0gICAgV2ViQ29y
ZTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoMCwgaG9zdG5hbWVzKTsKKyAgICBXZWJDb3JlOjpn
ZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9y
YWdlU2Vzc2lvbigpLCBob3N0bmFtZXMpOwogCiAgICAgVmVjdG9yPFN0cmluZz4gaG9zdG5hbWVM
aXN0OwogICAgIGNvcHlUb1ZlY3Rvcihob3N0bmFtZXMsIGhvc3RuYW1lTGlzdCk7CkBAIC02NSwx
MiArNjYsMTIgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNXaXRoQwogCiB2
b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBTdHJp
bmcmIGhvc3RuYW1lKQogewotICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZSgw
LCBob3N0bmFtZSk7CisgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIGhvc3RuYW1lKTsKIH0K
IAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVBbGxDb29raWVzKCkKIHsKLSAgICBXZWJD
b3JlOjpkZWxldGVBbGxDb29raWVzKDApOworICAgIFdlYkNvcmU6OmRlbGV0ZUFsbENvb2tpZXMo
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKSk7CiB9CiAKIHZv
aWQgV2ViQ29va2llTWFuYWdlcjo6c3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKCkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93
bmxvYWRNYWMubW0JKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvRG93bmxvYWRzL21hYy9Eb3dubG9hZE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjYsNiAr
MjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJEb3dubG9hZC5oIgogCisjaW1w
b3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L0F1dGhlbnRpY2F0aW9uTWFjLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYg
Kzc3LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmg+CiAj
ZW5kaWYKIAorI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRlICJXZWJTeXN0ZW1JbnRlcmZhY2Uu
aCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKQEAgLTMwMyw3ICszMDcsOCBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpzd2l0Y2hOZXR3
b3JrTG9hZGVyCiB7CiAjaWYgKFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykpICYmICFQ
TEFURk9STShXSU4pCiAgICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogRG8gdGhpcyBpbiBu
ZXR3b3JrIHByb2Nlc3MsIHRvby4KLSAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpzd2l0
Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7CisgICAgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2Uo
KTsKKyAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24o
KTsKICNlbmRpZgogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDEzODQwNykKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJXZWJDb3JlQXJndW1l
bnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCShyZXZpc2lvbiAxMzg0
MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRm
b3JtU3RyYXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNs
dWRlIDxXZWJDb3JlL0NvbG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Mb2FkZXJTdHJhdGVneS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QbGF0Zm9ybUNvb2tpZUphci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1QYXN0
ZWJvYXJkLmg+CkBAIC0xMTMsOTAgKzExNCw4MyBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6bm90aWZ5Q29va2llCiAgICAgV2ViQ29va2llTWFuYWdlcjo6c2hhcmVkKCkuZGlzcGF0Y2hD
b29raWVzRGlkQ2hhbmdlKCk7CiB9CiAKLSNpZiBQTEFURk9STShXSU4pICYmIFVTRShDRk5FVFdP
UkspCi1SZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpkZWZhdWx0Q29va2llU3RvcmFnZSgpCi17Ci0gICAgcmV0dXJuIDA7Ci19Ci0jZW5kaWYK
LQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTShOZXR3b3JraW5n
Q29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJs
KQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmIHVybCkKIHsKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQ
cm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAgICBTdHJpbmcg
cmVzdWx0OwotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0
aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NKGNvbnRleHQgJiYgY29udGV4dC0+aW5Qcml2YXRl
QnJvd3NpbmdNb2RlKCksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTTo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAg
ICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVj
dGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkNvb2tpZXNGb3JET00oc2Vzc2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgZmlyc3RQ
YXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29r
aWVzRm9yRE9NOjpSZXBseShyZXN1bHQpLCAwKSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmco
KTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBX
ZWJDb3JlOjpjb29raWVzRm9yRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0
dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0K
IAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtp
bmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IGNvb2tpZVN0cmluZykKIHsKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChX
ZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURP
TShjb250ZXh0ICYmIGNvbnRleHQtPmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpLCBmaXJzdFBhcnR5
LCB1cmwsIGNvb2tpZVN0cmluZyksIDApOworICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5u
ZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTZXRDb29raWVzRnJvbURPTShzZXNzaW9uLmlzUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbigpLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyksIDApOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAKLSAgICBXZWJDb3JlOjpzZXRDb29raWVz
RnJvbURPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CisgICAgV2Vi
Q29yZTo6c2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVT
dHJpbmcpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQo
TmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmIHVybCkKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRW5hYmxlZChj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IEtVUkwmIHVybCkKIHsKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAg
IGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAg
ICBib29sIHJlc3VsdDsKLSAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3Jr
Q29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJsZWQoY29udGV4dCAmJiBjb250ZXh0LT5p
blByaXZhdGVCcm93c2luZ01vZGUoKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZDo6UmVwbHkocmVzdWx0KSwg
MCkpCisgICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24o
KS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkKHNlc3Npb24uaXNQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KCksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Q29va2llc0VuYWJsZWQ6OlJlcGx5KHJlc3VsdCksIDApKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICNlbmRpZgogCi0gICAg
cmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7
CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHNlc3Npb24sIGZpcnN0UGFydHks
IHVybCk7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsK
ICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQo
KS51c2VzTmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAgICBTdHJpbmcgcmVzdWx0OwotICAgICAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpD
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb250ZXh0ICYmIGNvbnRleHQtPmluUHJpdmF0
ZUJyb3dzaW5nTW9kZSgpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlOjpSZXBseShy
ZXN1bHQpLCAwKSkKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29u
bmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbi5p
c1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZTo6UmVwbHkocmVzdWx0KSwgMCkpCiAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gV2ViQ29yZTo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsK
KyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lv
biwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Omdl
dFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29s
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVy
bCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkp
IHsKLSAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigp
LT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6R2V0UmF3Q29va2llcyhjb250ZXh0ICYmIGNvbnRleHQtPmluUHJpdmF0ZUJyb3dz
aW5nTW9kZSgpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAwKSkKKyAgICAg
ICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
R2V0UmF3Q29va2llcyhzZXNzaW9uLmlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCBmaXJzdFBh
cnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJh
d0Nvb2tpZXM6OlJlcGx5KHJhd0Nvb2tpZXMpLCAwKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gV2Vi
Q29yZTo6Z2V0UmF3Q29va2llcyhjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMp
OworICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHNlc3Npb24sIGZpcnN0UGFydHks
IHVybCwgcmF3Q29va2llcyk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxl
dGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0
ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewogI2lmIEVOQUJMRShORVRXT1JLX1BS
T0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2Vzcygp
KSB7Ci0gICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6
OkRlbGV0ZUNvb2tpZShjb250ZXh0ICYmIGNvbnRleHQtPmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgp
LCB1cmwsIGNvb2tpZU5hbWUpLCAwKTsKKyAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0
d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6RGVsZXRlQ29va2llKHNlc3Npb24uaXNQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKCksIHVybCwgY29va2llTmFtZSksIDApOwogICAgICAgICByZXR1cm47CiAgICAg
fQogI2VuZGlmCiAKLSAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoY29udGV4dCwgdXJsLCBjb29r
aWVOYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVO
YW1lKTsKIH0KIAogLy8gRGF0YWJhc2VTdHJhdGVneQpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NywxNSArNTcsMTIgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNT
dHJhdGVneQogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDb29raWVzQ2hhbmdlZCgpIE9WRVJSSURF
OwotI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKLSAgICB2aXJ0dWFsIFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBkZWZhdWx0Q29va2llU3RvcmFnZSgpIE9WRVJS
SURFOwotI2VuZGlmCi0gICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShXZWJDb3JlOjpO
ZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zy
b21ET00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7
Ci0gICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250
ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VS
TCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
Ym9vbCBnZXRSYXdDb29raWVzKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+JikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShX
ZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBT
dHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYs
IGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxl
ZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdD
b29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNv
cmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29y
ZTo6Q29va2llPiYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYs
IGNvbnN0IFN0cmluZyYpIE9WRVJSSURFOwogCiAgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJh
dGVneQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDEwICszNCw4IEBAIHB1YmxpYzoKICAgICB9
CiAKICAgICBzdGF0aWMgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50
aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyB2b2lkIHN3aXRjaFRvTmV3VGVz
dGluZ1Nlc3Npb24oKTsKICAgICBzdGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKCk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsK
LSAgICBzdGF0aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBkZWZhdWx0U3RvcmFnZVNlc3Npb24o
KTsKICAgICBzdGF0aWMgdm9pZCBzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhI
VFRQQ29va2llQWNjZXB0UG9saWN5KTsKIAogcHJpdmF0ZToKQEAgLTQ4LDggKzQ2LDcgQEAgcHJp
dmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygpIGNvbnN0
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBsb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFi
bGVkKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGluUHJpdmF0ZUJyb3dzaW5n
TW9kZSgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJl
ZiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViQ29yZTo6
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgV2ViQ29yZTo6U2NoZWR1bGVQYWlySGFzaFNldCogc2NoZWR1bGVkUnVuTG9v
cFBhaXJzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBP
VkVSUklERTsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQubW0JKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0JKHdvcmtp
bmcgY29weSkKQEAgLTIxLDcgKzIxLDYgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgogCi0jaW1wb3J0IDxXZWJDb3JlL0Nvb2tpZVN0
b3JhZ2VDRk5ldC5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRlckNsaWVudC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4K
QEAgLTMyLDggKzMxLDExIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgZGVmYXVsdENGU3RvcmFn
ZVNlc3Npb247Ci1zdGF0aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBwcml2YXRlQnJvd3NpbmdT
dG9yYWdlU2Vzc2lvbjsKK3N0YXRpYyBPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiYgcHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
T3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4sIHNlc3Npb24sICgpKTsKKyAgICByZXR1cm4g
c2Vzc2lvbjsKK30KIAogYm9vbCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpuZWVkc1NpdGVT
cGVjaWZpY1F1aXJrcygpIGNvbnN0CiB7CkBAIC02NywyNiArNjksMTcgQEAgdm9pZCBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRQcml2YQogICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VT
ZXNzaW9uSWRlbnRpZmllckJhc2UoKSA9IGlkZW50aWZpZXI7CiB9CiAKLXZvaWQgV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpCi17Ci0gICAgLy8g
U2V0IGEgcHJpdmF0ZSBzZXNzaW9uIGZvciB0ZXN0aW5nIHRvIGF2b2lkIGludGVyZmVyaW5nIHdp
dGggZ2xvYmFsIGNvb2tpZXMuIFRoaXMgc2hvdWxkIGJlIGRpZmZlcmVudCBmcm9tIHByaXZhdGUg
YnJvd3Npbmcgc2Vzc2lvbi4KLSAgICBpZiAoZGVmYXVsdENGU3RvcmFnZVNlc3Npb24pCi0gICAg
ICAgIENGUmVsZWFzZShkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbik7Ci0gICAgZGVmYXVsdENGU3Rv
cmFnZVNlc3Npb24gPSBXS0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlNUUigiUHJpdmF0
ZSBXZWJLaXQgU2Vzc2lvbiIpKTsKLX0KLQogdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKICAgICAvLyBGSVhNRSAoTmV0d29y
a1Byb2Nlc3MpOiBEb24ndCBjcmVhdGUgYW4gdW5uZWNlc3Nhcnkgc2Vzc2lvbiB3aGVuIHVzaW5n
IG5ldHdvcmsgcHJvY2Vzcy4KIAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYg
KHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKQorICAgIGlmIChwcml2YXRlQnJvd3NpbmdT
dG9yYWdlU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgYmFzZSA9IHBy
aXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKS5pc051bGwoKSA/IFN0
cmluZyhbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKSA6IHByaXZhdGVC
cm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKTsKLSAgICBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IGNmSWRlbnRpZmllciA9IFN0cmluZyhiYXNlICsgIi5Qcml2YXRlQnJvd3Npbmci
KS5jcmVhdGVDRlN0cmluZygpOworICAgIFN0cmluZyBpZGVudGlmaWVyQmFzZSA9IHByaXZhdGVC
cm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKS5pc051bGwoKSA/IFN0cmluZyhb
W05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKSA6IHByaXZhdGVCcm93c2lu
Z1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKTsKIAotICAgIHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uID0gV0tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVy
LmdldCgpKTsKKyAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpID0gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKGlkZW50aWZpZXJCYXNl
KTsKIH0KIAogdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbigpCkBAIC05NCwzOSArODcsMjggQEAgdm9pZCBXZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0OjpkZXN0cm95UAogICAgIGlmICghcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b24pCiAgICAgICAgIHJldHVybjsKIAotICAgIENGUmVsZWFzZShwcml2YXRlQnJvd3NpbmdTdG9y
YWdlU2Vzc2lvbik7Ci0gICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24gPSAwOwotfQot
Ci1DRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRlZmF1
bHRTdG9yYWdlU2Vzc2lvbigpCi17Ci0gICAgcmV0dXJuIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9u
OwotfQotCi1ib29sIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmluUHJpdmF0ZUJyb3dzaW5n
TW9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3Mo
KSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAg
cHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSA9IG51bGxwdHI7CiB9CiAKLUNGVVJMU3Rv
cmFnZVNlc3Npb25SZWYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24o
KSBjb25zdAorTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7Ci0gICAgaWYgKGluUHJpdmF0ZUJyb3dzaW5nTW9k
ZSgpKSB7Ci0gICAgICAgIEFTU0VSVChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbik7Ci0g
ICAgICAgIHJldHVybiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbjsKKyAgICBib29sIGlu
UHJpdmF0ZUJyb3dzaW5nTW9kZSA9IGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKSAmJiBm
cmFtZSgpLT5zZXR0aW5ncygpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgaWYgKGlu
UHJpdmF0ZUJyb3dzaW5nTW9kZSkgeworICAgICAgICBBU1NFUlQocHJpdmF0ZUJyb3dzaW5nU3Rv
cmFnZVNlc3Npb24oKSk7CisgICAgICAgIHJldHVybiAqcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNl
c3Npb24oKTsKICAgICB9Ci0gICAgcmV0dXJuIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uOworICAg
IHJldHVybiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwog
fQogCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGlj
eUZvckFsbENvbnRleHRzKEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KQogewogICAgIFtb
TlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV0gc2V0Q29va2llQWNj
ZXB0UG9saWN5OnN0YXRpY19jYXN0PE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeT4ocG9saWN5KV07
CiAKLSAgICBpZiAoUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3Jh
Z2UgPSBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpKQorICAgIGlmIChSZXRhaW5QdHI8Q0ZI
VFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpKQogICAgICAgICBXS1Nl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKIAot
ICAgIGlmIChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbikgewotICAgICAgICBSZXRhaW5Q
dHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gcHJpdmF0ZUJyb3dzaW5nQ29va2llU3RvcmFnZSA9
IGFkb3B0Q0YoV0tDb3B5SFRUUENvb2tpZVN0b3JhZ2UocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNl
c3Npb24pKTsKLSAgICAgICAgV0tTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHByaXZhdGVCcm93
c2luZ0Nvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7CisgICAgaWYgKHByaXZhdGVCcm93c2lu
Z1N0b3JhZ2VTZXNzaW9uKCkpIHsKKyAgICAgICAgV0tTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCktPmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwg
cG9saWN5KTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYlBsYXRmb3JtU3RyYXRlZ2llc01hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXNNYWMubW0JKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlBsYXRmb3JtU3RyYXRlZ2llc01hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIldlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIgotCi0jaW5jbHVkZSAi
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgotI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVy
ZmFjZS5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci0KLVJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmRlZmF1bHRDb29raWVTdG9yYWdlKCkKLXsKLSAgICBpZiAoQ0ZVUkxTdG9yYWdlU2Vzc2lv
blJlZiBzZXNzaW9uID0gV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVmYXVsdFN0b3JhZ2VT
ZXNzaW9uKCkpCi0gICAgICAgIHJldHVybiBhZG9wdENGKFdLQ29weUhUVFBDb29raWVTdG9yYWdl
KHNlc3Npb24pKTsKLQotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgcmV0dXJuIFdLR2V0RGVmYXVs
dEhUVFBDb29raWVTdG9yYWdlKCk7Ci0jZWxzZQotICAgIC8vIFdoZW4gdXNpbmcgTlNVUkxDb25u
ZWN0aW9uLCB3ZSBhbHNvIHVzZSBpdHMgc2hhcmVkIGNvb2tpZSBzdG9yYWdlLgotICAgIHJldHVy
biAwOwotI2VuZGlmCi19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCShyZXZpc2lvbiAxMzg0
MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9KU0VsZW1l
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTUmFuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01h
aW5SZXNvdXJjZUxvYWRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya2luZ0NvbnRleHQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL05vZGVUcmF2ZXJzYWwuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRvY3VtZW50Lmg+CkBAIC0yNDgsNyAr
MjQ5LDcgQEAgdm9pZCBXZWJGcmFtZTo6c3RhcnREb3dubG9hZChjb25zdCBXZWJDbwogCiAjaWYg
RU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNl
c05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVk
ID0gbV9jb3JlRnJhbWUtPmxvYWRlcigpLT5uZXR3b3JraW5nQ29udGV4dCgpLT5pblByaXZhdGVC
cm93c2luZ01vZGUoKTsKKyAgICAgICAgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkID0gbV9j
b3JlRnJhbWUtPmxvYWRlcigpLT5uZXR3b3JraW5nQ29udGV4dCgpLT5zdG9yYWdlU2Vzc2lvbigp
LmlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwogICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTdGFydERvd25sb2FkKHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQsIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QpLCAwKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFn
ZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1dlYlBhZ2VNYWMubW0JKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDks
NiArNDksNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0hUTUxDb252ZXJ0ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvS2V5Ym9hcmRFdmVudC5o
PgorI2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JraW5nQ29udGV4dC5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgpAQCAtNjc4LDcgKzY3OSw3IEBAIGJvb2wg
V2ViUGFnZTo6cGxhdGZvcm1IYXNMb2NhbERhdGFGb3JVUkwKICAgICBOU011dGFibGVVUkxSZXF1
ZXN0KiByZXF1ZXN0ID0gW1tOU011dGFibGVVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDp1
cmxdOwogICAgIFtyZXF1ZXN0IHNldFZhbHVlOihOU1N0cmluZyopdXNlckFnZW50KCkgZm9ySFRU
UEhlYWRlckZpZWxkOkAiVXNlci1BZ2VudCJdOwogICAgIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKmNh
Y2hlZFJlc3BvbnNlOwotICAgIGlmIChDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNz
aW9uID0gY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5uZXR3b3JraW5nQ29udGV4
dCgpLT5zdG9yYWdlU2Vzc2lvbigpKQorICAgIGlmIChDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0
b3JhZ2VTZXNzaW9uID0gY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5uZXR3b3Jr
aW5nQ29udGV4dCgpLT5zdG9yYWdlU2Vzc2lvbigpLnBsYXRmb3JtU2Vzc2lvbigpKQogICAgICAg
ICBjYWNoZWRSZXNwb25zZSA9IFdLQ2FjaGVkUmVzcG9uc2VGb3JSZXF1ZXN0KHN0b3JhZ2VTZXNz
aW9uLCByZXF1ZXN0KTsKICAgICBlbHNlCiAgICAgICAgIGNhY2hlZFJlc3BvbnNlID0gW1tOU1VS
TENhY2hlIHNoYXJlZFVSTENhY2hlXSBjYWNoZWRSZXNwb25zZUZvclJlcXVlc3Q6cmVxdWVzdF07
CkBAIC02OTIsNyArNjkzLDcgQEAgc3RhdGljIE5TQ2FjaGVkVVJMUmVzcG9uc2UgKmNhY2hlZFJl
c3BvbgogICAgIFJldGFpblB0cjxOU011dGFibGVVUkxSZXF1ZXN0PiByZXF1ZXN0KEFkb3B0TlMs
IFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6dXJsXSk7CiAgICAgW3Jl
cXVlc3QuZ2V0KCkgc2V0VmFsdWU6KE5TU3RyaW5nICopd2ViUGFnZS0+dXNlckFnZW50KCkgZm9y
SFRUUEhlYWRlckZpZWxkOkAiVXNlci1BZ2VudCJdOwogCi0gICAgaWYgKENGVVJMU3RvcmFnZVNl
c3Npb25SZWYgc3RvcmFnZVNlc3Npb24gPSB3ZWJQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUo
KS0+bG9hZGVyKCktPm5ldHdvcmtpbmdDb250ZXh0KCktPnN0b3JhZ2VTZXNzaW9uKCkpCisgICAg
aWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24gPSB3ZWJQYWdlLT5jb3Jl
UGFnZSgpLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPm5ldHdvcmtpbmdDb250ZXh0KCktPnN0b3Jh
Z2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCkpCiAgICAgICAgIHJldHVybiBXS0NhY2hlZFJl
c3BvbnNlRm9yUmVxdWVzdChzdG9yYWdlU2Vzc2lvbiwgcmVxdWVzdC5nZXQoKSk7CiAKICAgICBy
ZXR1cm4gW1tOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXSBjYWNoZWRSZXNwb25zZUZvclJlcXVl
c3Q6cmVxdWVzdC5nZXQoKV07CkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHAJKHJldmlzaW9uIDEz
ODQwNykKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRl
Z2llc0VmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDM0ICs4NiwzNCBAQCB2b2lkIFBsYXRm
b3JtU3RyYXRlZ2llc0VmbDo6bm90aWZ5Q29va2llCiB7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVN0
cmF0ZWdpZXNFZmw6OmNvb2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBQbGF0Zm9ybVN0
cmF0ZWdpZXNFZmw6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAg
cmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsK
KyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1
cmwpOwogfQogCi12b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6c2V0Q29va2llc0Zyb21ET00o
TmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIFBsYXRmb3JtU3Ry
YXRlZ2llc0VmbDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgY29va2llU3RyaW5nKQogewotICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9N
KGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBXZWJDb3JlOjpz
ZXRDb29raWVzRnJvbURPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7
CiB9CiAKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjb29raWVzRW5hYmxlZChOZXR3b3Jr
aW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYg
dXJsKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYgdXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChjb250
ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxl
ZChzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVn
aWVzRWZsOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCog
Y29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5n
IFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdl
YkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZpcnN0UGFydHks
IHVybCk7CiB9CiAKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpnZXRSYXdDb29raWVzKE5l
dHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBQbGF0Zm9ybVN0cmF0
ZWdpZXNFZmw6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29r
aWU+JiByYXdDb29raWVzKQogewotICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKGNv
bnRleHQsIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7CisgICAgcmV0dXJuIFdlYkNvcmU6
OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKIH0K
IAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29u
dGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUp
Cit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNv
b2tpZU5hbWUpCiB7Ci0gICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKGNvbnRleHQsIHVybCwgY29v
a2llTmFtZSk7CisgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHNlc3Npb24sIHVybCwgY29va2ll
TmFtZSk7CiB9CiAKIHZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpyZWZyZXNoUGx1Z2lucygp
CkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdp
ZXNFZmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Q
bGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDEyICs0NywxMiBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6Q29va2ll
c1N0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkKCk7Ci0gICAg
dmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCos
IGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oV2ViQ29yZTo6TmV0d29ya2luZ0Nv
bnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpL
VVJMJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKFdl
YkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1
YWwgYm9vbCBnZXRSYXdDb29raWVzKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3Jl
OjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcm
KTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZp
cnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpL
VVJMJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgYm9vbCBn
ZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8
V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNv
bnN0IFN0cmluZyYpOwogCiAgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQogICAgIC8v
IC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmNw
cAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
UGxhdGZvcm1TdHJhdGVnaWVzR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsMzQgKzgwLDM0
IEBAIHZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpub3RpZnlDb29raWUKIHsKIH0KIAotU3Ry
aW5nIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3Ry
aW5nIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
IHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShjb250ZXh0LCBmaXJz
dFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHNlc3Npb24s
IGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpzZXRD
b29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3Zv
aWQgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7Ci0gICAgV2ViQ29yZTo6c2V0
Q29va2llc0Zyb21ET00oY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwor
ICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwg
Y29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNvb2tpZXNF
bmFibGVkKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJiB1cmwpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y29va2llc0Vu
YWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tp
ZXNFbmFibGVkKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6
OmNvb2tpZXNFbmFibGVkKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLVN0cmluZyBQ
bGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdv
cmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiB1cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsK
KyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lv
biwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6Omdl
dFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29s
IFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVy
bCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6Omdl
dFJhd0Nvb2tpZXMoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJh
d0Nvb2tpZXMpOwogfQogCi12b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6ZGVsZXRlQ29va2ll
KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgY29va2llTmFtZSkKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpkZWxldGVDb29raWUo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKLSAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoY29u
dGV4dCwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc2Vzc2lv
biwgdXJsLCBjb29raWVOYW1lKTsKIH0KIAogLy8gUGx1Z2luU3RyYXRlZ3kKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRl
Z2llc0d0ay5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTIg
KzQ2LDEyIEBAIHByaXZhdGU6CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKICAg
ICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQoKTsKLSAgICB2aXJ0dWFsIFN0cmlu
ZyBjb29raWVzRm9yRE9NKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRDb29raWVzRnJvbURPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0
IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBT
dHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoV2ViQ29yZTo6TmV0d29y
a2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBib29sIGdldFJh
d0Nvb2tpZXMoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6Ok5ldHdvcmtpbmdD
b250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1
YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VS
TCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBib29sIGNv
b2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2
aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7
CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CiAgICAgLy8gLSBVc2luZyBkZWZh
dWx0IGltcGxlbWVudGF0aW9uLgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDEzODQw
NykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDcgQEAKICNpbXBvcnQgPFdlYkNv
cmUvTW91c2VFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL1BsdWdpblZpZXdCYXNlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Byb3RlY3Rpb25TcGFjZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jl
c291cmNlSGFuZGxlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlTG9hZGVyLmg+CkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDEzICsyNyw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KGZyYW1lKSk7CiAgICAgfQogCi0gICAg
c3RhdGljIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFz
ZShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgdm9pZCBzd2l0Y2hUb05ld1Rlc3RpbmdTZXNz
aW9uKCk7CiAgICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwog
ICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7Ci0gICAgc3Rh
dGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7Ci0KLSAg
ICBzdGF0aWMgdm9pZCBzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JUZXN0aW5nQ29udGV4dChOU0hU
VFBDb29raWVBY2NlcHRQb2xpY3kpOwogCiBwcml2YXRlOgogICAgIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQoV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQpAQCAtNDMsOCArMzgsNyBAQCBwcml2YXRl
OgogCiAgICAgdmlydHVhbCBib29sIG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkgY29uc3QgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBib29sIGxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQo
KSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2Rl
KCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0
b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBXZWJDb3JlOjpTY2hlZHVsZVBhaXJIYXNoU2V0KiBzY2hlZHVsZWRSdW5Mb29wUGFp
cnMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
YmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0IE9WRVJS
SURFOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQkocmV2aXNpb24gMTM4NDA3
KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQAogI2ltcG9ydCAiV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgogCiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVy
Q2xpZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2lt
cG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvU2V0dGluZ3MuaD4KQEAgLTI4LDggKzI5LDExIEBACiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBkZWZh
dWx0Q0ZTdG9yYWdlU2Vzc2lvbjsKLXN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHByaXZh
dGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uOworc3RhdGljIE93blB0cjxOZXR3b3JrU3RvcmFnZVNl
c3Npb24+JiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpCit7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiwgc2Vzc2lvbiwgKCkpOwor
ICAgIHJldHVybiBzZXNzaW9uOworfQogCiBib29sIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6
Om5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkgY29uc3QKIHsKQEAgLTUxLDY5ICs1NSwyNyBAQCBS
ZXNvdXJjZUVycm9yIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6CiAgICAgcmV0dXJuIGZyYW1l
KCktPmxvYWRlcigpLT5jbGllbnQoKS0+YmxvY2tlZEVycm9yKHJlcXVlc3QpOwogfQogCi1zdGF0
aWMgU3RyaW5nJiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkK
LXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBiYXNlLCAoKSk7Ci0gICAgcmV0dXJuIGJhc2U7Ci19Ci0KLXZvaWQgV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dDo6c2V0UHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlm
aWVyQmFzZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCi17Ci0gICAgcHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpID0gaWRlbnRpZmllcjsKLX0KLQotdm9pZCBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkKLXsK
LSAgICAvLyBTZXQgYSBwcml2YXRlIHNlc3Npb24gZm9yIHRlc3RpbmcgdG8gYXZvaWQgaW50ZXJm
ZXJpbmcgd2l0aCBnbG9iYWwgY29va2llcy4gVGhpcyBzaG91bGQgYmUgZGlmZmVyZW50IGZyb20g
cHJpdmF0ZSBicm93c2luZyBzZXNzaW9uLgotICAgIGlmIChkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lv
bikKLSAgICAgICAgQ0ZSZWxlYXNlKGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uKTsKLSAgICBkZWZh
dWx0Q0ZTdG9yYWdlU2Vzc2lvbiA9IFdLQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU1RS
KCJQcml2YXRlIFdlYktpdCBTZXNzaW9uIikpOwotfQotCiB2b2lkIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewogICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKQor
ICAgIGlmIChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBTdHJpbmcgYmFzZSA9IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRp
ZmllckJhc2UoKS5pc051bGwoKSA/IFN0cmluZyhbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRs
ZUlkZW50aWZpZXJdKSA6IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJh
c2UoKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmSWRlbnRpZmllciA9IFN0cmluZyhi
YXNlICsgIi5Qcml2YXRlQnJvd3NpbmciKS5jcmVhdGVDRlN0cmluZygpOwotCi0gICAgcHJpdmF0
ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24gPSBXS0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihj
ZklkZW50aWZpZXIuZ2V0KCkpOworICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkg
PSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oW1tO
U0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSk7CiB9CiAKIHZvaWQgV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewot
ICAgIGlmICghcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pCi0gICAgICAgIHJldHVybjsK
LQotICAgIENGUmVsZWFzZShwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbik7Ci0gICAgcHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24gPSAwOwotfQotCi1DRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpCi17
Ci0gICAgcmV0dXJuIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uOworICAgIHByaXZhdGVCcm93c2lu
Z1N0b3JhZ2VTZXNzaW9uKCkgPSBudWxscHRyOwogfQogCi1ib29sIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpIGNvbnN0CitOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QK
IHsKLSAgICByZXR1cm4gZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpICYmIGZyYW1lKCkt
PnNldHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKLX0KLQotQ0ZVUkxTdG9yYWdl
U2Vzc2lvblJlZiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNv
bnN0Ci17Ci0gICAgaWYgKGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpKSB7Ci0gICAgICAgIEFTU0VS
VChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbik7Ci0gICAgICAgIHJldHVybiBwcml2YXRl
QnJvd3NpbmdTdG9yYWdlU2Vzc2lvbjsKKyAgICBib29sIGluUHJpdmF0ZUJyb3dzaW5nTW9kZSA9
IGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLT5w
cml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgaWYgKGluUHJpdmF0ZUJyb3dzaW5nTW9kZSkg
eworICAgICAgICBBU1NFUlQocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSk7CisgICAg
ICAgIHJldHVybiAqcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKTsKICAgICB9Ci0gICAg
cmV0dXJuIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uOworICAgIHJldHVybiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQogCi12b2lkIFdlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZvclRlc3RpbmdDb250ZXh0KE5T
SFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCi17Ci0gICAgQVNTRVJUKGRlZmF1bHRDRlN0
b3JhZ2VTZXNzaW9uKTsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gZGVm
YXVsdENvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKFdLQ29weUhUVFBDb29raWVTdG9yYWdlKGRlZmF1
bHRDRlN0b3JhZ2VTZXNzaW9uKSk7Ci0gICAgV0tTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGRl
ZmF1bHRDb29raWVTdG9yYWdlLmdldCgpLCBwb2xpY3kpOwotfQpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MywxMyArNTMsMTIg
QEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneQogICAgIHZpcnR1
YWwgdm9pZCBub3RpZnlDb29raWVzQ2hhbmdlZCgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgUmV0
YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGRlZmF1bHRDb29raWVTdG9yYWdlKCkgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShXZWJDb3JlOjpOZXR3b3Jr
aW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OktVUkwmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00o
V2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7Ci0gICAg
dmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0Kiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9W
RVJSSURFOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBn
ZXRSYXdDb29raWVzKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpD
b29raWU+JikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3Jl
OjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcm
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0
IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBT
dHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVz
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29v
a2llPiYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0
IFN0cmluZyYpIE9WRVJSSURFOwogCiAgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQog
ICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMubW0JKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQkod29ya2luZyBjb3B5KQpAQCAtODcsNDcgKzg3
LDM0IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpub3RpZnlDb29raWUKIHsKIH0KIAot
UmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
ZGVmYXVsdENvb2tpZVN0b3JhZ2UoKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29v
a2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBpZiAoQ0ZVUkxTdG9yYWdl
U2Vzc2lvblJlZiBzZXNzaW9uID0gV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVmYXVsdFN0
b3JhZ2VTZXNzaW9uKCkpCi0gICAgICAgIHJldHVybiBhZG9wdENGKFdLQ29weUhUVFBDb29raWVT
dG9yYWdlKHNlc3Npb24pKTsKLQotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgcmV0dXJuIFdLR2V0
RGVmYXVsdEhUVFBDb29raWVTdG9yYWdlKCk7Ci0jZWxzZQotICAgIC8vIFdoZW4gdXNpbmcgTlNV
UkxDb25uZWN0aW9uLCB3ZSBhbHNvIHVzZSBpdHMgc2hhcmVkIGNvb2tpZSBzdG9yYWdlLgotICAg
IHJldHVybiAwOwotI2VuZGlmCi19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNv
b2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmIHVybCkKLXsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0Zv
ckRPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29r
aWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4
dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IGNvb2tpZVN0cmluZykKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJv
bURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7
Ci0gICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJs
LCBjb29raWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24s
IGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29sIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0
dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHNlc3Npb24sIGZpcnN0UGFydHksIHVy
bCk7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAg
ICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29udGV4dCwg
Zmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4m
IHJhd0Nvb2tpZXMpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7Ci0gICAg
cmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCBy
YXdDb29raWVzKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBm
aXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6ZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKLSAgICBXZWJDb3Jl
OjpkZWxldGVDb29raWUoY29udGV4dCwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBXZWJDb3JlOjpk
ZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0KIAogdm9pZCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlZnJlc2hQbHVnaW5zKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzksOCArMzksOSBAQAogI2ltcG9ydCAiV2ViS2l0VmVyc2lvbkNoZWNrcy5oIgogI2ltcG9ydCAi
V2ViTlNEaWN0aW9uYXJ5RXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJOU1VSTEV4dHJhcy5oIgorI2lt
cG9ydCAiV2ViU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0FwcGxpY2F0aW9u
Q2FjaGVTdG9yYWdlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2VDRk5ldC5oPgor
I2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNv
cmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtMTI4
NiwxMiArMTI4NywxMyBAQCArICh2b2lkKV9zZXRJQkNyZWF0b3JJRDooTlNTdHJpbmcgKilzdHJp
CiAKICsgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uCiB7Ci0g
ICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigp
OworICAgIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKCk7CisgICAgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7CiB9CiAKICsgKHZvaWQpX3NldEN1
cnJlbnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2ll
QWNjZXB0UG9saWN5KXBvbGljeQogewotICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNl
dENvb2tpZUFjY2VwdFBvbGljeUZvclRlc3RpbmdDb250ZXh0KHBvbGljeSk7CisgICAgV0tTZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3Jh
Z2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpLmdldCgpLCBwb2xpY3kpOwogfQogCiAtIChCT09M
KWlzRE9NUGFzdGVBbGxvd2VkCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTIwMTYsNyArMjAxNiw3IEBAIC0gKE5TQ2FjaGVkVVJMUmVz
cG9uc2UgKilfY2FjaGVkUmVzcG9uc2UKICAgICBpZiAoIV9wcml2YXRlLT5wYWdlKQogICAgICAg
ICByZXR1cm4gbmlsOwogCi0gICAgaWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNl
c3Npb24gPSBfcHJpdmF0ZS0+cGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5uZXR3b3JraW5n
Q29udGV4dCgpLT5zdG9yYWdlU2Vzc2lvbigpKQorICAgIGlmIChDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmIHN0b3JhZ2VTZXNzaW9uID0gX3ByaXZhdGUtPnBhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIo
KS0+bmV0d29ya2luZ0NvbnRleHQoKS0+c3RvcmFnZVNlc3Npb24oKS5wbGF0Zm9ybVNlc3Npb24o
KSkKICAgICAgICAgY2FjaGVkUmVzcG9uc2UgPSBXS0NhY2hlZFJlc3BvbnNlRm9yUmVxdWVzdChz
dG9yYWdlU2Vzc2lvbiwgcmVxdWVzdC5nZXQoKSk7CiAgICAgZWxzZQogICAgICAgICBjYWNoZWRS
ZXNwb25zZSA9IFtbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNoZV0gY2FjaGVkUmVzcG9uc2VGb3JS
ZXF1ZXN0OnJlcXVlc3QuZ2V0KCldOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5jcHAJKHJldmlzaW9uIDEz
ODQwNykKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVn
aWVzUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSwzNCArOTksMzQgQEAgdm9pZCBQbGF0Zm9y
bVN0cmF0ZWdpZXNRdDo6bm90aWZ5Q29va2llcwogewogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJh
dGVnaWVzUXQ6OmNvb2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBQbGF0Zm9ybVN0cmF0
ZWdpZXNRdDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1
cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAg
IHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7
CiB9CiAKLXZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OnNldENvb2tpZXNGcm9tRE9NKE5ldHdv
cmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdp
ZXNRdDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgY29va2llU3RyaW5nKQogewotICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKGNvbnRl
eHQsIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBXZWJDb3JlOjpzZXRDb29r
aWVzRnJvbURPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CiB9CiAK
LWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiti
b29sIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
IHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoY29udGV4dCwgZmly
c3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lv
biwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3Jt
U3RyYXRlZ2llc1F0Ojpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtV
UkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0K
IAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Z2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29u
dGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBW
ZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6Omdl
dFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29r
aWVzKQogewotICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKGNvbnRleHQsIGZpcnN0
UGFydHksIHVybCwgcmF3Q29va2llcyk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tp
ZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKIH0KIAotdm9pZCBQbGF0
Zm9ybVN0cmF0ZWdpZXNRdDo6ZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgUGxhdGZv
cm1TdHJhdGVnaWVzUXQ6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewot
ICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShjb250ZXh0LCB1cmwsIGNvb2tpZU5hbWUpOworICAg
IFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCiB2
b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpyZWZyZXNoUGx1Z2lucygpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNR
dC5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDEyICs1OCwxMiBA
QCBwcml2YXRlOgogICAgIAogICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneQogICAgIHZp
cnR1YWwgdm9pZCBub3RpZnlDb29raWVzQ2hhbmdlZCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNv
b2tpZXNGb3JET00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCB2b2lk
IHNldENvb2tpZXNGcm9tRE9NKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmlu
ZyYpOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChXZWJDb3JlOjpOZXR3b3JraW5n
Q29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OktVUkwmKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29v
a2llcyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYp
OwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRl
eHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBT
dHJpbmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7
CisgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29va2ll
c0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1
YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKIAog
ICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kKICAgICAvLyAtIFVzaW5nIGRlZmF1bHQg
aW1wbGVtZW50YXRpb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb29raWVNYW5hZ2Vy
Q0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvb2tpZU1hbmFn
ZXJDRk5ldC5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNv
b2tpZU1hbmFnZXJDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDcgQEAKICNp
bmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIVFRQ
Q29va2llc1ByaXYuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2VDRk5ldC5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gMTM4NDA3
KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
NCw3ICsxNTQsNiBAQAogI2lmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NG
VVJMQ2FjaGVQcml2Lmg+CiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUHJvdG9jb2xQcml2Lmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9Db29raWVTdG9yYWdlQ0ZOZXQuaD4KICNpbmNsdWRlIDxXZWJL
aXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+IAogI2VuZGlmCiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNiBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVy
Q2xpZW50LmgiCiAjaWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIVFRQ
Q29va2llc1ByaXYuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2VDRk5ldC5oPgog
I2VuZGlmCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2lmIFVTRShDRk5FVFdPUksp
CkBAIC0zMyw4ICszMiwxMSBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKICNpZiBVU0Uo
Q0ZORVRXT1JLKQotc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgZGVmYXVsdENGU3RvcmFn
ZVNlc3Npb247Ci1zdGF0aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBwcml2YXRlQnJvd3NpbmdT
dG9yYWdlU2Vzc2lvbjsKK3N0YXRpYyBPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiYgcHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
T3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4sIHNlc3Npb24sICgpKTsKKyAgICByZXR1cm4g
c2Vzc2lvbjsKK30KICNlbmRpZgogCiBQYXNzUmVmUHRyPFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ+IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50KQpAQCAtNjksNzUgKzcxLDQzIEBAIHZvaWQgV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dDo6c2V0UHJpdmEKICAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lv
bklkZW50aWZpZXJCYXNlKCkgPSBpZGVudGlmaWVyOwogfQogCi12b2lkIFdlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQ6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKQotewotI2lmIFVTRShDRk5F
VFdPUkspCi0gICAgLy8gU2V0IGEgcHJpdmF0ZSBzZXNzaW9uIGZvciB0ZXN0aW5nIHRvIGF2b2lk
IGludGVyZmVyaW5nIHdpdGggZ2xvYmFsIGNvb2tpZXMuIFRoaXMgc2hvdWxkIGJlIGRpZmZlcmVu
dCBmcm9tIHByaXZhdGUgYnJvd3Npbmcgc2Vzc2lvbi4KLSAgICBkZWZhdWx0Q0ZTdG9yYWdlU2Vz
c2lvbiA9IHdrQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU1RSKCJQcml2YXRlIFdlYktp
dCBTZXNzaW9uIiksIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uKTsKLSNlbmRpZgotfQotCiB2b2lk
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24o
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAjaWYgVVNFKENGTkVUV09SSykKLSAg
ICBpZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pCisgICAgaWYgKHByaXZhdGVCcm93
c2luZ1N0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBiYXNl
ID0gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgp
ID8gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQnVuZGxlR2V0VmFsdWVG
b3JJbmZvRGljdGlvbmFyeUtleShDRkJ1bmRsZUdldE1haW5CdW5kbGUoKSwga0NGQnVuZGxlSWRl
bnRpZmllcktleSkpKSA6IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJh
c2UoKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmSWRlbnRpZmllciA9IFN0cmluZyhi
YXNlICsgIi5Qcml2YXRlQnJvd3NpbmciKS5jcmVhdGVDRlN0cmluZygpOworICAgIFN0cmluZyBp
ZGVudGlmaWVyQmFzZSA9IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJh
c2UoKS5pc051bGwoKSA/IFN0cmluZyhyZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihDRkJ1
bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rpb25hcnlLZXkoQ0ZCdW5kbGVHZXRNYWluQnVuZGxlKCks
IGtDRkJ1bmRsZUlkZW50aWZpZXJLZXkpKSkgOiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lv
bklkZW50aWZpZXJCYXNlKCk7CiAKLSAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbiA9
IHdrQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKGNmSWRlbnRpZmllci5nZXQoKSwgZGVmYXVs
dENGU3RvcmFnZVNlc3Npb24pOworICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkg
PSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oaWRl
bnRpZmllckJhc2UpOwogI2VuZGlmCiB9CiAKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewogI2lmIFVTRShDRk5FVFdPUksp
Ci0gICAgaWYgKCFwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbikKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgQ0ZSZWxlYXNlKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKTsKLSAgICBw
cml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbiA9IDA7CisgICAgcHJpdmF0ZUJyb3dzaW5nU3Rv
cmFnZVNlc3Npb24oKSA9IG51bGxwdHI7CiAjZW5kaWYKIH0KIAogI2lmIFVTRShDRk5FVFdPUksp
Ci1DRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRlZmF1
bHRTdG9yYWdlU2Vzc2lvbigpCitOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gZGVmYXVs
dENGU3RvcmFnZVNlc3Npb247Ci19Ci0KLWJvb2wgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6
aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZnJhbWUoKSAmJiBm
cmFtZSgpLT5zZXR0aW5ncygpICYmIGZyYW1lKCktPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2lu
Z0VuYWJsZWQoKTsKLX0KLQotQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBXZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0Ci17Ci0gICAgYm9vbCBwcml2YXRlQnJv
d3NpbmdFbmFibGVkID0gaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCk7Ci0gICAgaWYgKHByaXZhdGVC
cm93c2luZ0VuYWJsZWQpIHsKLSAgICAgICAgQVNTRVJUKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VT
ZXNzaW9uKTsKLSAgICAgICAgcmV0dXJuIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uOwor
ICAgIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlID0gZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0
aW5ncygpICYmIGZyYW1lKCktPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsK
KyAgICBpZiAoaW5Qcml2YXRlQnJvd3NpbmdNb2RlKSB7CisgICAgICAgIEFTU0VSVChwcml2YXRl
QnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpKTsKKyAgICAgICAgcmV0dXJuICpwcml2YXRlQnJvd3Np
bmdTdG9yYWdlU2Vzc2lvbigpOwogICAgIH0KLSAgICByZXR1cm4gZGVmYXVsdENGU3RvcmFnZVNl
c3Npb247Ci19Ci0KLXZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNj
ZXB0UG9saWN5Rm9yVGVzdGluZ0NvbnRleHQoQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGlj
eSBwb2xpY3kpCi17Ci0gICAgQVNTRVJUKGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uKTsKLSAgICBS
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gZGVmYXVsdENvb2tpZVN0b3JhZ2UgPSBh
ZG9wdENGKHdrQ29weUhUVFBDb29raWVTdG9yYWdlKGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uKSk7
Ci0gICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShkZWZhdWx0Q29v
a2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKKyAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0KIAogdm9pZCBXZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0OjpzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhDRkhUVFBDb29r
aWVTdG9yYWdlQWNjZXB0UG9saWN5IHBvbGljeSkKIHsKLSAgICBpZiAoUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBkZWZhdWx0Q0ZIVFRQQ29va2llU3Rv
cmFnZSgpKQorICAgIGlmIChSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2ll
U3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCku
Y29va2llU3RvcmFnZSgpKQogICAgICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNj
ZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7CiAKLSAgICBpZiAocHJpdmF0
ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pIHsKLSAgICAgICAgUmV0YWluUHRyPENGSFRUUENvb2tp
ZVN0b3JhZ2VSZWY+IHByaXZhdGVCcm93c2luZ0Nvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKHdrQ29w
eUhUVFBDb29raWVTdG9yYWdlKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKSk7Ci0gICAg
ICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3kocHJpdmF0ZUJyb3dz
aW5nQ29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKLSAgICB9CisgICAgaWYgKHByaXZhdGVC
cm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpCisgICAgICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRD
b29raWVBY2NlcHRQb2xpY3kocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKS0+Y29va2ll
U3RvcmFnZSgpLmdldCgpLCBwb2xpY3kpOwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDE0ICsyOSwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dD4gY3JlYXRlKFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV1RGOjpTdHJpbmcm
IHVzZXJBZ2VudCk7CiAKICAgICBzdGF0aWMgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdl
U2Vzc2lvbklkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyB2b2lkIHN3
aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKICAgICBzdGF0aWMgdm9pZCBlbnN1cmVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKCk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oKTsKIAogI2lmIFVTRShDRk5FVFdPUkspCi0gICAgc3RhdGljIENGVVJMU3RvcmFn
ZVNlc3Npb25SZWYgZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7Ci0KLSAgICBzdGF0aWMgdm9pZCBz
ZXRDb29raWVBY2NlcHRQb2xpY3lGb3JUZXN0aW5nQ29udGV4dChDRkhUVFBDb29raWVTdG9yYWdl
QWNjZXB0UG9saWN5KTsKICAgICBzdGF0aWMgdm9pZCBzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JB
bGxDb250ZXh0cyhDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5KTsKICNlbmRpZgogCkBA
IC01MCw4ICs0Niw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXVEY6OlN0cmluZyB1c2VyQWdl
bnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHJlZmVycmVyKCkgY29uc3Q7CiAj
aWYgVVNFKENGTkVUV09SSykKLSAgICB2aXJ0dWFsIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2Rl
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNz
aW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHN0b3JhZ2VTZXNzaW9uKCkgY29uc3Q7CiAjZW5kaWYKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYp
IGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0
Zm9ybVN0cmF0ZWdpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJldmlzaW9uIDEzODQwNykKKysr
IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDQ0ICs4NiwzNCBAQCB2b2lkIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6bm90aWZ5Q29va2llCiB7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JLKQotUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVmYXVs
dENvb2tpZVN0b3JhZ2UoKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0Zv
ckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBpZiAoQ0ZVUkxTdG9yYWdlU2Vzc2lv
blJlZiBzZXNzaW9uID0gV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVmYXVsdFN0b3JhZ2VT
ZXNzaW9uKCkpCi0gICAgICAgIHJldHVybiBhZG9wdENGKHdrQ29weUhUVFBDb29raWVTdG9yYWdl
KHNlc3Npb24pKTsKLQotICAgIHJldHVybiB3a0dldERlZmF1bHRIVFRQQ29va2llU3RvcmFnZSgp
OwotfQotI2VuZGlmCi0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3JE
T00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNv
bnN0IEtVUkwmIHVybCkKLXsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShjb250
ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9N
KHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3Qg
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0
cmluZykKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHks
IGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7Ci0gICAgV2Vi
Q29yZTo6c2V0Q29va2llc0Zyb21ET00oY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVT
dHJpbmcpOworICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFy
dHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNv
cmU6OmNvb2tpZXNFbmFibGVkKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJu
IFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAK
LVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJiB1cmwpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4g
V2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29udGV4dCwgZmlyc3RQYXJ0
eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tp
ZXMpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7Ci0gICAgcmV0dXJuIFdl
YkNvcmU6OmdldFJhd0Nvb2tpZXMoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVz
KTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBmaXJzdFBhcnR5
LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVs
ZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWxl
dGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKLSAgICBXZWJDb3JlOjpkZWxldGVD
b29raWUoY29udGV4dCwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxldGVDb29r
aWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0KIAogdm9pZCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OnJlZnJlc2hQbHVnaW5zKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCShyZXZpc2lvbiAx
Mzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsMTUgKzUyLDEyIEBAIHByaXZhdGU6CiAK
ICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5
Q29va2llc0NoYW5nZWQoKTsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIHZpcnR1YWwgUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGRlZmF1bHRDb29raWVTdG9yYWdlKCk7Ci0jZW5k
aWYKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKFdlYkNvcmU6Ok5ldHdvcmtpbmdD
b250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
S1VSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShXZWJDb3JlOjpOZXR3
b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wgY29va2llc0Vu
YWJsZWQoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0g
ICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2ll
KFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0
IFN0cmluZyYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJv
bURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7
CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVh
bCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYs
IFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tp
ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5
CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgpJbmRleDogU291cmNlL1dl
YktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0
cmF0ZWdpZXNXaW5DRS5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvd2lu
Y2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MywzNCArODMsMzQgQEAgdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6bm90
aWZ5Q29vawogewogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmNvb2tpZXNG
b3JET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHks
IGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y29va2ll
c0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwm
IGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29v
a2llc0ZvckRPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3Jl
Ojpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgUGxh
dGZvcm1TdHJhdGVnaWVzV2luQ0U6OnNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6c2V0
Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2ll
U3RyaW5nKQogewotICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKGNvbnRleHQsIGZpcnN0
UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURP
TShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CiB9CiAKLWJvb2wgUGxh
dGZvcm1TdHJhdGVnaWVzV2luQ0U6OmNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29sIFBs
YXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVy
bCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoY29udGV4dCwgZmlyc3RQ
YXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwg
Zmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3Jt
U3RyYXRlZ2llc1dpbkNFOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsK
IH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Z2V0UmF3Q29va2llcyhOZXR3b3Jr
aW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYg
dXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgUGxhdGZvcm1TdHJhdGVnaWVz
V2luQ0U6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+
JiByYXdDb29raWVzKQogewotICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKGNvbnRl
eHQsIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7CisgICAgcmV0dXJuIFdlYkNvcmU6Omdl
dFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKIH0KIAot
dm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6ZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkK
K3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBj
b29raWVOYW1lKQogewotICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShjb250ZXh0LCB1cmwsIGNv
b2tpZU5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1cmwsIGNvb2tp
ZU5hbWUpOwogfQogCiB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpyZWZyZXNoUGx1Z2lu
cygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3Ry
YXRlZ2llc1dpbkNFLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3Jl
U3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBT
b3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNF
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEyICs1MSwxMiBAQCBwcml2YXRlOgogCiAgICAgLy8g
V2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUNvb2tpZXND
aGFuZ2VkKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShXZWJDb3JlOjpOZXR3
b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oV2ViQ29y
ZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBib29sIGNv
b2tpZXNFbmFibGVkKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgU3Ry
aW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250
ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VS
TCYpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKFdlYkNvcmU6Ok5ldHdvcmtpbmdD
b250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0
ZUNvb2tpZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwm
LCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29v
a2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0
cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAg
IHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxl
dGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VT
dHJhdGVneQogICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4K
</data>
<flag name="commit-queue"
          id="197910"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180599</attachid>
            <date>2012-12-22 01:03:22 -0800</date>
            <delta_ts>2012-12-22 01:33:03 -0800</delta_ts>
            <desc>patch for EWS</desc>
            <filename>StorageSession.txt</filename>
            <type>text/plain</type>
            <size>177724</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjAyOCw2ICsyMDI4LDcgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRUUFZhbGlkYXRpb24u
Y3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcAogICAgIHBsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCisgICAgcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29u
dGVudFR5cGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuY3BwCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNTc2MCw2ICs1NzYwLDcgQEAgd2ViY29y
ZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Byb3h5U2VydmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0YXRlTm90aWZpZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdGF0ZU5vdGlmaWVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9u
IDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAg
LTEwNjEsNiArMTA2MSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRU
UFZhbGlkYXRpb24uY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwIFwK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCBcCisgICAgcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcCBcCiAgICAgcGxhdGZv
cm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsv
UHJvdGVjdGlvblNwYWNlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5j
cHAgXApAQCAtMjI3Myw2ICsyMjc0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0
d29yay9IVFRQVmFsaWRhdGlvbi5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBTdGF0dXND
b2Rlcy5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmluZy5oIFwKKyAgICBwbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIFwKICAgICBwbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtpbmdDb250ZXh0LmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
YXRlTm90aWZpZXIuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5o
IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjA3LDcgKzIwNyw3IEBA
IF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yRDFFdgogX19aTjdXZWJDb3JlMTJjYWNoZVN0b3Jh
Z2VFdgogX19aTjdXZWJDb3JlMTJjcmVhdGVNYXJrdXBFUEtOU180Tm9kZUVOU18xM0VDaGlsZHJl
bk9ubHlFUE4zV1RGNlZlY3RvcklQUzBfTG0wRUVFTlNfMTNFQWJzb2x1dGVVUkxzRVBOUzVfSU5T
XzEzUXVhbGlmaWVkTmFtZUVMbTBFRUUKIF9fWk43V2ViQ29yZTEyY3JlYXRlTWFya3VwRVBLTlNf
NVJhbmdlRVBOM1dURjZWZWN0b3JJUE5TXzROb2RlRUxtMEVFRU5TXzIzRUFubm90YXRlRm9ySW50
ZXJjaGFuZ2VFYk5TXzEzRUFic29sdXRlVVJMc0UKLV9fWk43V2ViQ29yZTEyZGVsZXRlQ29va2ll
RVBOU18xN05ldHdvcmtpbmdDb250ZXh0RVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdFCitfX1pO
N1dlYkNvcmUxMmRlbGV0ZUNvb2tpZUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNf
NEtVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMmdjQ29udHJvbGxlckV2CiBfX1pO
N1dlYkNvcmUxMmljb25EYXRhYmFzZUV2CiBfX1pON1dlYkNvcmUxMnRvVWludDhBcnJheUVOM0pT
QzdKU1ZhbHVlRQpAQCAtMjM2LDEwICsyMzYsMTAgQEAgX19aTjdXZWJDb3JlMTNSZXNvdXJjZUVy
cm9yQzFFUDdOU0Vycm9yCiBfX1pON1dlYkNvcmUxM1Jlc291cmNlRXJyb3JDMUVQOV9fQ0ZFcnJv
cgogX19aTjdXZWJDb3JlMTNTdHlsZWRFbGVtZW50MjJzZXRJbmxpbmVTdHlsZVByb3BlcnR5RU5T
XzEzQ1NTUHJvcGVydHlJREVSS04zV1RGNlN0cmluZ0ViCiBfX1pON1dlYkNvcmUxM1N0eWxlZEVs
ZW1lbnQyMnNldElubGluZVN0eWxlUHJvcGVydHlFTlNfMTNDU1NQcm9wZXJ0eUlERWROU18xN0NT
U1ByaW1pdGl2ZVZhbHVlOVVuaXRUeXBlc0ViCi1fX1pON1dlYkNvcmUxM2Nvb2tpZXNGb3JET01F
UE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VSTEVTNF8KK19fWk43V2ViQ29yZTEzY29v
a2llc0ZvckRPTUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfNEtVUkxFUzVfCiBf
X1pON1dlYkNvcmUxM2NyZWF0ZVdyYXBwZXJFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUds
b2JhbE9iamVjdEVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUxM2RpcmVjdG9yeU5hbWVFUktOM1dU
RjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxM2dldFJhd0Nvb2tpZXNFUE5TXzE3TmV0d29ya2luZ0Nv
bnRleHRFUktOU180S1VSTEVTNF9STjNXVEY2VmVjdG9ySU5TXzZDb29raWVFTG0wRUVFCitfX1pO
N1dlYkNvcmUxM2dldFJhd0Nvb2tpZXNFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05T
XzRLVVJMRVM1X1JOM1dURjZWZWN0b3JJTlNfNkNvb2tpZUVMbTBFRUUKIF9fWk43V2ViQ29yZTEz
dG9BcnJheUJ1ZmZlckVOM0pTQzdKU1ZhbHVlRQogX19aTjdXZWJDb3JlMTN0b0hUTUxFbGVtZW50
RVBOU18yMUZvcm1Bc3NvY2lhdGVkRWxlbWVudEUKIF9fWk43V2ViQ29yZTEzdG9KU0RPTVdpbmRv
d0VOM0pTQzdKU1ZhbHVlRQpAQCAtMjU0LDYgKzI1NCwxMCBAQCBfX1pON1dlYkNvcmUxNERvY3Vt
ZW50TG9hZGVyMTNhdHRhY2hUb0ZyCiBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTVkZXRh
Y2hGcm9tRnJhbWVFdgogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjE4YWRkQXJjaGl2ZVJl
c291cmNlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzE1QXJjaGl2ZVJlc291cmNlRUVFCiBfX1pON1dl
YkNvcmUxNFJlc291cmNlTG9hZGVyMzJkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUVS
S05TXzIzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VFCitfX1pON1dlYkNvcmUxNGNvb2tpZXNFbmFi
bGVkRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU180S1VSTEVTNV8KK19fWk43V2Vi
Q29yZTE3c2V0Q29va2llc0Zyb21ET01FUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05T
XzRLVVJMRVM1X1JLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMjFOZXR3b3JrU3RvcmFnZVNl
c3Npb24yMWRlZmF1bHRTdG9yYWdlU2Vzc2lvbkV2CitfX1pON1dlYkNvcmUyMU5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjI1c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbkV2CiBfX1pON1dlYkNvcmUyMVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTExZGVzZXJpYWxpemVFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMxXzE0
SlNHbG9iYWxPYmplY3RFUE4zV1RGNlZlY3RvcklOUzZfNlJlZlB0cklOU18xMU1lc3NhZ2VQb3J0
RUVFTG0xRUVFTlNfMjJTZXJpYWxpemF0aW9uRXJyb3JNb2RlRQogX19aTjdXZWJDb3JlMjFTZXJp
YWxpemVkU2NyaXB0VmFsdWU2Y3JlYXRlRVBOM0pTQzlFeGVjU3RhdGVFTlMxXzdKU1ZhbHVlRVBO
M1dURjZWZWN0b3JJTlM1XzZSZWZQdHJJTlNfMTFNZXNzYWdlUG9ydEVFRUxtMUVFRVBOUzZfSU5T
N19JTlM1XzExQXJyYXlCdWZmZXJFRUVMbTFFRUVOU18yMlNlcmlhbGl6YXRpb25FcnJvck1vZGVF
CiBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTZjcmVhdGVFUktOM1dURjZTdHJp
bmdFCkBAIC0yODQsNyArMjg4LDYgQEAgX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjlzZWxl
Y3RBbGxFdgogX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbkMxRVBOU181RnJhbWVFCiBfX1pO
N1dlYkNvcmUxNExvYWRlclN0cmF0ZWd5MjFyZXNvdXJjZUxvYWRTY2hlZHVsZXJFdgogX19aTjdX
ZWJDb3JlMTRQbHVnaW5Eb2N1bWVudDEwcGx1Z2luTm9kZUV2Ci1fX1pON1dlYkNvcmUxNGNvb2tp
ZXNFbmFibGVkRVBOU18xN05ldHdvcmtpbmdDb250ZXh0RVJLTlNfNEtVUkxFUzRfCiBfX1pOSzdX
ZWJDb3JlNUZyYW1lMjV0cmFja2VkUmVwYWludFJlY3RzQXNUZXh0RXYKIF9fWk43V2ViQ29yZTlG
cmFtZVZpZXcxN3NldFRyYWNrc1JlcGFpbnRzRWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMHJl
c2V0VHJhY2tlZFJlcGFpbnRzRXYKQEAgLTQ4OCw3ICs0OTEsNyBAQCBfX1pON1dlYkNvcmUxNlZp
c2libGVTZWxlY3Rpb25DMUVSS05TXzE1CiBfX1pON1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb25D
MUVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRWIKIF9fWk43V2ViQ29yZTE2Y3JlYXRlRnVsbE1hcmt1
cEVQS05TXzROb2RlRQogX19aTjdXZWJDb3JlMTZjcmVhdGVGdWxsTWFya3VwRVBLTlNfNVJhbmdl
RQotX19aTjdXZWJDb3JlMTZkZWxldGVBbGxDb29raWVzRVBOU18xN05ldHdvcmtpbmdDb250ZXh0
RQorX19aTjdXZWJDb3JlMTZkZWxldGVBbGxDb29raWVzRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNl
c3Npb25FCiBfX1pON1dlYkNvcmUxNmVuY2xvc2luZ0ludFJlY3RFUktOU185RmxvYXRSZWN0RQog
X19aTjdXZWJDb3JlMTZpc0VuZE9mUGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNf
MjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCiBfX1pON1dlYkNvcmUxNmlzVXNlclZpc2li
bGVVUkxFUDhOU1N0cmluZwpAQCAtNTExLDcgKzUxNCw2IEBAIF9fWk43V2ViQ29yZTE3U3VicmVz
b3VyY2VMb2FkZXI2Y3JlYXRlRVAKIF9fWk43V2ViQ29yZTE3Vmlld3BvcnRBcmd1bWVudHMxOWRl
cHJlY2F0ZWRUYXJnZXREUElFCiBfX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0dXJlRVBOU18x
N0pTRE9NR2xvYmFsT2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNsYXNzSW5mb0UKIF9f
Wk43V2ViQ29yZTE3b3BlblRlbXBvcmFyeUZpbGVFUktOM1dURjZTdHJpbmdFUmkKLV9fWk43V2Vi
Q29yZTE3c2V0Q29va2llc0Zyb21ET01FUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VS
TEVTNF9SS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE3dXNlclZpc2libGVTdHJpbmdFUDVO
U1VSTAogX19aTjdXZWJDb3JlMThET01XaW5kb3dFeHRlbnNpb25DMUVQTlNfNUZyYW1lRVBOU18x
NURPTVdyYXBwZXJXb3JsZEUKIF9fWk43V2ViQ29yZTE4SFRNTENvbnRlbnRFbGVtZW50NmNyZWF0
ZUVQTlNfOERvY3VtZW50RQpAQCAtNTk1LDYgKzU5Nyw3IEBAIF9fWk43V2ViQ29yZTIwcHJvdG9j
b2xJc0phdmFTY3JpcHRFUktOM1cKIF9fWk43V2ViQ29yZTIwU3BhY2VTcGxpdFN0cmluZ0RhdGFE
MUV2CiBfX1pON1dlYkNvcmUyMUJhY2tGb3J3YXJkQ29udHJvbGxlcjExaXRlbUF0SW5kZXhFaQog
X19aTjdXZWJDb3JlMjFNZW1vcnlQcmVzc3VyZUhhbmRsZXI3aW5zdGFsbEV2CitfX1pON1dlYkNv
cmUyMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjI4Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkVS
S04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIxUGxhdGZvcm1LZXlib2FyZEV2ZW50MjRkaXNh
bWJpZ3VhdGVLZXlEb3duRXZlbnRFTlNfMTNQbGF0Zm9ybUV2ZW50NFR5cGVFYgogX19aTjdXZWJD
b3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIxOXN0YXJ0UmVzb3VyY2VMb2FkZXJFUE5TXzE0UmVz
b3VyY2VMb2FkZXJFCiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjIwc2VydmVQ
ZW5kaW5nUmVxdWVzdHNFTlNfMjBSZXNvdXJjZUxvYWRQcmlvcml0eUUKQEAgLTY1MCw3ICs2NTMs
NyBAQCBfX1pON1dlYkNvcmUyM2NyZWF0ZUZyYWdtZW50RnJvbU5vZGVzRVBOCiBfX1pON1dlYkNv
cmUyM2RhdGFGb3JVUkxDb21wb25lbnRUeXBlRVA1TlNVUkxsCiBfX1pON1dlYkNvcmUyM2RlY29k
ZUhvc3ROYW1lV2l0aFJhbmdlRVA4TlNTdHJpbmc4X05TUmFuZ2UKIF9fWk43V2ViQ29yZTIzZW5j
b2RlSG9zdE5hbWVXaXRoUmFuZ2VFUDhOU1N0cmluZzhfTlNSYW5nZQotX19aTjdXZWJDb3JlMjNn
ZXRIb3N0bmFtZXNXaXRoQ29va2llc0VQTlNfMTdOZXR3b3JraW5nQ29udGV4dEVSTjNXVEY3SGFz
aFNldElOUzJfNlN0cmluZ0VOUzJfMTBTdHJpbmdIYXNoRU5TMl8xMEhhc2hUcmFpdHNJUzRfRUVF
RQorX19aTjdXZWJDb3JlMjNnZXRIb3N0bmFtZXNXaXRoQ29va2llc0VSS05TXzIxTmV0d29ya1N0
b3JhZ2VTZXNzaW9uRVJOM1dURjdIYXNoU2V0SU5TM182U3RyaW5nRU5TM18xMFN0cmluZ0hhc2hF
TlMzXzEwSGFzaFRyYWl0c0lTNV9FRUVFCiBfX1pON1dlYkNvcmUyNEJpbmFyeVByb3BlcnR5TGlz
dFdyaXRlcjE3d3JpdGVQcm9wZXJ0eUxpc3RFdgogX19aTjdXZWJDb3JlMjRDYWNoZWRSZXNvdXJj
ZUhhbmRsZUJhc2UxMXNldFJlc291cmNlRVBOU18xNENhY2hlZFJlc291cmNlRQogX19aTjdXZWJD
b3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIxMGZpcnN0Q2hpbGRFdgpAQCAtNjY5LDcgKzY3
Miw3IEBAIF9fWk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyQzIKIF9fWk43V2Vi
Q29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyRDJFdgogX19aTjdXZWJDb3JlMjRjcmVhdGVG
cmFnbWVudEZyb21NYXJrdXBFUE5TXzhEb2N1bWVudEVSS04zV1RGNlN0cmluZ0VTNV9OU18yN0Zy
YWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbkUKIF9fWk43V2ViQ29yZTI0ZGVjb2RlVVJMRXNjYXBl
U2VxdWVuY2VzRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMjRkZWxldGVDb29raWVzRm9y
SG9zdG5hbWVFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOM1dURjZTdHJpbmdFCitfX1pON1dl
YkNvcmUyNGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNz
aW9uRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjRmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b25FUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyNG5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdl
ZEUKIF9fWk43V2ViQ29yZTI1SGlzdG9yeVByb3BlcnR5TGlzdFdyaXRlcjExcmVsZWFzZURhdGFF
dgpAQCAtNjk2LDEwICs2OTksOSBAQCBfX1pON1dlYkNvcmUyN0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvCiBfX1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazE0c2V0T3Jp
ZW50YXRpb25FTjNXVEYxMFBhc3NSZWZQdHJJTlNfMjFEZXZpY2VPcmllbnRhdGlvbkRhdGFFRUUK
IF9fWk43V2ViQ29yZTI3RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrQzFFdgogX19aTjdXZWJD
b3JlMjdzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXNFdgotX19aTjdXZWJDb3JlMjZkZWZhdWx0
Q0ZIVFRQQ29va2llU3RvcmFnZUV2CiBfX1pON1dlYkNvcmUyOGVuY29kZVdpdGhVUkxFc2NhcGVT
ZXF1ZW5jZXNFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyOHJlbW92ZUxhbmd1YWdlQ2hh
bmdlT2JzZXJ2ZXJFUHYKLV9fWk43V2ViQ29yZTI5Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWVFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VSTEVTNF8KK19fWk43V2ViQ29yZTI5
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWVFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lv
bkVSS05TXzRLVVJMRVM1XwogX19aTjdXZWJDb3JlMjlpc0NoYXJhY3RlclNtYXJ0UmVwbGFjZUV4
ZW1wdEVpYgogX19aTjdXZWJDb3JlMzBob3N0TmFtZU5lZWRzRGVjb2RpbmdXaXRoUmFuZ2VFUDhO
U1N0cmluZzhfTlNSYW5nZQogX19aTjdXZWJDb3JlMzBob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRo
UmFuZ2VFUDhOU1N0cmluZzhfTlNSYW5nZQpAQCAtMTMzMCw2ICsxMzMyLDcgQEAgX19aTks3V2Vi
Q29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U2aXNIVAogX19aTks3V2ViQ29yZTIwUmVzb3VyY2VS
ZXNwb25zZUJhc2U4bWltZVR5cGVFdgogX19aTks3V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9s
bGVyMTJmb3J3YXJkQ291bnRFdgogX19aTks3V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9sbGVy
OWJhY2tDb3VudEV2CitfX1pOSzdXZWJDb3JlMjFOZXR3b3JrU3RvcmFnZVNlc3Npb24xM2Nvb2tp
ZVN0b3JhZ2VFdgogX19aTks3V2ViQ29yZTIxUmVuZGVyTGF5ZXJDb21wb3NpdG9yMTFzY3JvbGxM
YXllckV2CiBfX1pOSzdXZWJDb3JlMjFSZW5kZXJMYXllckNvbXBvc2l0b3IxNXJvb3RSZW5kZXJM
YXllckV2CiBfX1pOSzdXZWJDb3JlMjFVc2VyQ29udGVudFVSTFBhdHRlcm43bWF0Y2hlc0VSS05T
XzRLVVJMRQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC00MzY3LDYgKzQzNjcsNyBA
QAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmNwcCcsCkBAIC00Mzg2LDcg
KzQzODcsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRp
b25DRi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZO
ZXQuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VD
Rk5ldC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9y
YWdlQ0ZOZXQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9jZi9Eb3dubG9hZEJ1bmRsZS5o
JywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzI2MjEsNiArMzI2MjEsMTAgQEAKIAkJCQkJ
PgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3Jt
XG5ldHdvcmtcTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJ
CQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXE5ldHdvcmtp
bmdDb250ZXh0LmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBAIC0zMjg0NCwxMCArMzI4NDgsNiBA
QAogCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJCQkJPC9GaWxlPgogCQkJCQk8RmlsZQot
CQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXENvb2tpZVN0b3JhZ2VD
Rk5ldC5oIgotCQkJCQkJPgotCQkJCQk8L0ZpbGU+Ci0JCQkJCTxGaWxlCiAJCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAi
CiAJCQkJCQk+CiAJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTMyOTQwLDYgKzMyOTQwLDEw
IEBACiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAi
CisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKIAkJCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGxhdGZvcm1cbmV0d29ya1xjZlxQcm94eVNlcnZlckNGTmV0LmNwcCIKIAkJCQkJCT4KIAkJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDM3LDcgKzIwMzcsNiBAQAogCQk3RUU2ODQ2MTEyRDI2RTM4MDBFNzk0MTUgLyogQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdFRTY4NDRFMTJEMjZFMzgwMEU3OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdFRTY4NDYyMTJEMjZFMzgwMEU3OTQxNSAvKiBDb29raWVKYXJDRk5ldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ0RjEyRDI2RTM4
MDBFNzk0MTUgLyogQ29va2llSmFyQ0ZOZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2MzEyRDI2RTM4
MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDUwMTJEMjZFMzgwMEU3OTQxNSAvKiBDb29r
aWVTdG9yYWdlQ0ZOZXQuY3BwICovOyB9OwotCQk3RUU2ODQ2NDEyRDI2RTM4MDBFNzk0MTUgLyog
Q29va2llU3RvcmFnZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VF
Njg0NjUxMkQyNkUzODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NTIxMkQyNkUz
ODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2
NjEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1MzEyRDI2RTM4MDBFNzk0
MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgKi87IH07CiAJCTdFRTY4NDY3MTJEMjZFMzgw
MEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1NDEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURh
dGFTdHJlYW1DRk5ldC5oICovOyB9OwpAQCAtNjA5NSw2ICs2MDk0LDggQEAKIAkJRTEzNEY1QUIx
MkVFMzQzRjAwNEVDNThEIC8qIEludFJlY3RIYXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTM0RjVBQTEyRUUzNDNGMDA0RUM1OEQgLyogSW50UmVj
dEhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMTM5ODY2MzE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTM5ODY2MTE1NDc4NDc0MDAx
RTNGNjUgLyogU3R5bGVSZXNvbHZlci5jcHAgKi87IH07CiAJCUUxMzk4NjY0MTU0Nzg0NzQwMDFF
M0Y2NSAvKiBTdHlsZVJlc29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTM5ODY2MjE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5o
ICovOyB9OworCQlFMTNFRjM0NDE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTNF
RjM0MjE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTEzRUYzNDkxNjg1MEM0
NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxM0VGMzQ3MTY4NTBDNDcwMDM0Qzgz
RiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgKi87IH07CiAJCUUxM0YwMUYxMTI3
MEUxOTAwMERGQkE3MSAvKiBDb29raWVTdG9yYWdlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEzRjAxRjAxMjcwRTE5MDAwREZCQTcxIC8qIENv
b2tpZVN0b3JhZ2VNYWMubW0gKi87IH07CiAJCUUxNDI0QzhBMTY0QjNCNEUwMEYzMkQ0MCAvKiBQ
bGF0Zm9ybUNvb2tpZUphci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTE0MjRDODkxNjRCM0I0RTAwRjMyRDQwIC8qIFBsYXRmb3JtQ29va2llSmFyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTE0MjRD
OTAxNjRCNDYwQjAwRjMyRDQwIC8qIENvb2tpZUphck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNDI0QzhGMTY0QjQ2MEIwMEYzMkQ0MCAvKiBD
b29raWVKYXJNYWMubW0gKi87IH07CkBAIC05MzcwLDcgKzkzNzEsNiBAQAogCQk3RUU2ODQ0RTEy
RDI2RTM4MDBFNzk0MTUgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NEYxMkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZUph
ckNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvb2tpZUph
ckNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTAxMkQyNkUz
ODAwRTc5NDE1IC8qIENvb2tpZVN0b3JhZ2VDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDb29raWVTdG9yYWdlQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNG
TmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tpZVN0b3JhZ2VDRk5l
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1MjEyRDI2RTM4MDBFNzk0
MTUgLyogQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTMxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybURhdGFT
dHJlYW1DRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDU0MTJE
MjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZvcm1EYXRhU3RyZWFtQ0ZOZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEzNTc2LDYgKzEzNTc2LDggQEAKIAkJRTEzNEY1QUExMkVFMzQzRjAwNEVD
NThEIC8qIEludFJlY3RIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
dFJlY3RIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMzk4NjYxMTU0Nzg0
NzQwMDFFM0Y2NSAvKiBTdHlsZVJlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0eWxlUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMTM5ODY2MjE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZVJlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUxM0VGMzQyMTY4NEVDRjQwMDM0QzgzRiAvKiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxM0VGMzQ3MTY4NTBD
NDcwMDM0QzgzRiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxM0YwMUVBMTI3MEUxMEQwMERGQkE3MSAv
KiBDb29raWVTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tp
ZVN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEzRjAxRjAxMjcwRTE5
MDAwREZCQTcxIC8qIENvb2tpZVN0b3JhZ2VNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBDb29raWVTdG9yYWdlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMTQyNEM4OTE2NEIzQjRFMDBGMzJENDAgLyogUGxhdGZvcm1Db29raWVKYXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxhdGZvcm1Db29raWVKYXIuaDsg
cGF0aCA9IG5ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE1ODMzLDYgKzE1ODM1LDcgQEAKIAkJCQkzN0REQ0Q5MjEzODQ0RkQ1MDAwOEI3
OTMgLyogTUlNRUhlYWRlci5jcHAgKi8sCiAJCQkJMzdERENEOTMxMzg0NEZENTAwMDhCNzkzIC8q
IE1JTUVIZWFkZXIuaCAqLywKIAkJCQk2MjhEMjE0QjEyMTMxRUQxMDA1NURDRkMgLyogTmV0d29y
a2luZ0NvbnRleHQuaCAqLywKKwkJCQlFMTNFRjM0MjE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmggKi8sCiAJCQkJMUE3RkE2MUEwRERBM0JCRTAwMjhGOEE1IC8qIE5l
dHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCAqLywKIAkJCQkxQTdGQTYxODBEREEzQjNBMDAyOEY4QTUg
LyogTmV0d29ya1N0YXRlTm90aWZpZXIuaCAqLywKIAkJCQk0NDc5NTgwMjE2NDNCNDdCMDAxRTBB
N0YgLyogUGFyc2VkQ29udGVudFR5cGUuY3BwICovLApAQCAtMjA0MDMsMTMgKzIwNDA2LDEzIEBA
CiAJCQkJN0VFNjg0NEUxMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmggKi8sCiAJCQkJN0VFNjg0NEYxMkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZUphckNGTmV0LmNw
cCAqLywKIAkJCQk3RUU2ODQ1MDEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0
LmNwcCAqLywKLQkJCQk3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNG
TmV0LmggKi8sCiAJCQkJN0VFNjg0NTIxMkQyNkUzODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9y
YWdlQ0ZOZXQuY3BwICovLAogCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5l
dC5jcHAgKi8sCiAJCQkJN0VFNjg0NTMxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU0MTJEMjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0
cmVhbUNGTmV0LmggKi8sCiAJCQkJN0VFNjg0NTUxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1
bkxvb3BDRi5jcHAgKi8sCiAJCQkJN0VFNjg0NTYxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1
bkxvb3BDRi5oICovLAorCQkJCUUxM0VGMzQ3MTY4NTBDNDcwMDM0QzgzRiAvKiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb25DRk5ldC5jcHAgKi8sCiAJCQkJMUFGOEUxQzExMjU2NzNFMDAwMjMwRkY3IC8q
IFByb3h5U2VydmVyQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAv
KiBSZXNvdXJjZUVycm9yLmggKi8sCiAJCQkJN0VFNjg0NTgxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlRXJyb3JDRi5jcHAgKi8sCkBAIC0yMjg5NCw3ICsyMjg5Nyw2IEBACiAJCQkJRDhCNjE1
MkYxMDMyNDk1MTAwQzg1NTRBIC8qIENvb2tpZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzM5QjVC
NjMxMzFEQUEzMjAwRjQ4RDAyIC8qIENvb2tpZXNTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzNEMDIxMkQxMzFEQjM3QjAwNDA5MUE4IC8qIENvb2tpZVN0b3JhZ2UuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTdFRTY4NDY0MTJEMjZFMzgwMEU3OTQxNSAvKiBDb29raWVTdG9yYWdlQ0ZOZXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZFNkZENDg4MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29yZGlu
YXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZEMDQwQTE5ODlDQTAwN0ZCOEM1IC8qIENv
dW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCOTc5MEU4MjA2OTIwMEIyNTk2NSAvKiBD
b3VudGVyQ29udGVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTk4Miw2ICsyNTk4NCw3IEBACiAJ
CQkJRjM3QTU2MjMxNjc5Q0Y3QjAwQzU3MDQ2IC8qIEhlYXBHcmFwaFNlcmlhbGl6ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjg4OTBBMTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCODg5MEYxNjdEMzAxNjAwMTBDREE1
IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTEzRUYz
NDQxNjg0RUNGNDAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0yOTEwMCw2ICsyOTEwMyw3IEBACiAJCQkJMEZCODg5MEIxNjdEMkZBMTAwMTBDREE1
IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCODg5
MEUxNjdEMzAxNjAwMTBDREE1IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyMDlCNDU2QjE2Nzk2QTdFMDBFNTRFNEUgLyogSlNDcnlwdG9DdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTEzRUYzNDkxNjg1MEM0NzAwMzRDODNGIC8qIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nvb2tpZUphci5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db29raWVKYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTmV0
d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvb2tpZUphci5oIgogCiAjaWYg
VVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCkBAIC00Myw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4dChjb25z
dCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CisgICAgLy8gRklYTUU6IFJldHVybmluZyAwIG1lYW5z
IGZhbGxpbmcgYmFjayB0byBkZWZhdWx0IGNvbnRleHQuIFRoYXQncyBub3QgYSBjaG9pY2UgdGhh
dCBpcyBhcHByb3ByaWF0ZSB0byBkbyBhdCBydW50aW1lCiAgICAgaWYgKCFkb2N1bWVudCkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CkBA
IC01NCw1NyArNTYsNjggQEAgc3RhdGljIE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29u
dAogICAgIHJldHVybiBsb2FkZXItPm5ldHdvcmtpbmdDb250ZXh0KCk7CiB9CiAKKyNpZiBQTEFU
Rk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCitpbmxpbmUgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzdG9yYWdlU2Vzc2lvbihjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQgPSBuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCk7CisgICAg
cmV0dXJuIGNvbnRleHQgPyBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpIDogTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKK30KKyNkZWZpbmUgU0VTU0lPTihk
b2N1bWVudCkgc3RvcmFnZVNlc3Npb24oZG9jdW1lbnQpCisjZWxzZQorI2RlZmluZSBTRVNTSU9O
KGRvY3VtZW50KSBOZXR3b3JrU3RvcmFnZVNlc3Npb24obmV0d29ya2luZ0NvbnRleHQoZG9jdW1l
bnQpKQorI2VuZGlmCisKIFN0cmluZyBjb29raWVzKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgS1VSTCYgdXJsKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAgIHJl
dHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmNvb2tpZXNGb3JE
T00obmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgdXJsKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNT
dHJhdGVneSgpLT5jb29raWVzRm9yRE9NKFNFU1NJT04oZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsKICNlbHNlCi0gICAgcmV0dXJuIGNvb2tpZXNGb3JE
T00obmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgdXJsKTsKKyAgICByZXR1cm4gY29va2llc0ZvckRPTShTRVNTSU9OKGRvY3VtZW50
KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVybCk7CiAjZW5kaWYKIH0KIAog
dm9pZCBzZXRDb29raWVzKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykK
LSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPnNldENvb2tpZXNG
cm9tRE9NKG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlG
b3JDb29raWVzKCksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+Y29va2llc1N0cmF0ZWd5KCktPnNldENvb2tpZXNGcm9tRE9NKFNFU1NJT04oZG9jdW1lbnQp
LCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBjb29raWVTdHJpbmcpOwog
I2Vsc2UKLSAgICBzZXRDb29raWVzRnJvbURPTShuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCks
IGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZVN0cmluZyk7Cisg
ICAgc2V0Q29va2llc0Zyb21ET00oU0VTU0lPTihkb2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZVN0cmluZyk7CiAjZW5kaWYKIH0KIAogYm9vbCBj
b29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAjaWYgVVNFKFBMQVRG
T1JNX1NUUkFURUdJRVMpCi0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVz
U3RyYXRlZ3koKS0+Y29va2llc0VuYWJsZWQobmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBk
b2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgZG9jdW1lbnQtPmNvb2tpZVVSTCgpKTsK
KyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5jb29r
aWVzRW5hYmxlZChTRVNTSU9OKGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29r
aWVzKCksIGRvY3VtZW50LT5jb29raWVVUkwoKSk7CiAjZWxzZQotICAgIHJldHVybiBjb29raWVz
RW5hYmxlZChuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCBkb2N1bWVudC0+Y29va2llVVJMKCkpOworICAgIHJldHVybiBjb29raWVz
RW5hYmxlZChTRVNTSU9OKGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVz
KCksIGRvY3VtZW50LT5jb29raWVVUkwoKSk7CiAjZW5kaWYKIH0KIAogU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VS
TCYgdXJsKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAgIHJldHVybiBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFy
dHlGb3JDb29raWVzKCksIHVybCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5j
b29raWVzU3RyYXRlZ3koKS0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU0VTU0lPTihk
b2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpOwogI2Vsc2UK
LSAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUobmV0d29ya2luZ0NvbnRl
eHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsKKyAg
ICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU0VTU0lPTihkb2N1bWVudCks
IGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpOwogI2VuZGlmCiB9CiAKIGJv
b2wgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVy
bCwgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMpCiB7CiAjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJ
RVMpCi0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+
Z2V0UmF3Q29va2llcyhuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCksIGRvY3VtZW50LT5maXJz
dFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOworICAgIHJldHVybiBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmdldFJhd0Nvb2tpZXMoU0VTU0lPTihkb2N1
bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOwog
I2Vsc2UKLSAgICByZXR1cm4gZ2V0UmF3Q29va2llcyhuZXR3b3JraW5nQ29udGV4dChkb2N1bWVu
dCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOworICAg
IHJldHVybiBnZXRSYXdDb29raWVzKFNFU1NJT04oZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBjb29raWVzKTsKICNlbmRpZgogfQogCiB2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb29raWVOYW1lKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+ZGVsZXRlQ29va2llKG5l
dHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmRlbGV0ZUNvb2tpZShTRVNTSU9OKGRv
Y3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKICNlbHNlCi0gICAgZGVsZXRlQ29va2llKG5ldHdv
cmtpbmdDb250ZXh0KGRvY3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBkZWxldGVDb29r
aWUoU0VTU0lPTihkb2N1bWVudCksIHVybCwgY29va2llTmFtZSk7CiAjZW5kaWYKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxMzg0
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlSG9z
dC5oIgogI2luY2x1ZGUgIkFzeW5jRmlsZVN0cmVhbS5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gMTM4NDA3KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJDYWNoZVBvbGljeS5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJQdXJnZVByaW9yaXR5LmgiCisjaW5jbHVkZSAi
UmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0
LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAkocmV2
aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDMwICszMywyMiBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKE1B
QykgfHwgVVNFKENGTkVUV09SSykKLXR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0
b3JhZ2UqICBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgS1VSTDsKLWNsYXNzIE5ldHdvcmtpbmdDb250ZXh0OworY2xhc3MgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOwogc3RydWN0IENvb2tpZTsKIAogY2xhc3MgQ29va2llc1N0cmF0
ZWd5IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQoKSA9
IDA7CiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBS
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gZGVmYXVsdENvb2tpZVN0b3JhZ2UoKSA9
IDA7Ci0jZW5kaWYKLQotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2lu
Z0NvbnRleHQqLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmlu
ZykgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4
dCosIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmKSA9IDA7Ci0gICAgdmlydHVh
bCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOwotICAgIHZpcnR1YWwg
Ym9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+JikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiBjb29raWVOYW1lKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY29v
a2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXRS
YXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgfkNvb2tpZXNTdHJhdGVneSgpIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAkocmV2aXNpb24gMTM4
NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5k
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1
ZXN0LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOZXR3b3JrU3RvcmFnZVNlc3Np
b25faAorI2RlZmluZSBOZXR3b3JrU3RvcmFnZVNlc3Npb25faAorCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgUExBVEZP
Uk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQordHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTFN0
b3JhZ2VTZXNzaW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwordHlwZWRlZiBzdHJ1Y3QgT3Bh
cXVlQ0ZIVFRQQ29va2llU3RvcmFnZSogIENGSFRUUENvb2tpZVN0b3JhZ2VSZWY7CisjZW5kaWYK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOZXR3b3JraW5nQ29udGV4dDsKKworY2xh
c3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3
b3JrU3RvcmFnZVNlc3Npb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsK
KyAgICBzdGF0aWMgUGFzc093blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IGNyZWF0ZURlZmF1
bHRTZXNzaW9uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckJhc2UpOworICAgIHN0YXRpYyBQYXNz
T3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gY3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlKTsKKworICAgIHN0YXRpYyB2b2lkIHN3aXRj
aFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKKworI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVU
V09SSykKKyAgICAvLyBNYXkgYmUgbnVsbCwgaW4gd2hpY2ggY2FzZSBhIEZvdW5kYXRpb24gZGVm
YXVsdCBzaG91bGQgYmUgdXNlZC4KKyAgICBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHBsYXRmb3Jt
U2Vzc2lvbigpIHsgcmV0dXJuIG1fcGxhdGZvcm1TZXNzaW9uLmdldCgpOyB9CisgICAgUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UoKSBjb25zdDsKKyAgICBi
b29sIGlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNQcml2YXRl
OyB9CisjZWxzZQorICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihOZXR3b3JraW5nQ29udGV4dCop
OworICAgIH5OZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsKKyAgICBOZXR3b3JraW5nQ29udGV4dCog
Y29udGV4dCgpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisjaWYgUExBVEZPUk0oTUFDKSB8
fCBVU0UoQ0ZORVRXT1JLKQorICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihDRlVSTFN0b3JhZ2VT
ZXNzaW9uUmVmIHBsYXRmb3JtU2Vzc2lvbik7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKCk7
CisgICAgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IG1fcGxhdGZvcm1TZXNzaW9u
OworICAgIGJvb2wgbV9pc1ByaXZhdGU7CisjZWxzZQorICAgIFJlZlB0cjxOZXR3b3JraW5nQ29u
dGV4dD4gbV9jb250ZXh0OworI2VuZGlmCit9OworCisjaWYgUExBVEZPUk0oV0lOKQorLy8gTmVl
ZGVkIGZvciBXZWJLaXQxIEFQSSBvbmx5Lgordm9pZCBvdmVycmlkZUNvb2tpZVN0b3JhZ2UoQ0ZI
VFRQQ29va2llU3RvcmFnZVJlZik7CitDRkhUVFBDb29raWVTdG9yYWdlUmVmIG92ZXJyaWRlbkNv
b2tpZVN0b3JhZ2UoKTsKKyNlbmRpZgorCit9CisKKyNlbmRpZiAvLyBOZXR3b3JrU3RvcmFnZVNl
c3Npb25faApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25TdHViLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvblN0dWIuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHVi
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKKworI2luY2x1
ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitOZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbihOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCkKKyAgICA6IG1fY29udGV4dChj
b250ZXh0KQoreworfQorCitOZXR3b3JrU3RvcmFnZVNlc3Npb246On5OZXR3b3JrU3RvcmFnZVNl
c3Npb24oKQoreworfQorCitOZXR3b3JraW5nQ29udGV4dCogTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Ojpjb250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOworfQorCitQ
YXNzT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
cmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKGNvbnN0IFN0cmluZyYpCit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK05ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKQor
eworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBzZXNzaW9u
LCAoMCkpOworICAgIHJldHVybiBzZXNzaW9uOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpCit7Cit9CisKK30KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgJ
KHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsOSBAQAogI2lmbmRl
ZiBOZXR3b3JraW5nQ29udGV4dF9oCiAjZGVmaW5lIE5ldHdvcmtpbmdDb250ZXh0X2gKIAorI2lu
Y2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQogI2lu
Y2x1ZGUgIlNjaGVkdWxlUGFpci5oIgpAQCAtNDAsMTAgKzQyLDYgQEAgY2xhc3MgV2ViQ29va2ll
SmFyOwogT0JKQ19DTEFTUyBOU09wZXJhdGlvblF1ZXVlOwogI2VuZGlmCiAKLSNpZiBQTEFURk9S
TShNQUMpIHx8IFVTRShDRk5FVFdPUkspCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMU3Rv
cmFnZVNlc3Npb24qIENGVVJMU3RvcmFnZVNlc3Npb25SZWY7Ci0jZW5kaWYKLQogI2lmIFBMQVRG
T1JNKFFUKQogUVRfQkVHSU5fTkFNRVNQQUNFCiBjbGFzcyBRT2JqZWN0OwpAQCAtNjgsNiArNjYs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAKICNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICAvLyBGSVhNRTogV3JhcCBXZWJD
b29raWVKYXIgaW50byBhIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB0byBtYWtlIHRoZSBjb2RlIGNy
b3NzLXBsYXRmb3JtLgogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUph
cigpIGNvbnN0ID0gMDsKICNlbmRpZgogCkBAIC04MCwxMSArNzksMTIgQEAgcHVibGljOgogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBi
b29sIGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIENGVVJM
U3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0
dWFsIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCA9IDA7CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKFFUKQorICAgIC8vIEZJWE1FOiBXcmFwIFFOZXR3b3JrQWNj
ZXNzTWFuYWdlciBpbnRvIGEgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIHRvIG1ha2UgdGhlIGNvZGUg
Y3Jvc3MtcGxhdGZvcm0uCiAgICAgdmlydHVhbCBRT2JqZWN0KiBvcmlnaW5hdGluZ09iamVjdCgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFFOZXR3b3JrQWNjZXNzTWFuYWdlciogbmV0d29ya0Fj
Y2Vzc01hbmFnZXIoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIG1pbWVTbmlmZmluZ0Vu
YWJsZWQoKSBjb25zdCA9IDA7CkBAIC05OCw2ICs5OCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAj
aWYgVVNFKFNPVVApCisgICAgLy8gRklYTUU6IFdyYXAgU291cFNlc3Npb24gaW50byBhIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiB0byBtYWtlIHRoZSBjb2RlIGNyb3NzLXBsYXRmb3JtLgogICAgIHZp
cnR1YWwgU291cFNlc3Npb24qIHNvdXBTZXNzaW9uKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
dWludDY0X3QgaW5pdGlhdGluZ1BhZ2VJRCgpIGNvbnN0ID0gMDsKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QbGF0Zm9ybUNvb2tpZUphci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIu
aAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Q
bGF0Zm9ybUNvb2tpZUphci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxOSArMzQsMTkgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgS1VSTDsKLWNsYXNzIE5ldHdvcmtpbmdDb250ZXh0
OworY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogc3RydWN0IENvb2tpZTsKIAogLy8gSWYg
bmV0d29ya2luZyBjb250ZXh0IGlzIG51bGwsIGRlZmF1bHQgY29va2llIHN0b3JhZ2UgaXMgdXNl
ZC4KLVN0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpOwotdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3Jr
aW5nQ29udGV4dCosIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBjb25zdCBT
dHJpbmcmKTsKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJik7Ci1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJik7Ci1ib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiwgVmVjdG9yPENvb2tpZT4mKTsKLXZvaWQg
ZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmlu
ZyYpOwotdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCosIEhh
c2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKTsKLXZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1l
KE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7Ci12b2lkIGRlbGV0
ZUFsbENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqKTsKK1N0cmluZyBjb29raWVzRm9yRE9NKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmKTsKK3ZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYp
OworYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJik7CitTdHJpbmcgY29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpOworYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBW
ZWN0b3I8Q29va2llPiYpOwordm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOwordm9pZCBnZXRIb3N0bmFtZXNX
aXRoQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBIYXNoU2V0PFN0cmluZz4m
IGhvc3RuYW1lcyk7Cit2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKK3ZvaWQgZGVsZXRlQWxs
Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mKTsKIAogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAko
cmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1
ZGUgIkJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3
b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5j
bHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCShyZXZpc2lvbiAxMzg0
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDEzICsyNiwxMyBAQAogI2lmbmRlZiBSZXNvdXJjZUhhbmRs
ZV9oCiAjZGVmaW5lIFJlc291cmNlSGFuZGxlX2gKIAotI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DbGllbnQuaCIKICNpbmNsdWRl
ICJIVFRQSGVhZGVyTWFwLmgiCi0jaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogI2lmIFVT
RShTT1VQKQordHlwZWRlZiBzdHJ1Y3QgX0dUbHNDZXJ0aWZpY2F0ZSBHVGxzQ2VydGlmaWNhdGU7
CiB0eXBlZGVmIHN0cnVjdCBfU291cFNlc3Npb24gU291cFNlc3Npb247CiB0eXBlZGVmIHN0cnVj
dCBfU291cFJlcXVlc3QgU291cFJlcXVlc3Q7CiAjZW5kaWYKQEAgLTc4LDYgKzc4LDcgQEAgY2xh
c3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgRnJh
bWU7CiBjbGFzcyBLVVJMOworY2xhc3MgTmV0d29ya2luZ0NvbnRleHQ7CiBjbGFzcyBQcm90ZWN0
aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VIYW5kbGVDbGll
bnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNG
TmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L0Nvb2tpZUphckNGTmV0LmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDkgKzI5LDggQEAKICNpZiBVU0UoQ0ZORVRXT1JLKQogCiAjaW5jbHVkZSAiQ29va2llLmgi
Ci0jaW5jbHVkZSAiQ29va2llU3RvcmFnZUNGTmV0LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgotI2lu
Y2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJTb2Z0TGlua2lu
Zy5oIgogI2luY2x1ZGUgPENGTmV0d29yay9DRkhUVFBDb29raWVzUHJpdi5oPgpAQCAtOTUsMTUg
Kzk0LDEyIEBAIHN0YXRpYyBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gZmlsdGVyQ29va2kKICAgICBy
ZXR1cm4gZmlsdGVyZWRDb29raWVzOwogfQogCi12b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdv
cmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIC8vIDxyZGFyOi8v
cHJvYmxlbS81NjMyODgzPiBDRkhUVFBDb29raWVTdG9yYWdlIHN0b3JlcyBhbiBlbXB0eSBjb29r
aWUsIHdoaWNoIHdvdWxkIGJlIHNlbnQgYXMgIkNvb2tpZTogPSIuCiAgICAgaWYgKHZhbHVlLmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0
b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0
b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAgIEFTU0VS
VChjb29raWVTdG9yYWdlKTsKLQogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsQ0YoQWRvcHRD
RiwgdXJsLmNyZWF0ZUNGVVJMKCkpOwogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gZmlyc3RQYXJ0
eUZvckNvb2tpZXNDRihBZG9wdENGLCBmaXJzdFBhcnR5LmNyZWF0ZUNGVVJMKCkpOwogCkBAIC0x
MTksNTQgKzExNSw0MyBAQCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0
CiAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29r
aWVDcmVhdGVXaXRoUmVzcG9uc2VIZWFkZXJGaWVsZHMoa0NGQWxsb2NhdG9yRGVmYXVsdCwKICAg
ICAgICAgaGVhZGVyRmllbGRzQ0YuZ2V0KCksIHVybENGLmdldCgpKSk7CiAKLSAgICBDRkhUVFBD
b29raWVTdG9yYWdlU2V0Q29va2llcyhjb29raWVTdG9yYWdlLmdldCgpLCBmaWx0ZXJDb29raWVz
KGNvb2tpZXNDRi5nZXQoKSkuZ2V0KCksIHVybENGLmdldCgpLCBmaXJzdFBhcnR5Rm9yQ29va2ll
c0NGLmdldCgpKTsKKyAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llcyhzZXNzaW9uLmNv
b2tpZVN0b3JhZ2UoKS5nZXQoKSwgZmlsdGVyQ29va2llcyhjb29raWVzQ0YuZ2V0KCkpLmdldCgp
LCB1cmxDRi5nZXQoKSwgZmlyc3RQYXJ0eUZvckNvb2tpZXNDRi5nZXQoKSk7CiB9CiAKLVN0cmlu
ZyBjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiwg
Y29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQogewotICAg
IFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4
dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENv
b2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7Ci0KICAgICBSZXRhaW5Q
dHI8Q0ZVUkxSZWY+IHVybENGKEFkb3B0Q0YsIHVybC5jcmVhdGVDRlVSTCgpKTsKIAogICAgIGJv
b2wgc2VjdXJlID0gdXJsLnByb3RvY29sSXMoImh0dHBzIik7Ci0gICAgUmV0YWluUHRyPENGQXJy
YXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNG
b3JVUkwoY29va2llU3RvcmFnZS5nZXQoKSwgdXJsQ0YuZ2V0KCksIHNlY3VyZSkpOworICAgIFJl
dGFpblB0cjxDRkFycmF5UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llU3RvcmFn
ZUNvcHlDb29raWVzRm9yVVJMKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCB1cmxDRi5n
ZXQoKSwgc2VjdXJlKSk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaGVhZGVyQ0Yo
QWRvcHRDRiwgQ0ZIVFRQQ29va2llQ29weVJlcXVlc3RIZWFkZXJGaWVsZHMoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgZmlsdGVyQ29va2llcyhjb29raWVzQ0YuZ2V0KCkpLmdldCgpKSk7CiAgICAgcmV0
dXJuIChDRlN0cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShoZWFkZXJDRi5nZXQoKSwgc19j
b29raWVDRik7CiB9CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3
b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0
IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSov
LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2Uo
Y29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29r
aWVTdG9yYWdlKTsKLQogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsQ0YoQWRvcHRDRiwgdXJs
LmNyZWF0ZUNGVVJMKCkpOwogCiAgICAgYm9vbCBzZWN1cmUgPSB1cmwucHJvdG9jb2xJcygiaHR0
cHMiKTsKLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29va2llc0NGKEFkb3B0Q0YsIENGSFRU
UENvb2tpZVN0b3JhZ2VDb3B5Q29va2llc0ZvclVSTChjb29raWVTdG9yYWdlLmdldCgpLCB1cmxD
Ri5nZXQoKSwgc2VjdXJlKSk7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihB
ZG9wdENGLCBDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29r
aWVTdG9yYWdlKCkuZ2V0KCksIHVybENGLmdldCgpLCBzZWN1cmUpKTsKICAgICBSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiBoZWFkZXJDRihBZG9wdENGLCBDRkhUVFBDb29raWVDb3B5UmVxdWVz
dEhlYWRlckZpZWxkcyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjb29raWVzQ0YuZ2V0KCkpKTsKICAg
ICByZXR1cm4gKENGU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGhlYWRlckNGLmdldCgp
LCBzX2Nvb2tpZUNGKTsKIH0KIAotYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJs
Ki8pCitib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCiB7
Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBj
b250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZI
VFRQQ29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsKLQotICAgIENG
SFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kgcG9saWN5ID0gQ0ZIVFRQQ29va2llU3RvcmFn
ZUdldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpKTsKKyAgICBDRkhUVFBD
b29raWVTdG9yYWdlQWNjZXB0UG9saWN5IHBvbGljeSA9IENGSFRUUENvb2tpZVN0b3JhZ2VHZXRD
b29raWVBY2NlcHRQb2xpY3koc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCkpOwogICAgIHJl
dHVybiBwb2xpY3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFp
bkRvY3VtZW50RG9tYWluIHx8IHBvbGljeSA9PSBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9s
aWN5QWx3YXlzOwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwsIFZlY3Rv
cjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0
IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmF3Q29va2ll
cy5jbGVhcigpOwotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVT
dG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDog
ZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7
CiAKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybENGKEFkb3B0Q0YsIHVybC5jcmVhdGVDRlVS
TCgpKTsKIAogICAgIGJvb2wgc2VuZFNlY3VyZUNvb2tpZXMgPSB1cmwucHJvdG9jb2xJcygiaHR0
cHMiKTsKLSAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29va2llc0NGKEFkb3B0Q0YsIENGSFRU
UENvb2tpZVN0b3JhZ2VDb3B5Q29va2llc0ZvclVSTChjb29raWVTdG9yYWdlLmdldCgpLCB1cmxD
Ri5nZXQoKSwgc2VuZFNlY3VyZUNvb2tpZXMpKTsKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4g
Y29va2llc0NGKEFkb3B0Q0YsIENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2llc0ZvclVSTChz
ZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsQ0YuZ2V0KCksIHNlbmRTZWN1cmVDb29r
aWVzKSk7CiAKICAgICBDRkluZGV4IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KGNvb2tpZXNDRi5n
ZXQoKSk7CiAgICAgcmF3Q29va2llcy5yZXNlcnZlQ2FwYWNpdHkoY291bnQpOwpAQCAtMTkwLDEw
ICsxNzUsOSBAQCBib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3ZvaWQgZGVsZXRl
Q29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0
b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0
b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAgIEFTU0VS
VChjb29raWVTdG9yYWdlKTsKKyAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4g
Y29va2llU3RvcmFnZSA9IHNlc3Npb24uY29va2llU3RvcmFnZSgpOwogCiAgICAgUmV0YWluUHRy
PENGVVJMUmVmPiB1cmxDRihBZG9wdENGLCB1cmwuY3JlYXRlQ0ZVUkwoKSk7CiAKQEAgLTIxMCwx
MiArMTk0LDkgQEAgdm9pZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbgogICAg
IH0KIH0KIAotdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCog
Y29udGV4dCwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCit2b2lkIGdldEhvc3RuYW1lc1dp
dGhDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgSGFzaFNldDxT
dHJpbmc+JiBob3N0bmFtZXMpCiB7Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2Uo
Y29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29r
aWVTdG9yYWdlKTsKLQotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBjb29raWVzQ0YoQWRvcHRD
RiwgQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29raWVzKGNvb2tpZVN0b3JhZ2UuZ2V0KCkpKTsK
KyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29va2llc0NGKEFkb3B0Q0YsIENGSFRUUENvb2tp
ZVN0b3JhZ2VDb3B5Q29va2llcyhzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSkpOwogICAg
IGlmICghY29va2llc0NGKQogICAgICAgICByZXR1cm47CiAKQEAgLTIyNywxMCArMjA4LDkgQEAg
dm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQwogICAgIH0KIH0KIAotdm9p
ZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUp
CiB7Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2Ug
PSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0
Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsKKyAgICBS
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IHNlc3Npb24u
Y29va2llU3RvcmFnZSgpOwogCiAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihB
ZG9wdENGLCBDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXMoY29va2llU3RvcmFnZS5nZXQo
KSkpOwogICAgIGlmICghY29va2llc0NGKQpAQCAtMjQ1LDEyICsyMjUsOSBAQCB2b2lkIGRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZShOZXR3b3JraW5nCiAgICAgfQogfQogCi12b2lkIGRlbGV0ZUFs
bENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCit2b2lkIGRlbGV0ZUFsbENvb2tp
ZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQogewotICAgIFJldGFpblB0
cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJl
bnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3Jh
Z2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7Ci0KLSAgICBDRkhUVFBDb29raWVTdG9y
YWdlRGVsZXRlQWxsQ29va2llcyhjb29raWVTdG9yYWdlLmdldCgpKTsKKyAgICBDRkhUVFBDb29r
aWVTdG9yYWdlRGVsZXRlQWxsQ29va2llcyhzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAJKHJl
dmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29v
a2llU3RvcmFnZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOSArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2UuaCIKIAotI2luY2x1ZGUg
IkNvb2tpZVN0b3JhZ2VDRk5ldC5oIgotCi0jaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNp
bmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNDgsNTYgKzQ2LDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAjaWYgUExBVEZPUk0oV0lOKQogCi1zdGF0aWMgUmV0YWluUHRyPENGSFRUUENv
b2tpZVN0b3JhZ2VSZWY+JiBjb29raWVTdG9yYWdlT3ZlcnJpZGUoKQotewotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+LCBjb29raWVTdG9y
YWdlLCAoKSk7Ci0gICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2U7Ci19Ci0KLSNlbmRpZgotCi1SZXRh
aW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2Uo
TmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCi17Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIGlm
IChSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4mIG92ZXJyaWRlID0gY29va2llU3Rv
cmFnZU92ZXJyaWRlKCkpCi0gICAgICAgIHJldHVybiBvdmVycmlkZTsKLSNlbmRpZgotCi0gICAg
aWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNz
aW9uKCkpCi0gICAgICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4o
QWRvcHRDRiwgd2tDb3B5SFRUUENvb2tpZVN0b3JhZ2Uoc2Vzc2lvbikpOwotCi0jaWYgVVNFKENG
TkVUV09SSykKLSAgICByZXR1cm4gd2tHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UoKTsKLSNl
bHNlCi0gICAgLy8gV2hlbiB1c2luZyBOU1VSTENvbm5lY3Rpb24sIHdlIGFsc28gdXNlIGl0cyBz
aGFyZWQgY29va2llIHN0b3JhZ2UuCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCkK
LXsKLSNpZiBQTEFURk9STShXSU4pCi0gICAgaWYgKFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9y
YWdlUmVmPiYgb3ZlcnJpZGUgPSBjb29raWVTdG9yYWdlT3ZlcnJpZGUoKSkKLSAgICAgICAgcmV0
dXJuIG92ZXJyaWRlOwotI2VuZGlmCi0KLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PmNvb2tpZXNTdHJhdGVneSgpLT5kZWZhdWx0Q29va2llU3RvcmFnZSgpOwotfQotCi0jaWYgUExB
VEZPUk0oV0lOKQotCi12b2lkIG92ZXJyaWRlQ29va2llU3RvcmFnZShDRkhUVFBDb29raWVTdG9y
YWdlUmVmIGNvb2tpZVN0b3JhZ2UpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAg
ICAvLyBGSVhNRTogV2h5IGRvbid0IHdlIHJldGFpbiBpdD8gVGhlIG9ubHkgY2FsbGVyIGlzIGFu
IEFQSSBtZXRob2QgdGhhdCB0YWtlcyBjb29raWUgc3RvcmFnZSBhcyBhIHJhdyBhcmd1bWVudC4K
LSAgICBjb29raWVTdG9yYWdlT3ZlcnJpZGUoKS5hZG9wdENGKGNvb2tpZVN0b3JhZ2UpOwotfQot
Ci1DRkhUVFBDb29raWVTdG9yYWdlUmVmIG92ZXJyaWRlbkNvb2tpZVN0b3JhZ2UoKQotewotICAg
IHJldHVybiBjb29raWVTdG9yYWdlT3ZlcnJpZGUoKS5nZXQoKTsKLX0KLQogc3RhdGljIHZvaWQg
bm90aWZ5Q29va2llc0NoYW5nZWRPbk1haW5UaHJlYWQodm9pZCopCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKQEAgLTEzMCw3ICs3OCw3IEBAIHZvaWQgc3RhcnRPYnNlcnZpbmdDb29r
aWVDaGFuZ2VzKCkKICAgICBDRlJ1bkxvb3BSZWYgcnVuTG9vcCA9IGNvb2tpZVN0b3JhZ2VPYnNl
cnZlclJ1bkxvb3AoKTsKICAgICBBU1NFUlQocnVuTG9vcCk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZI
VFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGRlZmF1bHRDRkhUVFBDb29raWVT
dG9yYWdlKCk7CisgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0
b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNv
b2tpZVN0b3JhZ2UoKTsKICAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7CiAKICAgICBDRkhUVFBD
b29raWVTdG9yYWdlU2NoZWR1bGVXaXRoUnVuTG9vcChjb29raWVTdG9yYWdlLmdldCgpLCBydW5M
b29wLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOwpAQCAtMTQ0LDcgKzkyLDcgQEAgdm9pZCBzdG9w
T2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpCiAgICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBjb29r
aWVTdG9yYWdlT2JzZXJ2ZXJSdW5Mb29wKCk7CiAgICAgQVNTRVJUKHJ1bkxvb3ApOwogCi0gICAg
UmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBkZWZhdWx0
Q0ZIVFRQQ29va2llU3RvcmFnZSgpOworICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdl
UmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFn
ZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCk7CiAgICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwog
CiAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVJlbW92ZU9ic2VydmVyKGNvb2tpZVN0b3JhZ2UuZ2V0
KCksIHJ1bkxvb3AsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSwgbm90aWZ5Q29va2llc0NoYW5nZWQs
IDApOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9y
YWdlQ0ZOZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIENvb2tpZVN0b3JhZ2VDRk5l
dF9oCi0jZGVmaW5lIENvb2tpZVN0b3JhZ2VDRk5ldF9oCi0KLSNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+Ci0KLXR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0b3JhZ2UqICBDRkhU
VFBDb29raWVTdG9yYWdlUmVmOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE5ldHdv
cmtpbmdDb250ZXh0OwotCi1SZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY3VycmVu
dENGSFRUUENvb2tpZVN0b3JhZ2UoTmV0d29ya2luZ0NvbnRleHQqKTsgLy8gV2lsbCBiZSBudWxs
IHdoZW4gdXNpbmcgc2hhcmVkIE5TSFRUUENvb2tpZVN0b3JhZ2UuCi1SZXRhaW5QdHI8Q0ZIVFRQ
Q29va2llU3RvcmFnZVJlZj4gZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsgLy8gRG9lc24n
dCB0YWtlIGN1cnJlbnQgc2Vzc2lvbiBpbnRvIGFjY291bnQuCi0KLSNpZiBQTEFURk9STShXSU4p
Ci0vLyBOZWVkZWQgZm9yIFdlYktpdDEgQVBJIG9ubHkuCi12b2lkIG92ZXJyaWRlQ29va2llU3Rv
cmFnZShDRkhUVFBDb29raWVTdG9yYWdlUmVmKTsKLUNGSFRUUENvb2tpZVN0b3JhZ2VSZWYgb3Zl
cnJpZGVuQ29va2llU3RvcmFnZSgpOwotI2VuZGlmCi0KLX0KLQotI2VuZGlmIC8vIENvb2tpZVN0
b3JhZ2VDRk5ldF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05l
dHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNl
c3Npb24uaCIKKworI2luY2x1ZGUgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKKyNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24oQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBwbGF0Zm9ybVNlc3Npb24pCisgICAgOiBtX3Bs
YXRmb3JtU2Vzc2lvbihwbGF0Zm9ybVNlc3Npb24pCisgICAgLCBtX2lzUHJpdmF0ZShmYWxzZSkK
K3sKK30KKworc3RhdGljIE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBkZWZhdWx0TmV0
d29ya1N0b3JhZ2VTZXNzaW9uKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4sIHNlc3Np
b24sICgpKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKQoreworICAgIC8vIFNldCBhIHByaXZh
dGUgc2Vzc2lvbiBmb3IgdGVzdGluZyB0byBhdm9pZCBpbnRlcmZlcmluZyB3aXRoIGdsb2JhbCBj
b29raWVzLiBUaGlzIHNob3VsZCBiZSBkaWZmZXJlbnQgZnJvbSBwcml2YXRlIGJyb3dzaW5nIHNl
c3Npb24uCisgICAgLy8gRklYTUU6IEl0IGxvb2tzIGxpa2UgY3JlYXRpbmcgYSBuZXcgc2Vzc2lv
biB3aXRoIHRoZSBzYW1lIGlkZW50aWZpZXIgbWF5IGJlIGp1c3QgY3JlYXRpbmcgYSByZWZlcmVu
Y2UgdG8gdGhlIHNhbWUgc3RvcmFnZS4gU2VlIDxyZGFyOi8vcHJvYmxlbS8xMTU3MTQ1MD4gYW5k
IDxyZGFyOi8vcHJvYmxlbS8xMjM4NDM4MD4uCisjaWYgUExBVEZPUk0oTUFDKQorICAgIGRlZmF1
bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSA9IGFkb3B0UHRyKG5ldyBOZXR3b3JrU3RvcmFnZVNl
c3Npb24od2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTVFIoIlByaXZhdGUgV2ViS2l0
IFNlc3Npb24iKSkpKTsKKyNlbHNlCisgICAgZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigp
ID0gYWRvcHRQdHIobmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbih3a0NyZWF0ZVByaXZhdGVTdG9y
YWdlU2Vzc2lvbihDRlNUUigiUHJpdmF0ZSBXZWJLaXQgU2Vzc2lvbiIpLCBkZWZhdWx0TmV0d29y
a1N0b3JhZ2VTZXNzaW9uKCktPnBsYXRmb3JtU2Vzc2lvbigpKSkpOworI2VuZGlmCit9CisKKyNp
ZiBQTEFURk9STShXSU4pCitzdGF0aWMgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+
JiBjb29raWVTdG9yYWdlT3ZlcnJpZGUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmV0
YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+LCBjb29raWVTdG9yYWdlLCAoKSk7CisgICAg
cmV0dXJuIGNvb2tpZVN0b3JhZ2U7Cit9CisKK3ZvaWQgb3ZlcnJpZGVDb29raWVTdG9yYWdlKENG
SFRUUENvb2tpZVN0b3JhZ2VSZWYgY29va2llU3RvcmFnZSkKK3sKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIC8vIEZJWE1FOiBXaHkgZG9uJ3Qgd2UgcmV0YWluIGl0PyBUaGUgb25s
eSBjYWxsZXIgaXMgYW4gQVBJIG1ldGhvZCB0aGF0IHRha2VzIGNvb2tpZSBzdG9yYWdlIGFzIGEg
cmF3IGFyZ3VtZW50LgorICAgIGNvb2tpZVN0b3JhZ2VPdmVycmlkZSgpLmFkb3B0Q0YoY29va2ll
U3RvcmFnZSk7Cit9CisKK0NGSFRUUENvb2tpZVN0b3JhZ2VSZWYgb3ZlcnJpZGVuQ29va2llU3Rv
cmFnZSgpCit7CisgICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2VPdmVycmlkZSgpLmdldCgpOworfQor
I2VuZGlmCisKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpk
ZWZhdWx0U3RvcmFnZVNlc3Npb24oKQoreworICAgIGlmICghZGVmYXVsdE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbigpKQorICAgICAgICBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgPSBhZG9w
dFB0cihuZXcgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKDApKTsKKyAgICByZXR1cm4gKmRlZmF1bHRO
ZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsKK30KKworUGFzc093blB0cjxOZXR3b3JrU3RvcmFnZVNl
c3Npb24+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlKQoreworICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gY2ZJZGVudGlmaWVyID0gU3RyaW5nKGlkZW50aWZpZXJCYXNlICsgIi5Qcml2YXRlQnJv
d3NpbmciKS5jcmVhdGVDRlN0cmluZygpOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIE93blB0
cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IHNlc3Npb24gPSBhZG9wdFB0cihuZXcgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uKHdrQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKGNmSWRlbnRpZmllci5n
ZXQoKSkpKTsKKyNlbHNlCisgICAgT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gc2Vzc2lv
biA9IGFkb3B0UHRyKG5ldyBOZXR3b3JrU3RvcmFnZVNlc3Npb24od2tDcmVhdGVQcml2YXRlU3Rv
cmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpLCBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNz
aW9uKCktPnBsYXRmb3JtU2Vzc2lvbigpKSkpOworI2VuZGlmCisgICAgc2Vzc2lvbi0+bV9pc1By
aXZhdGUgPSB0cnVlOworCisgICAgcmV0dXJuIHNlc3Npb24ucmVsZWFzZSgpOworfQorCitSZXRh
aW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjb29r
aWVTdG9yYWdlKCkgY29uc3QKK3sKKyNpZiBQTEFURk9STShXSU4pCisgICAgaWYgKFJldGFpblB0
cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiYgb3ZlcnJpZGUgPSBjb29raWVTdG9yYWdlT3ZlcnJp
ZGUoKSkKKyAgICAgICAgcmV0dXJuIG92ZXJyaWRlOworI2VuZGlmCisKKyAgICBpZiAobV9wbGF0
Zm9ybVNlc3Npb24pCisgICAgICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFn
ZVJlZj4oQWRvcHRDRiwgd2tDb3B5SFRUUENvb2tpZVN0b3JhZ2UobV9wbGF0Zm9ybVNlc3Npb24u
Z2V0KCkpKTsKKworI2lmIFVTRShDRk5FVFdPUkspCisgICAgcmV0dXJuIHdrR2V0RGVmYXVsdEhU
VFBDb29raWVTdG9yYWdlKCk7CisjZWxzZQorICAgIC8vIFdoZW4gdXNpbmcgTlNVUkxDb25uZWN0
aW9uLCB3ZSBhbHNvIHVzZSBpdHMgc2hhcmVkIGNvb2tpZSBzdG9yYWdlLgorICAgIHJldHVybiAw
OworI2VuZGlmCit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAkocmV2aXNpb24gMTM4
NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjksNiBAQAogCiAjaW5jbHVkZSAi
QXV0aGVudGljYXRpb25DRi5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgi
Ci0jaW5jbHVkZSAiQ29va2llU3RvcmFnZUNGTmV0LmgiCiAjaW5jbHVkZSAiQ3JlZGVudGlhbFN0
b3JhZ2UuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkZv
cm1EYXRhU3RyZWFtQ0ZOZXQuaCIKQEAgLTM4LDYgKzM3LDcgQEAKICNpbmNsdWRlICJMb2FkZXJS
dW5Mb29wQ0YuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdp
c3RyeS5oIgorI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXNwb25zZS5oIgpAQCAtMzk5LDcgKzM5OSw3IEBAIHN0YXRpYyBib29sIHNob3Vs
ZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZVAKIHsKICAgICAvLyBJZiBhIFVSTCBhbHJlYWR5IGhhcyBj
b29raWVzLCB0aGVuIHdlJ2xsIHJlbGF4IHRoZSAzcmQgcGFydHkgY29va2llIHBvbGljeSBhbmQg
YWNjZXB0IG5ldyBjb29raWVzLgogCi0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWY+IGNmQ29va2llU3RvcmFnZSA9IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQp
OworICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjZkNvb2tpZVN0b3JhZ2Ug
PSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKTsKICAgICBDRkhUVFBD
b29raWVTdG9yYWdlQWNjZXB0UG9saWN5IGNvb2tpZUFjY2VwdFBvbGljeSA9IENGSFRUUENvb2tp
ZVN0b3JhZ2VHZXRDb29raWVBY2NlcHRQb2xpY3koY2ZDb29raWVTdG9yYWdlLmdldCgpKTsKIAog
ICAgIGlmIChjb29raWVBY2NlcHRQb2xpY3kgIT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBv
bGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluKQpAQCAtNTA2LDcgKzUwNiw3IEBAIGJvb2wg
UmVzb3VyY2VIYW5kbGU6OnN0YXJ0KE5ldHdvcmtpbmdDb24KICAgICBpZiAoIWNvbnRleHQtPmlz
VmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgZC0+bV9zdG9yYWdlU2Vzc2lv
biA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCk7CisgICAgZC0+bV9zdG9yYWdlU2Vzc2lvbiA9
IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCk7CiAKICAgICBib29s
IHNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlID0gIWNsaWVudCgpIHx8IGNsaWVudCgpLT5zaG91
bGRVc2VDcmVkZW50aWFsU3RvcmFnZSh0aGlzKTsKIApAQCAtNzQxLDcgKzc0MSw3IEBAIHZvaWQg
UmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJjZVN5bmNocm8KIAogICAgIFJlZlB0cjxSZXNvdXJj
ZUhhbmRsZT4gaGFuZGxlID0gYWRvcHRSZWYobmV3IFJlc291cmNlSGFuZGxlKHJlcXVlc3QsIGNs
aWVudC5nZXQoKSwgZmFsc2UgLypkZWZlcnNMb2FkaW5nKi8sIHRydWUgLypzaG91bGRDb250ZW50
U25pZmYqLykpOwogCi0gICAgaGFuZGxlLT5kLT5tX3N0b3JhZ2VTZXNzaW9uID0gY29udGV4dC0+
c3RvcmFnZVNlc3Npb24oKTsKKyAgICBoYW5kbGUtPmQtPm1fc3RvcmFnZVNlc3Npb24gPSBjb250
ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLnBsYXRmb3JtU2Vzc2lvbigpOwogCiAgICAgaWYgKGhhbmRs
ZS0+ZC0+bV9zY2hlZHVsZWRGYWlsdXJlVHlwZSAhPSBOb0ZhaWx1cmUpIHsKICAgICAgICAgZXJy
b3IgPSBjb250ZXh0LT5ibG9ja2VkRXJyb3IocmVxdWVzdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL0Nvb2tpZUphckNocm9taXVtLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL0Nvb2tpZUph
ckNocm9taXVtLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jaHJvbWl1bS9Db29raWVKYXJDaHJvbWl1bS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQxLDU1ICs0MSw1NSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgc2V0Q29v
a2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHlGb3JDb29raWVzLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3Ry
KQordm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgY29va2llU3RyKQogewotICAgIGlmICghY29udGV4dCkKKyAgICBpZiAo
IXNlc3Npb24uY29udGV4dCgpKQogICAgICAgICByZXR1cm47Ci0gICAgV2ViS2l0OjpXZWJDb29r
aWVKYXIqIGNvb2tpZUphciA9IGNvbnRleHQtPmNvb2tpZUphcigpOworICAgIFdlYktpdDo6V2Vi
Q29va2llSmFyKiBjb29raWVKYXIgPSBzZXNzaW9uLmNvbnRleHQoKS0+Y29va2llSmFyKCk7CiAg
ICAgaWYgKGNvb2tpZUphcikKICAgICAgICAgY29va2llSmFyLT5zZXRDb29raWUodXJsLCBmaXJz
dFBhcnR5Rm9yQ29va2llcywgY29va2llU3RyKTsKIH0KIAotU3RyaW5nIGNvb2tpZXNGb3JET00o
TmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHlGb3JDb29r
aWVzLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHlGb3JDb29raWVz
LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgaWYgKCFjb250ZXh0KQorICAgIGlmICghc2Vzc2lv
bi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICBTdHJpbmcgcmVzdWx0
OwotICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVKYXIgPSBjb250ZXh0LT5jb29raWVK
YXIoKTsKKyAgICBXZWJLaXQ6OldlYkNvb2tpZUphciogY29va2llSmFyID0gc2Vzc2lvbi5jb250
ZXh0KCktPmNvb2tpZUphcigpOwogICAgIGlmIChjb29raWVKYXIpCiAgICAgICAgIHJlc3VsdCA9
IGNvb2tpZUphci0+Y29va2llcyh1cmwsIGZpcnN0UGFydHlGb3JDb29raWVzKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCi1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0
d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHlGb3JDb29raWVz
LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5Rm9yQ29va2llcywgY29uc3QgS1VSTCYgdXJsKQogewotICAgIGlmICghY29udGV4dCkKKyAg
ICBpZiAoIXNlc3Npb24uY29udGV4dCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAg
U3RyaW5nIHJlc3VsdDsKLSAgICBXZWJLaXQ6OldlYkNvb2tpZUphciogY29va2llSmFyID0gY29u
dGV4dC0+Y29va2llSmFyKCk7CisgICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9
IHNlc3Npb24uY29udGV4dCgpLT5jb29raWVKYXIoKTsKICAgICBpZiAoY29va2llSmFyKQogICAg
ICAgICByZXN1bHQgPSBjb29raWVKYXItPmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHVy
bCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wg
Y29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGNv
b2tpZVVSTCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMpCitib29sIGNvb2tpZXNF
bmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYg
Y29va2llVVJMLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcykKIHsKICAgICBib29s
IHJlc3VsdCA9IGZhbHNlOwotICAgIGlmICghY29udGV4dCkKKyAgICBpZiAoIXNlc3Npb24uY29u
dGV4dCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIFdlYktpdDo6V2ViQ29va2llSmFy
KiBjb29raWVKYXIgPSBjb250ZXh0LT5jb29raWVKYXIoKTsKKyAgICBXZWJLaXQ6OldlYkNvb2tp
ZUphciogY29va2llSmFyID0gc2Vzc2lvbi5jb250ZXh0KCktPmNvb2tpZUphcigpOwogICAgIGlm
IChjb29raWVKYXIpCiAgICAgICAgIHJlc3VsdCA9IGNvb2tpZUphci0+Y29va2llc0VuYWJsZWQo
Y29va2llVVJMLCBmaXJzdFBhcnR5Rm9yQ29va2llcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2ll
PiYgcmF3Q29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBL
VVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewogICAgIHJhd0Nvb2tpZXMu
Y2xlYXIoKTsKLSAgICBpZiAoIWNvbnRleHQpCisgICAgaWYgKCFzZXNzaW9uLmNvbnRleHQoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFdlYktpdDo6V2ViVmVjdG9yPFdlYktpdDo6V2Vi
Q29va2llPiB3ZWJDb29raWVzOwotICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVKYXIg
PSBjb250ZXh0LT5jb29raWVKYXIoKTsKKyAgICBXZWJLaXQ6OldlYkNvb2tpZUphciogY29va2ll
SmFyID0gc2Vzc2lvbi5jb250ZXh0KCktPmNvb2tpZUphcigpOwogICAgIGlmIChjb29raWVKYXIp
CiAgICAgICAgIGNvb2tpZUphci0+cmF3Q29va2llcyh1cmwsIGZpcnN0UGFydHlGb3JDb29raWVz
LCB3ZWJDb29raWVzKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgd2ViQ29va2llcy5z
aXplKCk7ICsraSkgewpAQCAtMTAwLDI2ICsxMDAsMjYgQEAgYm9vbCBnZXRSYXdDb29raWVzKE5l
dHdvcmtpbmdDb250ZXh0KiBjbwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIGRlbGV0ZUNv
b2tpZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVO
YW1lKQogewotICAgIGlmICghY29udGV4dCkKKyAgICBpZiAoIXNlc3Npb24uY29udGV4dCgpKQog
ICAgICAgICByZXR1cm47Ci0gICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9IGNv
bnRleHQtPmNvb2tpZUphcigpOworICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVKYXIg
PSBzZXNzaW9uLmNvbnRleHQoKS0+Y29va2llSmFyKCk7CiAgICAgaWYgKGNvb2tpZUphcikKICAg
ICAgICAgY29va2llSmFyLT5kZWxldGVDb29raWUodXJsLCBjb29raWVOYW1lKTsKIH0KIAotdm9p
ZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCogLypjb250ZXh0Ki8s
IEhhc2hTZXQ8U3RyaW5nPiYgLypob3N0bmFtZXMqLykKK3ZvaWQgZ2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNldDxTdHJpbmc+JiAvKmhv
c3RuYW1lcyovKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZv
aWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtpbmdDb250ZXh0KiAvKmNvbnRleHQq
LywgY29uc3QgU3RyaW5nJiAvKmhvc3RuYW1lKi8pCit2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0
bmFtZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBTdHJpbmcmIC8qaG9zdG5h
bWUqLykKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQogCi12b2lkIGRl
bGV0ZUFsbENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIC8qY29udGV4dCovKQordm9pZCBkZWxl
dGVBbGxDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpCiB7CiAgICAgLy8gRklY
TUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2hyb21pdW0vUmVzb3VyY2VIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vUmVzb3VyY2VIYW5kbGUuY3BwCShy
ZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9t
aXVtL1Jlc291cmNlSGFuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsOSArMzEsMTIgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogCisjaW5j
bHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRs
ZUludGVybmFsLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAiUmVz
b3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIldy
YXBwZWRSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJXcmFwcGVkUmVzb3VyY2VSZXNwb25z
ZS5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUph
ckN1cmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVKYXJDdXJsLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw1MCArMjcsNTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4gY29va2llSmFyOwogCi12b2lkIHNldENvb2tpZXNGcm9tRE9NKE5l
dHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKK3ZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1
ZSkKIHsKICAgICBjb29raWVKYXIuc2V0KHVybC5zdHJpbmcoKSwgdmFsdWUpOwogfQogCi1TdHJp
bmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IEtVUkwmLCBjb25zdCBL
VVJMJiB1cmwpCitTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQogewogICAgIHJldHVybiBjb29raWVK
YXIuZ2V0KHVybC5zdHJpbmcoKSk7CiB9CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBh
cnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFy
dHkqLywgY29uc3QgS1VSTCYgdXJsKQogewogICAgIC8vIEZJWE1FOiBpbmNsdWRlIEh0dHBPbmx5
IGNvb2tpZS4KICAgICByZXR1cm4gY29va2llSmFyLmdldCh1cmwuc3RyaW5nKCkpOwogfQogCi1i
b29sIGNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJM
JiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKK2Jvb2wgY29va2llc0VuYWJs
ZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5
Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wg
Z2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypm
aXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8sIFZlY3RvcjxDb29raWU+JiByYXdDb29r
aWVzKQorYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovLCBWZWN0b3I8Q29v
a2llPiYgcmF3Q29va2llcykKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAog
ICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKICAgICByZXR1cm4gZmFsc2U7IC8vIHJldHVybiB0cnVl
IHdoZW4gaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRl
eHQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKK3ZvaWQgZGVsZXRlQ29va2llKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQogewog
ICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZ2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1l
cykKK3ZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5
ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29y
a2luZ0NvbnRleHQqLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQordm9pZCBkZWxldGVDb29raWVz
Rm9ySG9zdG5hbWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgU3RyaW5nJiBo
b3N0bmFtZSkKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQogCi12b2lk
IGRlbGV0ZUFsbENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqKQordm9pZCBkZWxldGVBbGxDb29r
aWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5
ZXQgaW1wbGVtZW50ZWQKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCShyZXZpc2lvbiAx
Mzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VI
YW5kbGVDdXJsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlLmgiCiAKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgor
I2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUludGVybmFsLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VIYW5kbGVNYW5hZ2VyLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9Db29raWVKYXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDkgKzMxLDggQEAKICNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2lt
cG9ydCAiQ29va2llLmgiCiAjaW1wb3J0ICJDb29raWVTdG9yYWdlLmgiCi0jaW1wb3J0ICJDb29r
aWVTdG9yYWdlQ0ZOZXQuaCIKICNpbXBvcnQgIktVUkwuaCIKLSNpbXBvcnQgIk5ldHdvcmtpbmdD
b250ZXh0LmgiCisjaW1wb3J0ICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKICNpbXBvcnQgIldl
YkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjIsMzEg
KzYxLDI5IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNBcnJheT4gZmlsdGVyQ29va2llcygKICAgICBy
ZXR1cm4gZmlsdGVyZWRDb29raWVzOwogfQogCi1TdHJpbmcgY29va2llc0ZvckRPTShOZXR3b3Jr
aW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmlu
ZyBjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CiAKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3Rv
cmFnZSA9IGNvbnRleHQgPyBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRl
ZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCk7Ci0gICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRU
UENvb2tpZXNGb3JVUkwoY29va2llU3RvcmFnZS5nZXQoKSwgdXJsKTsKKyAgICBOU0FycmF5ICpj
b29raWVzID0gd2tIVFRQQ29va2llc0ZvclVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQo
KSwgdXJsKTsKICAgICByZXR1cm4gW1tOU0hUVFBDb29raWUgcmVxdWVzdEhlYWRlckZpZWxkc1dp
dGhDb29raWVzOmZpbHRlckNvb2tpZXMoY29va2llcykuZ2V0KCldIG9iamVjdEZvcktleTpAIkNv
b2tpZSJdOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKICAgICByZXR1cm4gU3Ry
aW5nKCk7CiB9CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3Jr
aW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtV
UkwmIHVybCkKK1N0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBj
b25zdCBLVVJMJiB1cmwpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0g
ICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250
ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQ
Q29va2llU3RvcmFnZSgpOwotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hUVFBDb29raWVzRm9y
VVJMKGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHVybCk7CisgICAgTlNBcnJheSAqY29va2llcyA9IHdr
SFRUUENvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHVybCk7CiAg
ICAgcmV0dXJuIFtbTlNIVFRQQ29va2llIHJlcXVlc3RIZWFkZXJGaWVsZHNXaXRoQ29va2llczpj
b29raWVzXSBvYmplY3RGb3JLZXk6QCJDb29raWUiXTsKIAogICAgIEVORF9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi12b2lkIHNldENvb2tpZXNGcm9t
RE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyKQordm9pZCBzZXRDb29raWVz
RnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwm
IGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpCiB7
CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCkBAIC0xMDMsMzEgKzEwMCwyOCBA
QCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0CiAgICAgUmV0YWluUHRy
PE5TQXJyYXk+IGZpbHRlcmVkQ29va2llcyA9IGZpbHRlckNvb2tpZXMoW05TSFRUUENvb2tpZSBj
b29raWVzV2l0aFJlc3BvbnNlSGVhZGVyRmllbGRzOltOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdp
dGhPYmplY3Q6Y29va2llU3RyaW5nIGZvcktleTpAIlNldC1Db29raWUiXSBmb3JVUkw6Y29va2ll
VVJMXSk7CiAgICAgQVNTRVJUKFtmaWx0ZXJlZENvb2tpZXMuZ2V0KCkgY291bnRdIDw9IDEpOwog
Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBj
b250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZI
VFRQQ29va2llU3RvcmFnZSgpOwotICAgIHdrU2V0SFRUUENvb2tpZXNGb3JVUkwoY29va2llU3Rv
cmFnZS5nZXQoKSwgZmlsdGVyZWRDb29raWVzLmdldCgpLCBjb29raWVVUkwsIGZpcnN0UGFydHkp
OworICAgIHdrU2V0SFRUUENvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0
KCksIGZpbHRlcmVkQ29va2llcy5nZXQoKSwgY29va2llVVJMLCBmaXJzdFBhcnR5KTsKIAogICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0
d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25z
dCBLVVJMJiAvKnVybCovKQorYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJM
JiAvKnVybCovKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIFJl
dGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/
IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tp
ZVN0b3JhZ2UoKTsKLSAgICBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kgY29va2llQWNjZXB0UG9s
aWN5ID0gc3RhdGljX2Nhc3Q8TlNIVFRQQ29va2llQWNjZXB0UG9saWN5Pih3a0dldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFnZS5nZXQoKSkpOworICAgIE5TSFRUUENvb2tpZUFj
Y2VwdFBvbGljeSBjb29raWVBY2NlcHRQb2xpY3kgPSBzdGF0aWNfY2FzdDxOU0hUVFBDb29raWVB
Y2NlcHRQb2xpY3k+KHdrR2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShzZXNzaW9uLmNvb2tpZVN0
b3JhZ2UoKS5nZXQoKSkpOwogICAgIHJldHVybiBjb29raWVBY2NlcHRQb2xpY3kgPT0gTlNIVFRQ
Q29va2llQWNjZXB0UG9saWN5QWx3YXlzIHx8IGNvb2tpZUFjY2VwdFBvbGljeSA9PSBOU0hUVFBD
b29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbjsKIAogICAgIEVORF9C
TE9DS19PQkpDX0VYQ0VQVElPTlM7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIGdldFJh
d0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQ
YXJ0eSovLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9v
bCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4m
IHJhd0Nvb2tpZXMpCiB7CiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsKIAotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVm
PiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNv
bnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBOU0FycmF5ICpjb29r
aWVzID0gd2tIVFRQQ29va2llc0ZvclVSTChjb29raWVTdG9yYWdlLmdldCgpLCB1cmwpOworICAg
IE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hUVFBDb29raWVzRm9yVVJMKHNlc3Npb24uY29va2llU3Rv
cmFnZSgpLmdldCgpLCB1cmwpOwogICAgIE5TVUludGVnZXIgY291bnQgPSBbY29va2llcyBjb3Vu
dF07CiAgICAgcmF3Q29va2llcy5yZXNlcnZlQ2FwYWNpdHkoY291bnQpOwogICAgIGZvciAoTlNV
SW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKQEAgLTE0MSwxMiArMTM1LDEyIEBAIGJv
b2wgZ2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY28KICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBkZWxldGVDb29raWUo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElP
TlM7CiAKICAgICBOU1VSTCAqY29va2llVVJMID0gdXJsOwotICAgIFJldGFpblB0cjxDRkhUVFBD
b29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBD
b29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKKyAg
ICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IHNlc3Np
b24uY29va2llU3RvcmFnZSgpOwogICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hUVFBDb29raWVz
Rm9yVVJMKGNvb2tpZVN0b3JhZ2UuZ2V0KCksIGNvb2tpZVVSTCk7CiAKICAgICBOU1N0cmluZyAq
Y29va2llTmFtZVN0cmluZyA9IGNvb2tpZU5hbWU7CkBAIC0xNjEsMTIgKzE1NSwxMSBAQCB2b2lk
IGRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCogY29uCiAgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKIH0KIAotdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5n
Q29udGV4dCogY29udGV4dCwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCit2b2lkIGdldEhv
c3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
SGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENF
UFRJT05TOwogCi0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0
b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBk
ZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hU
VFBDb29raWVzKGNvb2tpZVN0b3JhZ2UuZ2V0KCkpOworICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3
a0hUVFBDb29raWVzKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpKTsKICAgICAKICAgICBm
b3IgKE5TSFRUUENvb2tpZSogY29va2llIGluIGNvb2tpZXMpCiAgICAgICAgIGhvc3RuYW1lcy5h
ZGQoW2Nvb2tpZSBkb21haW5dKTsKQEAgLTE3NCwxMSArMTY3LDExIEBAIHZvaWQgZ2V0SG9zdG5h
bWVzV2l0aENvb2tpZXMoTmV0d29ya2luZ0MKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05T
OwogfQogCi12b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShOZXR3b3JraW5nQ29udGV4dCog
Y29udGV4dCwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llc0Zvckhv
c3RuYW1lKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgU3RyaW5n
JiBob3N0bmFtZSkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBS
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQg
PyBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29r
aWVTdG9yYWdlKCk7CisgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tp
ZVN0b3JhZ2UgPSBzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKTsKICAgICBOU0FycmF5ICpjb29raWVz
ID0gd2tIVFRQQ29va2llcyhjb29raWVTdG9yYWdlLmdldCgpKTsKICAgICBpZiAoIWNvb2tpZXMp
CiAgICAgICAgIHJldHVybjsKQEAgLTE5MSwxMCArMTg0LDkgQEAgdm9pZCBkZWxldGVDb29raWVz
Rm9ySG9zdG5hbWUoTmV0d29ya2luZwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9
CiAKLXZvaWQgZGVsZXRlQWxsQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCkKK3Zv
aWQgZGVsZXRlQWxsQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24p
CiB7Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2Ug
PSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0
Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAgIHdrRGVsZXRlQWxsSFRUUENvb2tpZXMoY29va2ll
U3RvcmFnZS5nZXQoKSk7CisgICAgd2tEZWxldGVBbGxIVFRQQ29va2llcyhzZXNzaW9uLmNvb2tp
ZVN0b3JhZ2UoKS5nZXQoKSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL0Nvb2tpZVN0b3JhZ2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llU3RvcmFnZU1hYy5tbQkocmV2aXNpb24g
MTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llU3Rv
cmFnZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUsNyArMjUsNiBAQAogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiQ29va2llU3RvcmFnZS5oIgotI2luY2x1ZGUgIkNvb2tpZVN0
b3JhZ2VDRk5ldC5oIgogCiAjaW1wb3J0ICJSZXNvdXJjZUhhbmRsZS5oIgogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhh
bmRsZU1hYy5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDcg
KzMzLDYgQEAKICNpbXBvcnQgIkJsb2JSZWdpc3RyeS5oIgogI2ltcG9ydCAiQmxvY2tFeGNlcHRp
b25zLmgiCiAjaW1wb3J0ICJDb29raWVTdG9yYWdlLmgiCi0jaW1wb3J0ICJDb29raWVTdG9yYWdl
Q0ZOZXQuaCIKICNpbXBvcnQgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAjaW1wb3J0ICJDYWNoZWRS
ZXNvdXJjZUxvYWRlci5oIgogI2ltcG9ydCAiRW1wdHlQcm90b2NvbERlZmluaXRpb25zLmgiCkBA
IC00Miw2ICs0MSw3IEBACiAjaW1wb3J0ICJGcmFtZUxvYWRlci5oIgogI2ltcG9ydCAiTG9nZ2lu
Zy5oIgogI2ltcG9ydCAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2ltcG9ydCAiTmV0d29ya2luZ0Nv
bnRleHQuaCIKICNpbXBvcnQgIlBhZ2UuaCIKICNpbXBvcnQgIlJlc291cmNlRXJyb3IuaCIKICNp
bXBvcnQgIlJlc291cmNlUmVzcG9uc2UuaCIKQEAgLTE0Nyw3ICsxNDcsNyBAQCBzdGF0aWMgYm9v
bCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVQCiB7CiAgICAgLy8gSWYgYSBVUkwgYWxyZWFk
eSBoYXMgY29va2llcywgdGhlbiB3ZSdsbCByZWxheCB0aGUgM3JkIHBhcnR5IGNvb2tpZSBwb2xp
Y3kgYW5kIGFjY2VwdCBuZXcgY29va2llcy4KIAotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVT
dG9yYWdlUmVmPiBjZkNvb2tpZVN0b3JhZ2UgPSBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShj
b250ZXh0KTsKKyAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY2ZDb29raWVT
dG9yYWdlID0gY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCk7CiAgICAg
TlNIVFRQQ29va2llQWNjZXB0UG9saWN5IGNvb2tpZUFjY2VwdFBvbGljeSA9IHN0YXRpY19jYXN0
PE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeT4od2tHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNm
Q29va2llU3RvcmFnZS5nZXQoKSkpOwogCiAgICAgaWYgKGNvb2tpZUFjY2VwdFBvbGljeSAhPSBO
U0hUVFBDb29raWVBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbikKQEAgLTIz
MCw3ICsyMzAsNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydChOZXR3b3JraW5nQ29uCiAg
ICAgaWYgKCFjb250ZXh0LT5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGQtPm1fc3RvcmFnZVNlc3Npb24gPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpOworICAgIGQt
Pm1fc3RvcmFnZVNlc3Npb24gPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLnBsYXRmb3JtU2Vz
c2lvbigpOwogCiAgICAgQVNTRVJUKCFkLT5tX3Byb3h5KTsKICAgICBkLT5tX3Byb3h5LmFkb3B0
TlMod2tDcmVhdGVOU1VSTENvbm5lY3Rpb25EZWxlZ2F0ZVByb3h5KCkpOwpAQCAtMzk2LDcgKzM5
Niw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmxvYWRSZXNvdXJjZVN5bmNocm8KIAogICAgIFJl
ZlB0cjxSZXNvdXJjZUhhbmRsZT4gaGFuZGxlID0gYWRvcHRSZWYobmV3IFJlc291cmNlSGFuZGxl
KHJlcXVlc3QsIGNsaWVudC5nZXQoKSwgZmFsc2UgLypkZWZlcnNMb2FkaW5nKi8sIHRydWUgLypz
aG91bGRDb250ZW50U25pZmYqLykpOwogCi0gICAgaGFuZGxlLT5kLT5tX3N0b3JhZ2VTZXNzaW9u
ID0gY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKTsKKyAgICBoYW5kbGUtPmQtPm1fc3RvcmFnZVNl
c3Npb24gPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLnBsYXRmb3JtU2Vzc2lvbigpOwogCiAg
ICAgaWYgKGNvbnRleHQgJiYgaGFuZGxlLT5kLT5tX3NjaGVkdWxlZEZhaWx1cmVUeXBlICE9IE5v
RmFpbHVyZSkgewogICAgICAgICBlcnJvciA9IGNvbnRleHQtPmJsb2NrZWRFcnJvcihyZXF1ZXN0
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvQ29va2llSmFyUXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvQ29v
a2llSmFyUXQuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3F0L0Nvb2tpZUphclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTUgKzQ2
LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIFNoYXJlZENvb2tpZUphclF0KiBz
X3NoYXJlZENvb2tpZUphclF0ID0gMDsKIAotdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3Jr
aW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBRTmV0d29ya0Nvb2tp
ZUphciogamFyID0gY29udGV4dCA/IGNvbnRleHQtPm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCktPmNv
b2tpZUphcigpIDogU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOworICAgIFFOZXR3b3JrQ29v
a2llSmFyKiBqYXIgPSBzZXNzaW9uLmNvbnRleHQoKSA/IHNlc3Npb24uY29udGV4dCgpLT5uZXR3
b3JrQWNjZXNzTWFuYWdlcigpLT5jb29raWVKYXIoKSA6IFNoYXJlZENvb2tpZUphclF0OjpzaGFy
ZWQoKTsKICAgICBpZiAoIWphcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgUVVybCB1cmxGb3JD
b29raWVzKHVybCk7CiAgICAgUVVybCBmaXJzdFBhcnR5VXJsKGZpcnN0UGFydHkpOwotICAgIGlm
ICghdGhpcmRQYXJ0eUNvb2tpZVBvbGljeVBlcm1pdHMoY29udGV4dCwgdXJsRm9yQ29va2llcywg
Zmlyc3RQYXJ0eVVybCkpCisgICAgaWYgKCF0aGlyZFBhcnR5Q29va2llUG9saWN5UGVybWl0cyhz
ZXNzaW9uLmNvbnRleHQoKSwgdXJsRm9yQ29va2llcywgZmlyc3RQYXJ0eVVybCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIFFMaXN0PFFOZXR3b3JrQ29va2llPiBjb29raWVzID0gUU5ldHdvcmtD
b29raWU6OnBhcnNlQ29va2llcyhRU3RyaW5nKHZhbHVlKS50b0xhdGluMSgpKTsKQEAgLTY5LDE1
ICs2OSwxNSBAQCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0CiAgICAg
amFyLT5zZXRDb29raWVzRnJvbVVybChjb29raWVzLCB1cmxGb3JDb29raWVzKTsKIH0KIAotU3Ry
aW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwm
IGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsKQogewotICAgIFFOZXR3b3JrQ29va2llSmFyKiBqYXIgPSBjb250ZXh0
ID8gY29udGV4dC0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBTaGFyZWRD
b29raWVKYXJRdDo6c2hhcmVkKCk7CisgICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IHNlc3Np
b24uY29udGV4dCgpID8gc2Vzc2lvbi5jb250ZXh0KCktPm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCkt
PmNvb2tpZUphcigpIDogU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOwogICAgIGlmICghamFy
KQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBRVXJsIHVybEZvckNvb2tpZXModXJs
KTsKICAgICBRVXJsIGZpcnN0UGFydHlVcmwoZmlyc3RQYXJ0eSk7Ci0gICAgaWYgKCF0aGlyZFBh
cnR5Q29va2llUG9saWN5UGVybWl0cyhjb250ZXh0LCB1cmxGb3JDb29raWVzLCBmaXJzdFBhcnR5
VXJsKSkKKyAgICBpZiAoIXRoaXJkUGFydHlDb29raWVQb2xpY3lQZXJtaXRzKHNlc3Npb24uY29u
dGV4dCgpLCB1cmxGb3JDb29raWVzLCBmaXJzdFBhcnR5VXJsKSkKICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwogCiAgICAgUUxpc3Q8UU5ldHdvcmtDb29raWU+IGNvb2tpZXMgPSBqYXItPmNvb2tp
ZXNGb3JVcmwodXJsRm9yQ29va2llcyk7CkBAIC05NCw5ICs5NCw5IEBAIFN0cmluZyBjb29raWVz
Rm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiAKICAgICByZXR1cm4gcmVzdWx0Q29va2llcy5qb2lu
KFFMYXRpbjFTdHJpbmcoIjsgIikpOwogfQogCi1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQ
YXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAv
KmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQogewotICAgIFFOZXR3b3JrQ29va2llSmFy
KiBqYXIgPSBjb250ZXh0ID8gY29udGV4dC0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2ll
SmFyKCkgOiBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CisgICAgUU5ldHdvcmtDb29raWVK
YXIqIGphciA9IHNlc3Npb24uY29udGV4dCgpID8gc2Vzc2lvbi5jb250ZXh0KCktPm5ldHdvcmtB
Y2Nlc3NNYW5hZ2VyKCktPmNvb2tpZUphcigpIDogU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgp
OwogICAgIGlmICghamFyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKQEAgLTExMSw0MyAr
MTExLDQzIEBAIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXQKICAgICBy
ZXR1cm4gcmVzdWx0Q29va2llcy5qb2luKFFMYXRpbjFTdHJpbmcoIjsgIikpOwogfQogCi1ib29s
IGNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiAv
KmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKK2Jvb2wgY29va2llc0VuYWJsZWQo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0
UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKIHsKLSAgICBRTmV0d29ya0Nvb2tpZUphciog
amFyID0gY29udGV4dCA/IGNvbnRleHQtPm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCktPmNvb2tpZUph
cigpIDogU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOworICAgIFFOZXR3b3JrQ29va2llSmFy
KiBqYXIgPSBzZXNzaW9uLmNvbnRleHQoKSA/IHNlc3Npb24uY29udGV4dCgpLT5uZXR3b3JrQWNj
ZXNzTWFuYWdlcigpLT5jb29raWVKYXIoKSA6IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsK
ICAgICByZXR1cm4gISFqYXI7CiB9CiAKLWJvb2wgZ2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29u
dGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8q
dXJsKi8sIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBnZXRSYXdDb29raWVzKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBh
cnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8sIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQog
ewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiAgICAgcmF3Q29va2llcy5jbGVh
cigpOwogICAgIHJldHVybiBmYWxzZTsgLy8gcmV0dXJuIHRydWUgd2hlbiBpbXBsZW1lbnRlZAog
fQogCi12b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmKQordm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5
ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3Jr
aW5nQ29udGV4dCogY29udGV4dCwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCit2b2lkIGdl
dEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChjb250
ZXh0LCAhY29udGV4dCk7IC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9yIGNvb2tpZSBqYXJzIG90
aGVyIHRoYW4gdGhlIHNoYXJlZCBvbmUuCisgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uLCAhc2Vz
c2lvbi5jb250ZXh0KCkpOyAvLyBOb3QgeWV0IGltcGxlbWVudGVkIGZvciBjb29raWUgamFycyBv
dGhlciB0aGFuIHRoZSBzaGFyZWQgb25lLgogICAgIFNoYXJlZENvb2tpZUphclF0KiBqYXIgPSBT
aGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgaWYgKGphcikKICAgICAgICAgamFyLT5n
ZXRIb3N0bmFtZXNXaXRoQ29va2llcyhob3N0bmFtZXMpOwogfQogCi12b2lkIGRlbGV0ZUNvb2tp
ZXNGb3JIb3N0bmFtZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBo
b3N0bmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKLSAgICBBU1NF
UlRfVU5VU0VEKGNvbnRleHQsICFjb250ZXh0KTsgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBmb3Ig
Y29va2llIGphcnMgb3RoZXIgdGhhbiB0aGUgc2hhcmVkIG9uZS4KKyAgICBBU1NFUlRfVU5VU0VE
KHNlc3Npb24sICFzZXNzaW9uLmNvbnRleHQoKSk7IC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9y
IGNvb2tpZSBqYXJzIG90aGVyIHRoYW4gdGhlIHNoYXJlZCBvbmUuCiAgICAgU2hhcmVkQ29va2ll
SmFyUXQqIGphciA9IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKICAgICBpZiAoamFyKQog
ICAgICAgICBqYXItPmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShob3N0bmFtZSk7CiB9CiAKLXZv
aWQgZGVsZXRlQWxsQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCkKK3ZvaWQgZGVs
ZXRlQWxsQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24pCiB7Ci0g
ICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCAhY29udGV4dCk7IC8vIE5vdCB5ZXQgaW1wbGVtZW50
ZWQgZm9yIGNvb2tpZSBqYXJzIG90aGVyIHRoYW4gdGhlIHNoYXJlZCBvbmUuCisgICAgQVNTRVJU
X1VOVVNFRChzZXNzaW9uLCAhc2Vzc2lvbi5jb250ZXh0KCkpOyAvLyBOb3QgeWV0IGltcGxlbWVu
dGVkIGZvciBjb29raWUgamFycyBvdGhlciB0aGFuIHRoZSBzaGFyZWQgb25lLgogICAgIFNoYXJl
ZENvb2tpZUphclF0KiBqYXIgPSBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgaWYg
KGphcikKICAgICAgICAgamFyLT5kZWxldGVBbGxDb29raWVzKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlI
YW5kbGVyLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0
LDYgKzI0LDcgQEAKICNpbmNsdWRlICJCbG9iRGF0YS5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJz
LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIk5ldHdvcmtpbmdD
b250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29v
a2llSmFyU291cC5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIs
OSArMzIsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgU291cENvb2tpZUph
ciogY29va2llSmFyRm9yQ29udGV4dChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCkKK3N0YXRp
YyBTb3VwQ29va2llSmFyKiBjb29raWVKYXJGb3JTZXNzaW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbikKIHsKLSAgICByZXR1cm4gU09VUF9DT09LSUVfSkFSKHNvdXBfc2Vz
c2lvbl9nZXRfZmVhdHVyZShjb250ZXh0LT5zb3VwU2Vzc2lvbigpLCBTT1VQX1RZUEVfQ09PS0lF
X0pBUikpOworICAgIGlmICghc2Vzc2lvbi5jb250ZXh0KCkpCisgICAgICAgIHJldHVybiBzb3Vw
Q29va2llSmFyKCk7CisgICAgcmV0dXJuIFNPVVBfQ09PS0lFX0pBUihzb3VwX3Nlc3Npb25fZ2V0
X2ZlYXR1cmUoc2Vzc2lvbi5jb250ZXh0KCktPnNvdXBTZXNzaW9uKCksIFNPVVBfVFlQRV9DT09L
SUVfSkFSKSk7CiB9CiAKIHN0YXRpYyBHUmVmUHRyPFNvdXBDb29raWVKYXI+JiBkZWZhdWx0Q29v
a2llSmFyKCkKQEAgLTczLDkgKzc1LDkgQEAgc3RhdGljIGlubGluZSBib29sIGh0dHBPbmx5Q29v
a2llRXhpc3RzKAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBzZXRDb29raWVzRnJvbURP
TShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBzZXRDb29raWVzRnJvbURP
TShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBTb3Vw
Q29va2llSmFyKiBqYXIgPSBjb250ZXh0ID8gY29va2llSmFyRm9yQ29udGV4dChjb250ZXh0KSA6
IHNvdXBDb29raWVKYXIoKTsKKyAgICBTb3VwQ29va2llSmFyKiBqYXIgPSBjb29raWVKYXJGb3JT
ZXNzaW9uKHNlc3Npb24pOwogICAgIGlmICghamFyKQogICAgICAgICByZXR1cm47CiAKQEAgLTEw
Nyw5ICsxMDksOSBAQCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0CiAg
ICAgc291cF9jb29raWVzX2ZyZWUoZXhpc3RpbmdDb29raWVzKTsKIH0KIAotc3RhdGljIFN0cmlu
ZyBjb29raWVzRm9yQ29udGV4dChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VS
TCYgdXJsLCBib29sIGZvckhUVFBIZWFkZXIpCitzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JTZXNz
aW9uKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJs
LCBib29sIGZvckhUVFBIZWFkZXIpCiB7Ci0gICAgU291cENvb2tpZUphciogamFyID0gY29udGV4
dCA/IGNvb2tpZUphckZvckNvbnRleHQoY29udGV4dCkgOiBzb3VwQ29va2llSmFyKCk7CisgICAg
U291cENvb2tpZUphciogamFyID0gY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKICAgICBp
ZiAoIWphcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCkBAIC0xMTgsMjUgKzEyMCwyNSBA
QCBzdGF0aWMgU3RyaW5nIGNvb2tpZXNGb3JDb250ZXh0KE5ldHdvcmtpCiAgICAgcmV0dXJuIFN0
cmluZzo6ZnJvbVVURjgoY29va2llcy5nZXQoKSk7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9N
KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJs
KQorU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVybiBjb29raWVz
Rm9yQ29udGV4dChjb250ZXh0LCB1cmwsIGZhbHNlKTsKKyAgICByZXR1cm4gY29va2llc0ZvclNl
c3Npb24oc2Vzc2lvbiwgdXJsLCBmYWxzZSk7CiB9CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypm
aXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIGNvb2tp
ZXNGb3JDb250ZXh0KGNvbnRleHQsIHVybCwgdHJ1ZSk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JT
ZXNzaW9uKHNlc3Npb24sIHVybCwgdHJ1ZSk7CiB9CiAKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0
d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25z
dCBLVVJMJiAvKnVybCovKQorYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJM
JiAvKnVybCovKQogewotICAgIHJldHVybiAhIWNvb2tpZUphckZvckNvbnRleHQoY29udGV4dCk7
CisgICAgcmV0dXJuICEhY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKIH0KIAotYm9vbCBn
ZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiAvKmZp
cnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykK
K2Jvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29r
aWU+JiByYXdDb29raWVzKQogewogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKLSAgICBTb3VwQ29v
a2llSmFyKiBqYXIgPSBjb250ZXh0ID8gY29va2llSmFyRm9yQ29udGV4dChjb250ZXh0KSA6IHNv
dXBDb29raWVKYXIoKTsKKyAgICBTb3VwQ29va2llSmFyKiBqYXIgPSBjb29raWVKYXJGb3JTZXNz
aW9uKHNlc3Npb24pOwogICAgIGlmICghamFyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTE1Nyw5ICsxNTksOSBAQCBib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNv
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3ZvaWQg
ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgU291cENvb2tpZUphciogamFy
ID0gY29udGV4dCA/IGNvb2tpZUphckZvckNvbnRleHQoY29udGV4dCkgOiBzb3VwQ29va2llSmFy
KCk7CisgICAgU291cENvb2tpZUphciogamFyID0gY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9u
KTsKICAgICBpZiAoIWphcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNzgsOSArMTgwLDkgQEAg
dm9pZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbgogICAgIH0KIH0KIAotdm9p
ZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgSGFz
aFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCit2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgSGFzaFNldDxTdHJpbmc+JiBob3N0
bmFtZXMpCiB7Ci0gICAgU291cENvb2tpZUphciogY29va2llSmFyID0gY29udGV4dCA/IGNvb2tp
ZUphckZvckNvbnRleHQoY29udGV4dCkgOiBzb3VwQ29va2llSmFyKCk7CisgICAgU291cENvb2tp
ZUphciogY29va2llSmFyID0gY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKICAgICBHT3du
UHRyPEdTTGlzdD4gY29va2llcyhzb3VwX2Nvb2tpZV9qYXJfYWxsX2Nvb2tpZXMoY29va2llSmFy
KSk7CiAgICAgZm9yIChHU0xpc3QqIGl0ZW0gPSBjb29raWVzLmdldCgpOyBpdGVtOyBpdGVtID0g
Z19zbGlzdF9uZXh0KGl0ZW0pKSB7CiAgICAgICAgIEdPd25QdHI8U291cENvb2tpZT4gY29va2ll
KHN0YXRpY19jYXN0PFNvdXBDb29raWUqPihpdGVtLT5kYXRhKSk7CkBAIC0xOTAsMTAgKzE5Miwx
MCBAQCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtpbmdDCiAgICAgfQogfQog
Ci12b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4
dCwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1l
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgU3RyaW5nJiBob3N0
bmFtZSkKIHsKICAgICBDU3RyaW5nIGhvc3ROYW1lU3RyaW5nID0gaG9zdG5hbWUudXRmOCgpOwot
ICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphciA9IGNvbnRleHQgPyBjb29raWVKYXJGb3JDb250
ZXh0KGNvbnRleHQpIDogc291cENvb2tpZUphcigpOworICAgIFNvdXBDb29raWVKYXIqIGNvb2tp
ZUphciA9IGNvb2tpZUphckZvclNlc3Npb24oc2Vzc2lvbik7CiAgICAgR093blB0cjxHU0xpc3Q+
IGNvb2tpZXMoc291cF9jb29raWVfamFyX2FsbF9jb29raWVzKGNvb2tpZUphcikpOwogICAgIGZv
ciAoR1NMaXN0KiBpdGVtID0gY29va2llcy5nZXQoKTsgaXRlbTsgaXRlbSA9IGdfc2xpc3RfbmV4
dChpdGVtKSkgewogICAgICAgICBTb3VwQ29va2llKiBjb29raWUgPSBzdGF0aWNfY2FzdDxTb3Vw
Q29va2llKj4oaXRlbS0+ZGF0YSk7CkBAIC0yMDMsOSArMjA1LDkgQEAgdm9pZCBkZWxldGVDb29r
aWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZwogICAgIH0KIH0KIAotdm9pZCBkZWxldGVBbGxDb29r
aWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQordm9pZCBkZWxldGVBbGxDb29raWVzKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikKIHsKLSAgICBTb3VwQ29va2llSmFy
KiBjb29raWVKYXIgPSBjb250ZXh0ID8gY29va2llSmFyRm9yQ29udGV4dChjb250ZXh0KSA6IHNv
dXBDb29raWVKYXIoKTsKKyAgICBTb3VwQ29va2llSmFyKiBjb29raWVKYXIgPSBjb29raWVKYXJG
b3JTZXNzaW9uKHNlc3Npb24pOwogICAgIEdPd25QdHI8R1NMaXN0PiBjb29raWVzKHNvdXBfY29v
a2llX2phcl9hbGxfY29va2llcyhjb29raWVKYXIpKTsKICAgICBmb3IgKEdTTGlzdCogaXRlbSA9
IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAgICAg
ICAgU291cENvb2tpZSogY29va2llID0gc3RhdGljX2Nhc3Q8U291cENvb2tpZSo+KGl0ZW0tPmRh
dGEpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0ROU1NvdXAu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9E
TlNTb3VwLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL0ROU1NvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBA
CiAKICNpbmNsdWRlICJHT3duUHRyU291cC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgi
CisjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAu
Y3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAs
NyBAQAogI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250
ZXh0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Db29raWVKYXJXaW4uY3BwCShyZXZpc2lvbiAxMzg0MDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9Db29raWVKYXJXaW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJDb29raWUuaCIK
ICNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNpbmNsdWRlIDxX
aW5pbmV0Lmg+CkBAIC0zNSw3ICszNiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9p
ZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IEtVUkwmLCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit2b2lkIHNldENvb2tpZXNGcm9tRE9N
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgLy8gRklYTUU6IERlYWwgd2l0aCBmaXJz
dFBhcnR5IGFyZ3VtZW50LgogICAgIFN0cmluZyBzdHIgPSB1cmwuc3RyaW5nKCk7CkBAIC00Myw3
ICs0NCw3IEBAIHZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQKICAgICBJ
bnRlcm5ldFNldENvb2tpZShzdHIuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSwgMCwg
dmFsLmNoYXJhY3RlcnNXaXRoTnVsbFRlcm1pbmF0aW9uKCkpOwogfQogCi1TdHJpbmcgY29va2ll
c0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1cmwp
CitTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQogewogICAgIC8vIEZJWE1FOiBEZWFsIHdpdGggZmly
c3RQYXJ0eSBhcmd1bWVudC4KIApAQCAtNjQsNDAgKzY1LDQwIEBAIFN0cmluZyBjb29raWVzRm9y
RE9NKE5ldHdvcmtpbmdDb250ZXh0KiwKICAgICByZXR1cm4gU3RyaW5nOjphZG9wdChidWZmZXIp
OwogfQogCi1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkK
K1N0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVy
bCkKIHsKICAgICAvLyBGSVhNRTogaW5jbHVkZSBIdHRwT25seSBjb29raWUKLSAgICByZXR1cm4g
Y29va2llc0ZvckRPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBjb29r
aWVzRm9yRE9NKHNlc3Npb24uY29udGV4dCgpLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1ib29s
IGNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiAv
KmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKK2Jvb2wgY29va2llc0VuYWJsZWQo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0
UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJM
JiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLywgVmVjdG9yPENvb2tpZT4mIHJh
d0Nvb2tpZXMpCitib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwq
LywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQg
aW1wbGVtZW50ZWQKICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAgICAgcmV0dXJuIGZhbHNlOyAv
LyByZXR1cm4gdHJ1ZSB3aGVuIGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKE5l
dHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCit2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3Qg
U3RyaW5nJikKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQogCi12b2lk
IGdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiwgSGFzaFNldDxTdHJp
bmc+JiBob3N0bmFtZXMpCit2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQogewogICAgIC8v
IEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRlQ29va2llc0Zvckhv
c3RuYW1lKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKK3ZvaWQg
ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50
ZWQKIH0KIAotdm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KikKK3ZvaWQg
ZGVsZXRlQWxsQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mKQogewogICAgIC8v
IEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUhhbmRsZVdpbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VIYW5kbGVXaW4uY3BwCShy
ZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9S
ZXNvdXJjZUhhbmRsZVdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJEYXRhVVJMLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNpbmNsdWRlICJN
SU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDQsMTYgKzE0NCw5IEBAIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnNldFMK
ICAgICBtX3NlcmlhbExvYWRpbmdFbmFibGVkID0gZW5hYmxlZDsKIH0KIAotc3RhdGljIFJlbW90
ZU5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4dChib29sIHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQpCitzdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbihi
b29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiB7Ci0gICAgLy8gVGhpcyBuZXR3b3JraW5nIGNv
bnRleHQgaXMgb25seSBuZWVkZWQgdG8gZ2V0IHN0b3JhZ2Ugc2Vzc2lvbiBmcm9tLgotICAgIGlm
IChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSB7Ci0gICAgICAgIHN0YXRpYyBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dCogY29udGV4dCA9IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVhdGUoZmFs
c2UsIGZhbHNlLCB0cnVlKS5sZWFrUmVmKCk7Ci0gICAgICAgIHJldHVybiBjb250ZXh0OwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIHN0YXRpYyBSZW1vdGVOZXR3b3JraW5nQ29udGV4dCogY29udGV4
dCA9IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVhdGUoZmFsc2UsIGZhbHNlLCBmYWxzZSku
bGVha1JlZigpOwotICAgICAgICByZXR1cm4gY29udGV4dDsKLSAgICB9CisgICAgcmV0dXJuIHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQgPyBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6cHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbigpIDogTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnRE
b3dubG9hZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIHVpbnQ2NF90IGRvd25sb2FkSUQs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKQEAgLTE2NCwzMiArMTU3LDMyIEBAIHZv
aWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXIKIAogdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0ZvckRPTShib29sIHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgU3RyaW5nJiBy
ZXN1bHQpCiB7Ci0gICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llc0ZvckRPTShuZXR3b3JraW5n
Q29udGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICBy
ZXN1bHQgPSBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93
c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpzZXRDb29raWVzRnJvbURPTShib29sIHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBjb29raWVTdHJpbmcpCiB7Ci0gICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00obmV0
d29ya2luZ0NvbnRleHQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCwg
Y29va2llU3RyaW5nKTsKKyAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShzdG9yYWdlU2Vz
c2lvbihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJp
bmcpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVzRW5h
YmxlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHks
IGNvbnN0IEtVUkwmIHVybCwgYm9vbCYgcmVzdWx0KQogewotICAgIHJlc3VsdCA9IFdlYkNvcmU6
OmNvb2tpZXNFbmFibGVkKG5ldHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJsZWQp
LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZXNFbmFibGVk
KHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwp
OwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IEtVUkwm
IGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgU3RyaW5nJiByZXN1bHQpCiB7Ci0gICAgcmVz
dWx0ID0gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUobmV0d29ya2luZ0Nv
bnRleHQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCk7CisgICAgcmVz
dWx0ID0gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc3RvcmFnZVNlc3Np
b24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCk7CiB9CiAKIHZvaWQg
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmdldFJhd0Nvb2tpZXMoYm9vbCBwcml2YXRl
QnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmws
IFZlY3RvcjxDb29raWU+JiByZXN1bHQpCiB7Ci0gICAgV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhu
ZXR3b3JraW5nQ29udGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJs
LCByZXN1bHQpOworICAgIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc3RvcmFnZVNlc3Npb24ocHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCwgcmVzdWx0KTsKIH0KIAogdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6ZGVsZXRlQ29va2llKGJvb2wgcHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5h
bWUpCiB7Ci0gICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKG5ldHdvcmtpbmdDb250ZXh0KHByaXZh
dGVCcm93c2luZ0VuYWJsZWQpLCB1cmwsIGNvb2tpZU5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0
ZUNvb2tpZShzdG9yYWdlU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgdXJsLCBjb29r
aWVOYW1lKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWluTWFjLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9OZXR3b3JrUHJvY2Vzc01haW5N
YWMubW0JKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L21hYy9OZXR3b3JrUHJvY2Vzc01haW5NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMxLDkgKzMx
LDkgQEAKICNpbXBvcnQgIkNvbW1hbmRMaW5lLmgiCiAjaW1wb3J0ICJFbnZpcm9ubWVudFV0aWxp
dGllcy5oIgogI2ltcG9ydCAiTmV0d29ya1Byb2Nlc3MuaCIKKyNpbXBvcnQgIldlYlN5c3RlbUlu
dGVyZmFjZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9SdW5Mb29wLmg+CiAjaW1wb3J0IDxXZWJLaXRT
eXN0ZW1JbnRlcmZhY2UuaD4KLSNpbXBvcnQgPFdlYlN5c3RlbUludGVyZmFjZS5oPgogI2ltcG9y
dCA8bWFjaC9tYWNoX2Vycm9yLmg+CiAjaW1wb3J0IDxydW50aW1lL0luaXRpYWxpemVUaHJlYWRp
bmcuaD4KICNpbXBvcnQgPHNlcnZlcnMvYm9vdHN0cmFwLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQuaAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYg
KzQyLDggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigp
OwogCisgICAgc3RhdGljIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgcHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbigpOyAvLyBDYW4gb25seSBiZSBjYWxsZWQgd2hlbiB0aGUgc2Vzc2lvbiBl
eGlzdHMuCisKIHByaXZhdGU6CiAgICAgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQoYm9vbCBuZWVk
c1NpdGVTcGVjaWZpY1F1aXJrcywgYm9vbCBsb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVk
LCBib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpOwogCkBAIC00OSw4ICs1MSw3IEBAIHByaXZh
dGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSBjb25zdCBP
VkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgbG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxl
ZCgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBpblByaXZhdGVCcm93c2luZ01v
ZGUoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIENGVVJMU3RvcmFnZVNlc3Npb25SZWYg
c3RvcmFnZVNlc3Npb24oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIE5TT3BlcmF0aW9uUXVldWUgKnNjaGVkdWxlZE9wZXJhdGlvblF1ZXVlKCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRF
cnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdCBPVkVSUklERTsKIApJ
bmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdD
b250ZXh0Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21h
Yy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSwxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHBy
aXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uOworc3RhdGljIE93blB0cjxOZXR3b3JrU3RvcmFn
ZVNlc3Npb24+JiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpCit7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE93blB0cjxOZXR3b3Jr
U3RvcmFnZVNlc3Npb24+LCBzZXNzaW9uLCAoKSk7CisgICAgcmV0dXJuIHNlc3Npb247Cit9CiAK
IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpSZW1vdGVOZXR3b3JraW5nQ29udGV4dChib29sIG5l
ZWRzU2l0ZVNwZWNpZmljUXVpcmtzLCBib29sIGxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJs
ZWQsIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKICAgICA6IG1fbmVlZHNTaXRlU3BlY2lm
aWNRdWlya3MobmVlZHNTaXRlU3BlY2lmaWNRdWlya3MpCkBAIC02MywxOSArNjgsMjAgQEAgYm9v
bCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6bG9jYWxGaWxlQwogICAgIHJldHVybiBtX2xvY2Fs
RmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQ7CiB9CiAKLWJvb2wgUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQ6OmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpIGNvbnN0CitOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsKKyAgICBpZiAobV9wcml2YXRlQnJv
d3NpbmdFbmFibGVkKSB7CisgICAgICAgIEFTU0VSVChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vz
c2lvbigpKTsKKyAgICAgICAgcmV0dXJuICpwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigp
OworICAgIH0KKworICAgIHJldHVybiBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9y
YWdlU2Vzc2lvbigpOwogfQogCi1DRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIFJlbW90ZU5ldHdvcmtp
bmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CitOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Ojpwcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKLSAg
ICBpZiAoaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkpIHsKLSAgICAgICAgQVNTRVJUKHByaXZhdGVC
cm93c2luZ1N0b3JhZ2VTZXNzaW9uKTsKLSAgICAgICAgcmV0dXJuIHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uOwotICAgIH0KLSAgICAvLyBGSVhNRSAoTmV0d29ya1Byb2Nlc3MpOiBSZXR1
cm4gYSBkZWZhdWx0IHNlc3Npb24gdGhhdCdzIHVzZWQgZm9yIHRlc3RpbmcuCi0gICAgcmV0dXJu
IDA7CisgICAgQVNTRVJUKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpOworICAgIHJl
dHVybiAqcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKTsKIH0KIAogTlNPcGVyYXRpb25R
dWV1ZSAqUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OnNjaGVkdWxlZE9wZXJhdGlvblF1ZXVlKCkg
Y29uc3QKQEAgLTEwOCwyMyArMTE0LDE4IEBAIHZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6
OnNldFByaXZhdGUKIAogdm9pZCBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbigpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBp
ZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pCisgICAgaWYgKHByaXZhdGVCcm93c2lu
Z1N0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCghcHJpdmF0
ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpKTsKICAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmSWRlbnRpZmllciA9IFN0cmluZyhwcml2YXRlQnJvd3Np
bmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkgKyAiLlByaXZhdGVCcm93c2luZyIpLmNy
ZWF0ZUNGU3RyaW5nKCk7CiAKLSAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbiA9IFdL
Q3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKGNmSWRlbnRpZmllci5nZXQoKSk7CisgICAgcHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3Jl
YXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklk
ZW50aWZpZXJCYXNlKCkpOwogfQogCiB2b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0
cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7Ci0gICAgaWYgKCFwcml2YXRlQnJvd3NpbmdT
dG9yYWdlU2Vzc2lvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0ZSZWxlYXNlKHByaXZhdGVC
cm93c2luZ1N0b3JhZ2VTZXNzaW9uKTsKLSAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lv
biA9IDA7CisgICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSA9IG51bGxwdHI7CiB9
CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29s
cy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9OZXR3b3JrL0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xN
YW5hZ2VyTWFjLm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
TmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlck1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0tVUkwu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogCiB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1By
b2Nlc3NMYXVuY2hlckVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCShyZXZpc2lvbiAxMzg0MDcp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZWZsL1Byb2Nlc3NMYXVuY2hl
ckVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDkgQEAKIAogI2luY2x1ZGUgIkNv
bm5lY3Rpb24uaCIKICNpbmNsdWRlICJQcm9jZXNzRXhlY3V0YWJsZVBhdGguaCIKKyNpbmNsdWRl
IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
aWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JraW5nQ29udGV4dC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bkxv
b3AuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNo
ZXJHdGsuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
TGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDcgKzI5LDkgQEAKIAogI2luY2x1ZGUgIkNvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJQcm9jZXNz
RXhlY3V0YWJsZVBhdGguaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GaWxlU3lzdGVtLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9OZXR3b3JraW5nQ29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KICNpbmNsdWRlIDxlcnJuby5oPgpJbmRl
eDogU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDQzLDcgKzEwNDMsNiBAQAogCQlF
MUI3ODQ3MzE2M0YyNTNFMDAwN0I2OTIgLyogUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUI3ODQ3MjE2M0Yy
NTNFMDAwN0I2OTIgLyogUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0gKi87IH07CiAJCUUxQ0Mx
QjkwMTJEN0VBREYwMDYyNTgzOCAvKiBQcmludEluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQ0MxQjhFMTJEN0VBREYwMDYyNTgzOCAvKiBQcmlu
dEluZm8uaCAqLzsgfTsKIAkJRTFDQzFCOTExMkQ3RUFERjAwNjI1ODM4IC8qIFByaW50SW5mb01h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxQ0Mx
QjhGMTJEN0VBREYwMDYyNTgzOCAvKiBQcmludEluZm9NYWMubW0gKi87IH07Ci0JCUUxRDIyOTcx
MTY1MkRDNTIwMEJBQTRCRCAvKiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXNNYWMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUQyMjk2RTE2NTJEQjlDMDBC
QUE0QkQgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFjLm1tICovOyB9OwogCQlFMUVERkRBNjE2
Mjg4NjhFMDAzOUVDREEgLyogTWFpbk1hY1Byb2Nlc3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2RkEzMTAxMUUzOTIxRTAwREIxMzcxIC8qIE1h
aW5NYWNQcm9jZXNzLmNwcCAqLzsgfTsKIAkJRTFFREZEQTcxNjI4ODY5NjAwMzlFQ0RBIC8qIFNo
YXJlZFdvcmtlclByb2Nlc3NNYWluTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTFFREZEOUIxNjI4N0QwQjAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtl
clByb2Nlc3NNYWluTWFjLm1tICovOyB9OwogCQlFMUVERkRBODE2Mjg4Njk5MDAzOUVDREEgLyog
U2hhcmVkV29ya2VyUHJvY2Vzc01hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxRURGREEyMTYyODgzOEMwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQ
cm9jZXNzTWFjLm1tICovOyB9OwpAQCAtMjM0NCw3ICsyMzQzLDYgQEAKIAkJRTFCNzg0NzIxNjNG
MjUzRTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQ0MxQjhFMTJEN0VBREYwMDYyNTgzOCAvKiBQ
cmludEluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHJpbnRJbmZvLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQ0MxQjhGMTJEN0VBREYwMDYyNTgzOCAv
KiBQcmludEluZm9NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBQcmludEluZm9NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUUxRDIyOTZF
MTY1MkRCOUMwMEJBQTRCRCAvKiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXNNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXNNYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRURGRDk4MTYyODdCRDEwMDM5RUNE
QSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMUVERkQ5QjE2Mjg3RDBCMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01h
aW5NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTaGFyZWRX
b3JrZXJQcm9jZXNzTWFpbk1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFF
REZEOUQxNjI4N0YxOTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMzczMyw3ICszNzMxLDYgQEAKIAkJCQlCQzExMUFERjExMkY1
QkMyMDAzMzdCQUIgLyogV2ViRXJyb3JzTWFjLm1tICovLAogCQkJCTkzOTFGMjgzMTIxQjM4RjUw
MEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggKi8sCiAJCQkJOTM5MUYyODQx
MjFCMzhGNTAwRUJGN0U4IC8qIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0gKi8sCi0JCQkJ
RTFEMjI5NkUxNjUyREI5QzAwQkFBNEJEIC8qIFdlYlBsYXRmb3JtU3RyYXRlZ2llc01hYy5tbSAq
LywKIAkJCQlCQ0M0M0FDNjEyN0I5OURFMDAzMTdGMTYgLyogV2ViUG9wdXBNZW51TWFjLm1tICov
LAogCQkJCUJDQzU3MTU5MTE1QURBRUYwMDFDQ0FGOSAvKiBXZWJTeXN0ZW1JbnRlcmZhY2UuaCAq
LywKIAkJCQlCQ0M1NzE1QTExNUFEQUVGMDAxQ0NBRjkgLyogV2ViU3lzdGVtSW50ZXJmYWNlLm1t
ICovLApAQCAtNTk3OCw3ICs1OTc1LDYgQEAKIAkJCQk1MTIxNzQ2MDE2NEMyMEUzMDAzN0E1QzEg
LyogU2hhcmVhYmxlUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEyMTc0NjQxNjRD
MjEzNzAwMzdBNUMxIC8qIFdlYlJlc291cmNlQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFBRjFBQzZCMTY1MTc1OUUwMEMxN0Q3RiAvKiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5t
bSBpbiBTb3VyY2VzICovLAotCQkJCUUxRDIyOTcxMTY1MkRDNTIwMEJBQTRCRCAvKiBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXNNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUEzRDc1QjE2NTFCNDRG
MDA4NzEzRDAgLyogUmVtb3RlTGF5ZXJUcmVlSG9zdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFB
QTNENzYxMTY1MUI3RDMwMDg3MTNEMCAvKiBSZW1vdGVMYXllclRyZWVIb3N0TWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRkQxOEI1MTY1MUZCQUQwMERCRTFDRSAvKiBO
ZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1
LDYgKzU1LDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9NZW1vcnlTdGF0aXN0aWNzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9BWE9iamVjdENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9B
cHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVz
dWx0Q2FjaGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZvbnQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0ZvbnRDYWNoZS5oPgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dl
YkNvb2tpZU1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL1dlYkNvb2tpZU1hbmFnZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclBy
b3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9Db29raWVTdG9yYWdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Np
b24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ29va2llSmFyLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwpAQCAtNTUsNyArNTYsNyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6
OmdldEhvc3RuYW1lc1dpdGhDCiB7CiAgICAgSGFzaFNldDxTdHJpbmc+IGhvc3RuYW1lczsKIAot
ICAgIFdlYkNvcmU6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKDAsIGhvc3RuYW1lcyk7CisgICAg
V2ViQ29yZTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpk
ZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgaG9zdG5hbWVzKTsKIAogICAgIFZlY3RvcjxTdHJpbmc+
IGhvc3RuYW1lTGlzdDsKICAgICBjb3B5VG9WZWN0b3IoaG9zdG5hbWVzLCBob3N0bmFtZUxpc3Qp
OwpAQCAtNjUsMTIgKzY2LDEyIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6Z2V0SG9zdG5hbWVz
V2l0aEMKIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUo
Y29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKLSAgICBXZWJDb3JlOjpkZWxldGVDb29raWVzRm9y
SG9zdG5hbWUoMCwgaG9zdG5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0
bmFtZShOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCBob3N0
bmFtZSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llcygpCiB7
Ci0gICAgV2ViQ29yZTo6ZGVsZXRlQWxsQ29va2llcygwKTsKKyAgICBXZWJDb3JlOjpkZWxldGVB
bGxDb29raWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkp
OwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdl
cygpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9lZmwvRG93bmxv
YWRTb3VwRXJyb3JzRWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0Rvd25sb2Fkcy9lZmwvRG93bmxvYWRTb3VwRXJyb3JzRWZsLmNwcAkocmV2aXNpb24gMTM4
NDA3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvZWZsL0Rvd25sb2Fk
U291cEVycm9yc0VmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNs
dWRlICJEb3dubG9hZFNvdXBFcnJvcnMuaCIKIAogI2luY2x1ZGUgPFdlYkNvcmUvRXJyb3JzRWZs
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9t
YWMvRG93bmxvYWRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAi
RG93bmxvYWQuaCIKIAorI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbk1hYy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Nyw2ICs3NywxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oPgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAi
V2ViU3lzdGVtSW50ZXJmYWNlLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCkBAIC0zMDMsNyArMzA3LDggQEAgdm9pZCBJbmplY3Rl
ZEJ1bmRsZTo6c3dpdGNoTmV0d29ya0xvYWRlcgogewogI2lmIChQTEFURk9STShNQUMpIHx8IFVT
RShDRk5FVFdPUkspKSAmJiAhUExBVEZPUk0oV0lOKQogICAgIC8vIEZJWE1FIChOZXR3b3JrUHJv
Y2Vzcyk6IERvIHRoaXMgaW4gbmV0d29yayBwcm9jZXNzLCB0b28uCi0gICAgV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOworICAgIEluaXRXZWJD
b3JlU3lzdGVtSW50ZXJmYWNlKCk7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hU
b05ld1Rlc3RpbmdTZXNzaW9uKCk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCShy
ZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZGVyLmg+CiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCw2ICszOCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvS1VSTC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTG9hZGVyU3RyYXRlZ3kuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Db29raWVKYXIuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1BsYXRmb3JtUGFzdGVib2FyZC5oPgpAQCAtMTEzLDkwICsxMTQsODMgQEAgdm9pZCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Om5vdGlmeUNvb2tpZQogICAgIFdlYkNvb2tpZU1hbmFnZXI6
OnNoYXJlZCgpLmRpc3BhdGNoQ29va2llc0RpZENoYW5nZSgpOwogfQogCi0jaWYgUExBVEZPUk0o
V0lOKSAmJiBVU0UoQ0ZORVRXT1JLKQotUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVmYXVsdENvb2tpZVN0b3JhZ2UoKQotewotICAgIHJl
dHVybiAwOwotfQotI2VuZGlmCi0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tp
ZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tp
ZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkp
IHsKICAgICAgICAgU3RyaW5nIHJlc3VsdDsKLSAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFy
ZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShjb250ZXh0ICYm
IGNvbnRleHQtPmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJlcGx5
KHJlc3VsdCksIDApKQorICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtD
b25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NKHNlc3Npb24uaXNQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKCksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTTo6UmVwbHkocmVzdWx0KSwgMCkpCiAgICAgICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogI2Vu
ZGlmCiAKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShjb250ZXh0LCBmaXJzdFBh
cnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZp
cnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29r
aWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNz
KCkpIHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+
Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6U2V0Q29va2llc0Zyb21ET00oY29udGV4dCAmJiBjb250ZXh0LT5pblByaXZhdGVCcm93c2lu
Z01vZGUoKSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpLCAwKTsKKyAgICAgICAgV2Vi
UHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29va2llc0Zyb21E
T00oc2Vzc2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgZmlyc3RQYXJ0eSwgdXJsLCBj
b29raWVTdHJpbmcpLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgogCi0gICAg
V2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCBjb29r
aWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0
UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7CiAjaWYgRU5BQkxFKE5F
VFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQ
cm9jZXNzKCkpIHsKICAgICAgICAgYm9vbCByZXN1bHQ7Ci0gICAgICAgIGlmICghV2ViUHJvY2Vz
czo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkKGNv
bnRleHQgJiYgY29udGV4dC0+aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCksIGZpcnN0UGFydHksIHVy
bCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJs
ZWQ6OlJlcGx5KHJlc3VsdCksIDApKQorICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgp
Lm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZChzZXNzaW9uLmlzUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkOjpSZXBseShyZXN1bHQpLCAw
KSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChjb250ZXh0
LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChz
ZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29u
dGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFdl
YlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJiB1cmwpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAo
V2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgU3Ry
aW5nIHJlc3VsdDsKLSAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29u
bmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29udGV4dCAm
JiBjb250ZXh0LT5pblByaXZhdGVCcm93c2luZ01vZGUoKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVz
c2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZTo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIGlmICghV2ViUHJvY2Vzczo6
c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKHNlc3Npb24uaXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIGZpcnN0UGFydHks
IHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWU6OlJlcGx5KHJlc3VsdCksIDApKQogICAgICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICNlbmRpZgogCi0g
ICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnRleHQs
IGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLWJvb2wgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+
JiByYXdDb29raWVzKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewogI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVz
ZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCku
bmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXMoY29udGV4dCAmJiBjb250
ZXh0LT5pblByaXZhdGVCcm93c2luZ01vZGUoKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzOjpSZXBseShyYXdD
b29raWVzKSwgMCkpCisgICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nv
bm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXMoc2Vzc2lvbi5pc1ByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzOjpSZXBseShyYXdDb29raWVzKSwgMCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICNlbmRp
ZgogCi0gICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoY29udGV4dCwgZmlyc3RQYXJ0
eSwgdXJsLCByYXdDb29raWVzKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhz
ZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12b2lkIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKICNp
ZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51
c2VzTmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3
b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVDb29raWUoY29udGV4dCAmJiBjb250ZXh0LT5pblBy
aXZhdGVCcm93c2luZ01vZGUoKSwgdXJsLCBjb29raWVOYW1lKSwgMCk7CisgICAgICAgIFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkRlbGV0ZUNvb2tpZShzZXNz
aW9uLmlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCB1cmwsIGNvb2tpZU5hbWUpLCAwKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgogCi0gICAgV2ViQ29yZTo6ZGVsZXRlQ29va2ll
KGNvbnRleHQsIHVybCwgY29va2llTmFtZSk7CisgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHNl
c3Npb24sIHVybCwgY29va2llTmFtZSk7CiB9CiAKIC8vIERhdGFiYXNlU3RyYXRlZ3kKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJh
dGVnaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAkocmV2aXNpb24gMTM4NDA3KQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTUgKzU3LDEyIEBAIHByaXZhdGU6CiAKICAgICAv
LyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2ll
c0NoYW5nZWQoKSBPVkVSUklERTsKLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUksp
Ci0gICAgdmlydHVhbCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gZGVmYXVsdENv
b2tpZVN0b3JhZ2UoKSBPVkVSUklERTsKLSNlbmRpZgotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tp
ZXNGb3JET00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0
IFN0cmluZyYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChXZWJD
b3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNv
bnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhXZWJDb3JlOjpOZXR3b3JraW5n
Q29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcg
Y29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpL
VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKIAogICAgIC8vIFdl
YkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkocmV2aXNpb24g
MTM4NDA3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMCArMzQs
OCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMg
dm9pZCBzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7CiAgICAgc3RhdGljIHZvaWQgZW5zdXJl
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKCk7Ci0gICAgc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgZGVm
YXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiAgICAgc3RhdGljIHZvaWQgc2V0Q29va2llQWNjZXB0UG9s
aWN5Rm9yQWxsQ29udGV4dHMoSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAKIHByaXZhdGU6CkBA
IC00OCw4ICs0Niw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNTaXRlU3Bl
Y2lmaWNRdWlya3MoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgbG9jYWxGaWxl
Q29udGVudFNuaWZmaW5nRW5hYmxlZCgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9v
bCBpblByaXZhdGVCcm93c2luZ01vZGUoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIENG
VVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCBPVkVSUklERTsKKyAg
ICB2aXJ0dWFsIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24o
KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjaGVkdWxlUGFpckhhc2hT
ZXQqIHNjaGVkdWxlZFJ1bkxvb3BQYWlycygpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JikgY29uc3QgT1ZFUlJJREU7CiB9OwpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21h
Yy9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw2IEBACiAjaW1wb3J0ICJj
b25maWcuaCIKICNpbXBvcnQgIldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKIAotI2ltcG9y
dCA8V2ViQ29yZS9Db29raWVTdG9yYWdlQ0ZOZXQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVM
b2FkZXJDbGllbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9SZXNvdXJjZUVycm9yLmg+CkBAIC0zMiw4ICszMSwxMSBAQCB1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uOwotc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25S
ZWYgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb247CitzdGF0aWMgT3duUHRyPE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbj4mIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+LCBzZXNzaW9u
LCAoKSk7CisgICAgcmV0dXJuIHNlc3Npb247Cit9CiAKIGJvb2wgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6bmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSBjb25zdAogewpAQCAtNjcsMjYgKzY5
LDE3IEBAIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0UHJpdmEKICAgICBwcml2
YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkgPSBpZGVudGlmaWVyOwog
fQogCi12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN3aXRjaFRvTmV3VGVzdGluZ1Nl
c3Npb24oKQotewotICAgIC8vIFNldCBhIHByaXZhdGUgc2Vzc2lvbiBmb3IgdGVzdGluZyB0byBh
dm9pZCBpbnRlcmZlcmluZyB3aXRoIGdsb2JhbCBjb29raWVzLiBUaGlzIHNob3VsZCBiZSBkaWZm
ZXJlbnQgZnJvbSBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb24uCi0gICAgaWYgKGRlZmF1bHRDRlN0
b3JhZ2VTZXNzaW9uKQotICAgICAgICBDRlJlbGVhc2UoZGVmYXVsdENGU3RvcmFnZVNlc3Npb24p
OwotICAgIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uID0gV0tDcmVhdGVQcml2YXRlU3RvcmFnZVNl
c3Npb24oQ0ZTVFIoIlByaXZhdGUgV2ViS2l0IFNlc3Npb24iKSk7Ci19Ci0KIHZvaWQgV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7CiAg
ICAgLy8gRklYTUUgKE5ldHdvcmtQcm9jZXNzKTogRG9uJ3QgY3JlYXRlIGFuIHVubmVjZXNzYXJ5
IHNlc3Npb24gd2hlbiB1c2luZyBuZXR3b3JrIHByb2Nlc3MuCiAKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwotICAgIGlmIChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbikKKyAgICBp
ZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgU3RyaW5nIGJhc2UgPSBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJC
YXNlKCkuaXNOdWxsKCkgPyBTdHJpbmcoW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVu
dGlmaWVyXSkgOiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCk7
Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50aWZpZXIgPSBTdHJpbmcoYmFzZSAr
ICIuUHJpdmF0ZUJyb3dzaW5nIikuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICBTdHJpbmcgaWRlbnRp
ZmllckJhc2UgPSBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCku
aXNOdWxsKCkgPyBTdHJpbmcoW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVy
XSkgOiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCk7CiAKLSAg
ICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbiA9IFdLQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VT
ZXNzaW9uKGNmSWRlbnRpZmllci5nZXQoKSk7CisgICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNl
c3Npb24oKSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbihpZGVudGlmaWVyQmFzZSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQpAQCAtOTQsMzkgKzg3LDI4IEBAIHZv
aWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJveVAKICAgICBpZiAoIXByaXZhdGVC
cm93c2luZ1N0b3JhZ2VTZXNzaW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBDRlJlbGVhc2Uo
cHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pOwotICAgIHByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uID0gMDsKLX0KLQotQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKQotewotICAgIHJldHVybiBkZWZh
dWx0Q0ZTdG9yYWdlU2Vzc2lvbjsKLX0KLQotYm9vbCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
OjppblByaXZhdGVCcm93c2luZ01vZGUoKSBjb25zdAotewotICAgIHJldHVybiBmcmFtZSgpICYm
IGZyYW1lKCktPnNldHRpbmdzKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCgpOworICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkgPSBudWxs
cHRyOwogfQogCi1DRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIGlmIChp
blByaXZhdGVCcm93c2luZ01vZGUoKSkgewotICAgICAgICBBU1NFUlQocHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb24pOwotICAgICAgICByZXR1cm4gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNl
c3Npb247CisgICAgYm9vbCBpblByaXZhdGVCcm93c2luZ01vZGUgPSBmcmFtZSgpICYmIGZyYW1l
KCktPnNldHRpbmdzKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCgpOworICAgIGlmIChpblByaXZhdGVCcm93c2luZ01vZGUpIHsKKyAgICAgICAgQVNTRVJU
KHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpOworICAgICAgICByZXR1cm4gKnByaXZh
dGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCk7CiAgICAgfQotICAgIHJldHVybiBkZWZhdWx0Q0ZT
dG9yYWdlU2Vzc2lvbjsKKyAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0
U3RvcmFnZVNlc3Npb24oKTsKIH0KIAogdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpz
ZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhIVFRQQ29va2llQWNjZXB0UG9saWN5
IHBvbGljeSkKIHsKICAgICBbW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0
b3JhZ2VdIHNldENvb2tpZUFjY2VwdFBvbGljeTpzdGF0aWNfY2FzdDxOU0hUVFBDb29raWVBY2Nl
cHRQb2xpY3k+KHBvbGljeSldOwogCi0gICAgaWYgKFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9y
YWdlUmVmPiBjb29raWVTdG9yYWdlID0gZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKSkKKyAg
ICBpZiAoUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3Jh
Z2UoKSkKICAgICAgICAgV0tTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2Uu
Z2V0KCksIHBvbGljeSk7CiAKLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24p
IHsKLSAgICAgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IHByaXZhdGVCcm93
c2luZ0Nvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKFdLQ29weUhUVFBDb29raWVTdG9yYWdlKHByaXZh
dGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKSk7Ci0gICAgICAgIFdLU2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeShwcml2YXRlQnJvd3NpbmdDb29raWVTdG9yYWdlLmdldCgpLCBwb2xpY3kpOworICAg
IGlmIChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpKSB7CisgICAgICAgIFdLU2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpLT5jb29r
aWVTdG9yYWdlKCkuZ2V0KCksIHBvbGljeSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXNN
YWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9tYWMvV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFjLm1tCShyZXZpc2lvbiAxMzg0MDcpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJQbGF0Zm9y
bVN0cmF0ZWdpZXNNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXMuaCIKLQotI2luY2x1ZGUgIldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKLSNpbmNsdWRl
IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0K
LW5hbWVzcGFjZSBXZWJLaXQgewotCi1SZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4g
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpkZWZhdWx0Q29va2llU3RvcmFnZSgpCi17Ci0gICAgaWYg
KENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc2Vzc2lvbiA9IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpKQotICAgICAgICByZXR1cm4gYWRvcHRDRihXS0Nv
cHlIVFRQQ29va2llU3RvcmFnZShzZXNzaW9uKSk7Ci0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAg
IHJldHVybiBXS0dldERlZmF1bHRIVFRQQ29va2llU3RvcmFnZSgpOwotI2Vsc2UKLSAgICAvLyBX
aGVuIHVzaW5nIE5TVVJMQ29ubmVjdGlvbiwgd2UgYWxzbyB1c2UgaXRzIHNoYXJlZCBjb29raWUg
c3RvcmFnZS4KLSAgICByZXR1cm4gMDsKLSNlbmRpZgotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvSlNFbGVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9KU1JhbmdlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9NYWluUmVzb3VyY2VMb2FkZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L05ldHdvcmtpbmdDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob2RlVHJhdmVyc2FsLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5Eb2N1
bWVudC5oPgpAQCAtMjQ4LDcgKzI0OSw3IEBAIHZvaWQgV2ViRnJhbWU6OnN0YXJ0RG93bmxvYWQo
Y29uc3QgV2ViQ28KIAogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIGJvb2wgcHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCA9IG1fY29yZUZyYW1lLT5sb2FkZXIoKS0+bmV0d29ya2luZ0Nv
bnRleHQoKS0+aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCk7CisgICAgICAgIGJvb2wgcHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCA9IG1fY29yZUZyYW1lLT5sb2FkZXIoKS0+bmV0d29ya2luZ0NvbnRleHQo
KS0+c3RvcmFnZVNlc3Npb24oKS5pc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKICAgICAgICAg
V2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U3RhcnREb3dubG9h
ZChwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBwb2xpY3lEb3dubG9hZElELCByZXF1ZXN0KSwgMCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCShyZXZpc2lvbiAxMzg0MDcpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvSGl0VGVzdFJl
c3VsdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9IVE1MQ29udmVydGVyLmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0tleWJvYXJkRXZlbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya2luZ0NvbnRleHQu
aD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUtl
eWJvYXJkRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KQEAgLTY3
OCw3ICs2NzksNyBAQCBib29sIFdlYlBhZ2U6OnBsYXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJMCiAg
ICAgTlNNdXRhYmxlVVJMUmVxdWVzdCogcmVxdWVzdCA9IFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBh
bGxvY10gaW5pdFdpdGhVUkw6dXJsXTsKICAgICBbcmVxdWVzdCBzZXRWYWx1ZTooTlNTdHJpbmcq
KXVzZXJBZ2VudCgpIGZvckhUVFBIZWFkZXJGaWVsZDpAIlVzZXItQWdlbnQiXTsKICAgICBOU0Nh
Y2hlZFVSTFJlc3BvbnNlICpjYWNoZWRSZXNwb25zZTsKLSAgICBpZiAoQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZiBzdG9yYWdlU2Vzc2lvbiA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpLT5sb2FkZXIo
KS0+bmV0d29ya2luZ0NvbnRleHQoKS0+c3RvcmFnZVNlc3Npb24oKSkKKyAgICBpZiAoQ0ZVUkxT
dG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbiA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgp
LT5sb2FkZXIoKS0+bmV0d29ya2luZ0NvbnRleHQoKS0+c3RvcmFnZVNlc3Npb24oKS5wbGF0Zm9y
bVNlc3Npb24oKSkKICAgICAgICAgY2FjaGVkUmVzcG9uc2UgPSBXS0NhY2hlZFJlc3BvbnNlRm9y
UmVxdWVzdChzdG9yYWdlU2Vzc2lvbiwgcmVxdWVzdCk7CiAgICAgZWxzZQogICAgICAgICBjYWNo
ZWRSZXNwb25zZSA9IFtbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNoZV0gY2FjaGVkUmVzcG9uc2VG
b3JSZXF1ZXN0OnJlcXVlc3RdOwpAQCAtNjkyLDcgKzY5Myw3IEBAIHN0YXRpYyBOU0NhY2hlZFVS
TFJlc3BvbnNlICpjYWNoZWRSZXNwb24KICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlVVJMUmVxdWVz
dD4gcmVxdWVzdChBZG9wdE5TLCBbW05TTXV0YWJsZVVSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRo
VVJMOnVybF0pOwogICAgIFtyZXF1ZXN0LmdldCgpIHNldFZhbHVlOihOU1N0cmluZyAqKXdlYlBh
Z2UtPnVzZXJBZ2VudCgpIGZvckhUVFBIZWFkZXJGaWVsZDpAIlVzZXItQWdlbnQiXTsKIAotICAg
IGlmIChDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uID0gd2ViUGFnZS0+Y29y
ZVBhZ2UoKS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5uZXR3b3JraW5nQ29udGV4dCgpLT5zdG9y
YWdlU2Vzc2lvbigpKQorICAgIGlmIChDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNz
aW9uID0gd2ViUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5uZXR3b3Jr
aW5nQ29udGV4dCgpLT5zdG9yYWdlU2Vzc2lvbigpLnBsYXRmb3JtU2Vzc2lvbigpKQogICAgICAg
ICByZXR1cm4gV0tDYWNoZWRSZXNwb25zZUZvclJlcXVlc3Qoc3RvcmFnZVNlc3Npb24sIHJlcXVl
c3QuZ2V0KCkpOwogCiAgICAgcmV0dXJuIFtbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNoZV0gY2Fj
aGVkUmVzcG9uc2VGb3JSZXF1ZXN0OnJlcXVlc3QuZ2V0KCldOwpJbmRleDogU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNF
ZmwuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NiwzNCAr
ODYsMzQgQEAgdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6Om5vdGlmeUNvb2tpZQogewogfQog
Ci1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdD
b250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwp
CitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKGNvbnRleHQs
IGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc2Vz
c2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6
OnNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5n
KQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKLSAgICBXZWJDb3Jl
OjpzZXRDb29raWVzRnJvbURPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmlu
Zyk7CisgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwg
dXJsLCBjb29raWVTdHJpbmcpOwogfQogCi1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y29v
a2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjb29r
aWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6
Y29va2llc0VuYWJsZWQoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2Vi
Q29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotU3Ry
aW5nIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
TmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmIHVybCkKK1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVybiBXZWJD
b3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb250ZXh0LCBmaXJzdFBhcnR5LCB1
cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShz
ZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc0Vm
bDo6Z2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykK
K2Jvb2wgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6Z2V0UmF3Q29va2llcyhjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwor
ICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHNlc3Npb24sIGZpcnN0UGFydHksIHVy
bCwgcmF3Q29va2llcyk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpkZWxldGVD
b29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmRlbGV0ZUNv
b2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tp
ZShjb250ZXh0LCB1cmwsIGNvb2tpZU5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShz
ZXNzaW9uLCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCiB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0Vm
bDo6cmVmcmVzaFBsdWdpbnMoKQpJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmgJKHJldmlzaW9uIDEzODQw
NykKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2ll
c0VmbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMiArNDcsMTIgQEAgcHJpdmF0ZToKIAogICAg
IC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneQogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDb29r
aWVzQ2hhbmdlZCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oV2ViQ29yZTo6
TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKFdl
YkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgYm9v
bCBjb29raWVzRW5hYmxlZChXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNv
cmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFs
IFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShXZWJDb3JlOjpOZXR3b3JraW5n
Q29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OktVUkwmKTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhXZWJDb3JlOjpOZXR3b3Jr
aW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwotICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVDb29raWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNl
dENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25z
dCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsK
KyAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFdlYkNvcmU6OkRhdGFi
YXNlU3RyYXRlZ3kKICAgICAvLyAtIFVzaW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRm
b3JtU3RyYXRlZ2llc0d0ay5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgwLDM0ICs4MCwzNCBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6bm90aWZ5
Q29va2llCiB7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNvb2tpZXNGb3JE
T00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNv
bnN0IEtVUkwmIHVybCkKK1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNvb2tpZXNGb3JE
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNG
b3JET00oY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29v
a2llc0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIFBsYXRmb3Jt
U3RyYXRlZ2llc0d0azo6c2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBjb29raWVTdHJpbmcpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6c2V0Q29va2llc0Zy
b21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQog
ewotICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVy
bCwgY29va2llU3RyaW5nKTsKKyAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShzZXNzaW9u
LCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CiB9CiAKLWJvb2wgUGxhdGZvcm1TdHJh
dGVnaWVzR3RrOjpjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29u
c3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBQbGF0Zm9ybVN0cmF0
ZWdpZXNHdGs6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJl
dHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOwor
ICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzZXNzaW9uLCBmaXJzdFBhcnR5LCB1
cmwpOwogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0g
ICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnRleHQs
IGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLWJvb2wgUGxhdGZv
cm1TdHJhdGVnaWVzR3RrOjpnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+
JiByYXdDb29raWVzKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmdldFJhd0Nvb2tpZXMo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewotICAg
IHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwg
cmF3Q29va2llcyk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwg
Zmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdp
ZXNHdGs6OmRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2ll
c0d0azo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0gICAgV2ViQ29y
ZTo6ZGVsZXRlQ29va2llKGNvbnRleHQsIHVybCwgY29va2llTmFtZSk7CisgICAgV2ViQ29yZTo6
ZGVsZXRlQ29va2llKHNlc3Npb24sIHVybCwgY29va2llTmFtZSk7CiB9CiAKIC8vIFBsdWdpblN0
cmF0ZWd5CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0
cmF0ZWdpZXNHdGsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuaAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ2LDEyICs0NiwxMiBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6
Q29va2llc1N0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkKCk7
Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29u
dGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktV
UkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oV2ViQ29yZTo6TmV0d29y
a2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFi
bGVkKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAg
IHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0Kiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZl
Y3RvcjxXZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShX
ZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBT
dHJpbmcmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21E
T00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwor
ICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpLVVJMJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwg
Ym9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBW
ZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VS
TCYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQog
ICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCw3
IEBACiAjaW1wb3J0IDxXZWJDb3JlL01vdXNlRXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFn
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbHVnaW5WaWV3QmFzZS5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9Qcm90ZWN0aW9uU3BhY2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNv
dXJjZUxvYWRlci5oPgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkocmV2aXNpb24gMTM4
NDA3KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxMyArMjcsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dChmcmFt
ZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIHNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VT
ZXNzaW9uSWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIHZvaWQgc3dp
dGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOwogICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbigpOwotICAgIHN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGRlZmF1bHRTdG9y
YWdlU2Vzc2lvbigpOwotCi0gICAgc3RhdGljIHZvaWQgc2V0Q29va2llQWNjZXB0UG9saWN5Rm9y
VGVzdGluZ0NvbnRleHQoTlNIVFRQQ29va2llQWNjZXB0UG9saWN5KTsKIAogcHJpdmF0ZToKICAg
ICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KFdlYkNvcmU6OkZyYW1lKiBmcmFtZSkKQEAgLTQz
LDggKzM4LDcgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgYm9vbCBuZWVkc1NpdGVTcGVjaWZp
Y1F1aXJrcygpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgYm9vbCBsb2NhbEZpbGVDb250
ZW50U25pZmZpbmdFbmFibGVkKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGlu
UHJpdmF0ZUJyb3dzaW5nTW9kZSgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgQ0ZVUkxT
dG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigpIGNv
bnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6U2NoZWR1bGVQYWlySGFzaFNldCog
c2NoZWR1bGVkUnVuTG9vcFBhaXJzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmKSBjb25zdCBPVkVSUklERTsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
bW0JKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxLDYgKzIx
LDcgQEAKICNpbXBvcnQgIldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKIAogI2ltcG9ydCA8
V2ViQ29yZS9GcmFtZUxvYWRlckNsaWVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CkBAIC0yOCw4
ICsyOSwxMSBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotc3RhdGljIENGVVJMU3Rv
cmFnZVNlc3Npb25SZWYgZGVmYXVsdENGU3RvcmFnZVNlc3Npb247Ci1zdGF0aWMgQ0ZVUkxTdG9y
YWdlU2Vzc2lvblJlZiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbjsKK3N0YXRpYyBPd25Q
dHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiYgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24o
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bj4sIHNlc3Npb24sICgpKTsKKyAgICByZXR1cm4gc2Vzc2lvbjsKK30KIAogYm9vbCBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0OjpuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcygpIGNvbnN0CiB7CkBA
IC01MSw2OSArNTUsMjcgQEAgUmVzb3VyY2VFcnJvciBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
OgogICAgIHJldHVybiBmcmFtZSgpLT5sb2FkZXIoKS0+Y2xpZW50KCktPmJsb2NrZWRFcnJvcihy
ZXF1ZXN0KTsKIH0KIAotc3RhdGljIFN0cmluZyYgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b25JZGVudGlmaWVyQmFzZSgpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgYmFzZSwgKCkpOwotICAgIHJldHVybiBiYXNlOwot
fQotCi12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldFByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKQotewot
ICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKSA9IGlkZW50
aWZpZXI7Ci19Ci0KLXZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3dpdGNoVG9OZXdU
ZXN0aW5nU2Vzc2lvbigpCi17Ci0gICAgLy8gU2V0IGEgcHJpdmF0ZSBzZXNzaW9uIGZvciB0ZXN0
aW5nIHRvIGF2b2lkIGludGVyZmVyaW5nIHdpdGggZ2xvYmFsIGNvb2tpZXMuIFRoaXMgc2hvdWxk
IGJlIGRpZmZlcmVudCBmcm9tIHByaXZhdGUgYnJvd3Npbmcgc2Vzc2lvbi4KLSAgICBpZiAoZGVm
YXVsdENGU3RvcmFnZVNlc3Npb24pCi0gICAgICAgIENGUmVsZWFzZShkZWZhdWx0Q0ZTdG9yYWdl
U2Vzc2lvbik7Ci0gICAgZGVmYXVsdENGU3RvcmFnZVNlc3Npb24gPSBXS0NyZWF0ZVByaXZhdGVT
dG9yYWdlU2Vzc2lvbihDRlNUUigiUHJpdmF0ZSBXZWJLaXQgU2Vzc2lvbiIpKTsKLX0KLQogdm9p
ZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9u
KCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmIChwcml2YXRlQnJvd3Np
bmdTdG9yYWdlU2Vzc2lvbikKKyAgICBpZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24o
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGJhc2UgPSBwcml2YXRlQnJvd3NpbmdT
dG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkuaXNOdWxsKCkgPyBTdHJpbmcoW1tOU0J1bmRs
ZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSkgOiBwcml2YXRlQnJvd3NpbmdTdG9yYWdl
U2Vzc2lvbklkZW50aWZpZXJCYXNlKCk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklk
ZW50aWZpZXIgPSBTdHJpbmcoYmFzZSArICIuUHJpdmF0ZUJyb3dzaW5nIikuY3JlYXRlQ0ZTdHJp
bmcoKTsKLQotICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uID0gV0tDcmVhdGVQcml2
YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdldCgpKTsKKyAgICBwcml2YXRlQnJvd3Np
bmdTdG9yYWdlU2Vzc2lvbigpID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0p
OwogfQogCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCkKIHsKLSAgICBpZiAoIXByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9u
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBDRlJlbGVhc2UocHJpdmF0ZUJyb3dzaW5nU3RvcmFn
ZVNlc3Npb24pOwotICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uID0gMDsKLX0KLQot
Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZWZhdWx0
U3RvcmFnZVNlc3Npb24oKQotewotICAgIHJldHVybiBkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbjsK
KyAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpID0gbnVsbHB0cjsKIH0KIAotYm9v
bCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjppblByaXZhdGVCcm93c2luZ01vZGUoKSBjb25z
dAorTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9y
YWdlU2Vzc2lvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0
dGluZ3MoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7
Ci19Ci0KLUNGVVJMU3RvcmFnZVNlc3Npb25SZWYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6
c3RvcmFnZVNlc3Npb24oKSBjb25zdAotewotICAgIGlmIChpblByaXZhdGVCcm93c2luZ01vZGUo
KSkgewotICAgICAgICBBU1NFUlQocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pOwotICAg
ICAgICByZXR1cm4gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb247CisgICAgYm9vbCBpblBy
aXZhdGVCcm93c2luZ01vZGUgPSBmcmFtZSgpICYmIGZyYW1lKCktPnNldHRpbmdzKCkgJiYgZnJh
bWUoKS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIGlmIChpblBy
aXZhdGVCcm93c2luZ01vZGUpIHsKKyAgICAgICAgQVNTRVJUKHByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uKCkpOworICAgICAgICByZXR1cm4gKnByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNz
aW9uKCk7CiAgICAgfQotICAgIHJldHVybiBkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbjsKKyAgICBy
ZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0K
IAotdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29raWVBY2NlcHRQb2xpY3lG
b3JUZXN0aW5nQ29udGV4dChOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KQotewotICAg
IEFTU0VSVChkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbik7Ci0gICAgUmV0YWluUHRyPENGSFRUUENv
b2tpZVN0b3JhZ2VSZWY+IGRlZmF1bHRDb29raWVTdG9yYWdlID0gYWRvcHRDRihXS0NvcHlIVFRQ
Q29va2llU3RvcmFnZShkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbikpOwotICAgIFdLU2V0SFRUUENv
b2tpZUFjY2VwdFBvbGljeShkZWZhdWx0Q29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKLX0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRl
Z2llcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtNTMsMTMgKzUzLDEyIEBAIHByaXZhdGU6CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVz
U3RyYXRlZ3kKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQoKSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBkZWZhdWx0
Q29va2llU3RvcmFnZSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JE
T00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lk
IHNldENvb2tpZXNGcm9tRE9NKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmlu
ZyYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChXZWJDb3JlOjpO
ZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdl
YkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4
dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwm
LCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVDb29raWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2ll
c0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wg
Y29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdl
YkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKIAogICAgIC8vIFdlYkNvcmU6
OkRhdGFiYXNlU3RyYXRlZ3kKICAgICAvLyAtIFVzaW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24u
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTg3LDQ3ICs4NywzNCBAQCB2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6bm90
aWZ5Q29va2llCiB7CiB9CiAKLVJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmRlZmF1bHRDb29raWVTdG9yYWdlKCkKK1N0cmluZyBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0g
ICAgaWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc2Vzc2lvbiA9IFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpKQotICAgICAgICByZXR1cm4gYWRvcHRD
RihXS0NvcHlIVFRQQ29va2llU3RvcmFnZShzZXNzaW9uKSk7Ci0KLSNpZiBVU0UoQ0ZORVRXT1JL
KQotICAgIHJldHVybiBXS0dldERlZmF1bHRIVFRQQ29va2llU3RvcmFnZSgpOwotI2Vsc2UKLSAg
ICAvLyBXaGVuIHVzaW5nIE5TVVJMQ29ubmVjdGlvbiwgd2UgYWxzbyB1c2UgaXRzIHNoYXJlZCBj
b29raWUgc3RvcmFnZS4KLSAgICByZXR1cm4gMDsKLSNlbmRpZgotfQotCi1TdHJpbmcgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCi17Ci0gICAgcmV0dXJu
IFdlYkNvcmU6OmNvb2tpZXNGb3JET00oY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwog
fQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0Zyb21ET00oTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgY29va2llU3RyaW5nKQogewotICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKGNvbnRl
eHQsIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBXZWJDb3JlOjpzZXRDb29r
aWVzRnJvbURPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CiB9CiAK
LWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29u
dGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQor
Ym9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChjb250ZXh0LCBm
aXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzZXNz
aW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4
dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6
OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7
CiB9CiAKLWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKE5ldHdvcmtp
bmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1
cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiBy
YXdDb29raWVzKQogewotICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKGNvbnRleHQs
IGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmdldFJh
d0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKIH0KIAotdm9p
ZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCog
Y29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lk
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5h
bWUpCiB7Ci0gICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKGNvbnRleHQsIHVybCwgY29va2llTmFt
ZSk7CisgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHNlc3Npb24sIHVybCwgY29va2llTmFtZSk7
CiB9CiAKIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWZyZXNoUGx1Z2lucygpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0JKHJldmlzaW9u
IDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTM5LDggKzM5LDkgQEAKICNpbXBvcnQgIldlYktpdFZlcnNpb25D
aGVja3MuaCIKICNpbXBvcnQgIldlYk5TRGljdGlvbmFyeUV4dHJhcy5oIgogI2ltcG9ydCAiV2Vi
TlNVUkxFeHRyYXMuaCIKKyNpbXBvcnQgIldlYlN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8
V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9Db29r
aWVTdG9yYWdlQ0ZOZXQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CiAKQEAgLTEyODYsMTIgKzEyODcsMTMgQEAgKyAodm9pZClfc2V0SUJDcmVhdG9y
SUQ6KE5TU3RyaW5nICopc3RyaQogCiArICh2b2lkKV9zd2l0Y2hOZXR3b3JrTG9hZGVyVG9OZXdU
ZXN0aW5nU2Vzc2lvbgogewotICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN3aXRjaFRv
TmV3VGVzdGluZ1Nlc3Npb24oKTsKKyAgICBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSgpOwor
ICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOwog
fQogCiArICh2b2lkKV9zZXRDdXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQ
b2xpY3k6KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSlwb2xpY3kKIHsKLSAgICBXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0OjpzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JUZXN0aW5nQ29udGV4dChw
b2xpY3kpOworICAgIFdLU2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgcG9s
aWN5KTsKIH0KIAogLSAoQk9PTClpc0RPTVBhc3RlQWxsb3dlZApJbmRleDogU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMDE2LDcgKzIwMTYsNyBA
QCAtIChOU0NhY2hlZFVSTFJlc3BvbnNlICopX2NhY2hlZFJlc3BvbnNlCiAgICAgaWYgKCFfcHJp
dmF0ZS0+cGFnZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIGlmIChDRlVSTFN0b3JhZ2VT
ZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uID0gX3ByaXZhdGUtPnBhZ2UtPm1haW5GcmFtZSgpLT5s
b2FkZXIoKS0+bmV0d29ya2luZ0NvbnRleHQoKS0+c3RvcmFnZVNlc3Npb24oKSkKKyAgICBpZiAo
Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbiA9IF9wcml2YXRlLT5wYWdlLT5t
YWluRnJhbWUoKS0+bG9hZGVyKCktPm5ldHdvcmtpbmdDb250ZXh0KCktPnN0b3JhZ2VTZXNzaW9u
KCkucGxhdGZvcm1TZXNzaW9uKCkpCiAgICAgICAgIGNhY2hlZFJlc3BvbnNlID0gV0tDYWNoZWRS
ZXNwb25zZUZvclJlcXVlc3Qoc3RvcmFnZVNlc3Npb24sIHJlcXVlc3QuZ2V0KCkpOwogICAgIGVs
c2UKICAgICAgICAgY2FjaGVkUmVzcG9uc2UgPSBbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVd
IGNhY2hlZFJlc3BvbnNlRm9yUmVxdWVzdDpyZXF1ZXN0LmdldCgpXTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVz
UXQuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTksMzQgKzk5
LDM0IEBAIHZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6Om5vdGlmeUNvb2tpZXMKIHsKIH0KIAot
U3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitT
dHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oY29udGV4dCwgZmly
c3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzZXNzaW9u
LCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpzZXRD
b29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3Zv
aWQgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKLSAgICBXZWJDb3JlOjpzZXRD
b29raWVzRnJvbURPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7Cisg
ICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBj
b29raWVTdHJpbmcpOwogfQogCi1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb29raWVzRW5h
YmxlZChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29va2llc0VuYWJs
ZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNF
bmFibGVkKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNv
b2tpZXNFbmFibGVkKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLVN0cmluZyBQbGF0
Zm9ybVN0cmF0ZWdpZXNRdDo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVy
bCkKK1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAg
cmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZp
cnN0UGFydHksIHVybCk7CiB9CiAKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmdldFJhd0Nv
b2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHks
IGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIFBsYXRm
b3JtU3RyYXRlZ2llc1F0OjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0
b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29v
a2llcyhjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOworICAgIHJldHVybiBX
ZWJDb3JlOjpnZXRSYXdDb29raWVzKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2ll
cyk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmRlbGV0ZUNvb2tpZShOZXR3b3Jr
aW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZU5hbWUpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpkZWxldGVDb29raWUoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgY29va2llTmFtZSkKIHsKLSAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoY29udGV4dCwgdXJs
LCBjb29raWVOYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBj
b29raWVOYW1lKTsKIH0KIAogdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6cmVmcmVzaFBsdWdp
bnMoKQpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0
ZWdpZXNRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
UGxhdGZvcm1TdHJhdGVnaWVzUXQuaAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01OCwxMiArNTgsMTIgQEAgcHJpdmF0ZToKICAgICAKICAgICAvLyBXZWJDb3JlOjpDb29r
aWVzU3RyYXRlZ3kKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQoKTsKLSAg
ICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0
KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYp
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShXZWJDb3JlOjpOZXR3b3JraW5n
Q29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQo
V2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmly
dHVhbCBib29sIGdldFJhd0Nvb2tpZXMoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9y
PFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKFdlYkNv
cmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmlu
ZyYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAg
dmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OktVUkwmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCBib29s
IGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3Rv
cjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwg
Y29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CiAgICAg
Ly8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgpJbmRleDogU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcAkocmV2aXNpb24g
MTM4NDA3KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiTG9jYWxp
emVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJN
ZW1vcnlDYWNoZS5oIgorI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAi
Tm9kZUxpc3QuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QcmVzZW50ZXJDbGllbnRRdC5oIgog
I2luY2x1ZGUgIlBhZ2VHcm91cC5oIgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29va2ll
TWFuYWdlckNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb29r
aWVNYW5hZ2VyQ0ZOZXQuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb29raWVNYW5hZ2VyQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3
IEBACiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgogCiAjaW5jbHVkZSA8Q0ZOZXR3b3Jr
L0NGSFRUUENvb2tpZXNQcml2Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Db29raWVTdG9yYWdlQ0ZO
ZXQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9u
IDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTQsNyArMTU0LDYgQEAKICNpZiBVU0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUgPENGTmV0
d29yay9DRlVSTENhY2hlUHJpdi5oPgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTFByb3RvY29s
UHJpdi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llU3RvcmFnZUNGTmV0Lmg+CiAjaW5jbHVk
ZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPiAKICNlbmRp
ZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMTM4NDA3KQor
KysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDYgQEAKICNpbmNsdWRlICJGcmFt
ZUxvYWRlckNsaWVudC5oIgogI2lmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSA8Q0ZOZXR3b3Jr
L0NGSFRUUENvb2tpZXNQcml2Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Db29raWVTdG9yYWdlQ0ZO
ZXQuaD4KICNlbmRpZgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpZiBVU0UoQ0ZO
RVRXT1JLKQpAQCAtMzMsOCArMzIsMTEgQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAj
aWYgVVNFKENGTkVUV09SSykKLXN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGRlZmF1bHRD
RlN0b3JhZ2VTZXNzaW9uOwotc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgcHJpdmF0ZUJy
b3dzaW5nU3RvcmFnZVNlc3Npb247CitzdGF0aWMgT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bj4mIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkKK3sKKyAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+LCBzZXNzaW9uLCAoKSk7CisgICAg
cmV0dXJuIHNlc3Npb247Cit9CiAjZW5kaWYKIAogUGFzc1JlZlB0cjxXZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0PiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVhdGUoRnJhbWUqIGZyYW1l
LCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKQEAgLTY5LDc1ICs3MSw0MyBAQCB2b2lkIFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldFByaXZhCiAgICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFn
ZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpID0gaWRlbnRpZmllcjsKIH0KIAotdm9pZCBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0Ojpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkKLXsKLSNpZiBV
U0UoQ0ZORVRXT1JLKQotICAgIC8vIFNldCBhIHByaXZhdGUgc2Vzc2lvbiBmb3IgdGVzdGluZyB0
byBhdm9pZCBpbnRlcmZlcmluZyB3aXRoIGdsb2JhbCBjb29raWVzLiBUaGlzIHNob3VsZCBiZSBk
aWZmZXJlbnQgZnJvbSBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb24uCi0gICAgZGVmYXVsdENGU3Rv
cmFnZVNlc3Npb24gPSB3a0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlNUUigiUHJpdmF0
ZSBXZWJLaXQgU2Vzc2lvbiIpLCBkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbik7Ci0jZW5kaWYKLX0K
LQogdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogI2lmIFVTRShDRk5FVFdP
UkspCi0gICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKQorICAgIGlmIChwcml2
YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJp
bmcgYmFzZSA9IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKS5p
c051bGwoKSA/IFN0cmluZyhyZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVmPihDRkJ1bmRsZUdl
dFZhbHVlRm9ySW5mb0RpY3Rpb25hcnlLZXkoQ0ZCdW5kbGVHZXRNYWluQnVuZGxlKCksIGtDRkJ1
bmRsZUlkZW50aWZpZXJLZXkpKSkgOiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50
aWZpZXJCYXNlKCk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50aWZpZXIgPSBT
dHJpbmcoYmFzZSArICIuUHJpdmF0ZUJyb3dzaW5nIikuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICBT
dHJpbmcgaWRlbnRpZmllckJhc2UgPSBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50
aWZpZXJCYXNlKCkuaXNOdWxsKCkgPyBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1Jl
Zj4oQ0ZCdW5kbGVHZXRWYWx1ZUZvckluZm9EaWN0aW9uYXJ5S2V5KENGQnVuZGxlR2V0TWFpbkJ1
bmRsZSgpLCBrQ0ZCdW5kbGVJZGVudGlmaWVyS2V5KSkpIDogcHJpdmF0ZUJyb3dzaW5nU3RvcmFn
ZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpOwogCi0gICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNl
c3Npb24gPSB3a0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCks
IGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uKTsKKyAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vz
c2lvbigpID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKGlkZW50aWZpZXJCYXNlKTsKICNlbmRpZgogfQogCiB2b2lkIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKICNpZiBVU0UoQ0ZO
RVRXT1JLKQotICAgIGlmICghcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pCi0gICAgICAg
IHJldHVybjsKLQotICAgIENGUmVsZWFzZShwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbik7
Ci0gICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24gPSAwOworICAgIHByaXZhdGVCcm93
c2luZ1N0b3JhZ2VTZXNzaW9uKCkgPSBudWxscHRyOwogI2VuZGlmCiB9CiAKICNpZiBVU0UoQ0ZO
RVRXT1JLKQotQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
OjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKQorTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uOwotfQotCi1ib29sIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGZyYW1l
KCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLT5wcml2YXRl
QnJvd3NpbmdFbmFibGVkKCk7Ci19Ci0KLUNGVVJMU3RvcmFnZVNlc3Npb25SZWYgV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAotewotICAgIGJvb2wgcHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCA9IGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpOwotICAgIGlmIChw
cml2YXRlQnJvd3NpbmdFbmFibGVkKSB7Ci0gICAgICAgIEFTU0VSVChwcml2YXRlQnJvd3NpbmdT
dG9yYWdlU2Vzc2lvbik7Ci0gICAgICAgIHJldHVybiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vz
c2lvbjsKKyAgICBib29sIGluUHJpdmF0ZUJyb3dzaW5nTW9kZSA9IGZyYW1lKCkgJiYgZnJhbWUo
KS0+c2V0dGluZ3MoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLT5wcml2YXRlQnJvd3NpbmdFbmFi
bGVkKCk7CisgICAgaWYgKGluUHJpdmF0ZUJyb3dzaW5nTW9kZSkgeworICAgICAgICBBU1NFUlQo
cHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSk7CisgICAgICAgIHJldHVybiAqcHJpdmF0
ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKTsKICAgICB9Ci0gICAgcmV0dXJuIGRlZmF1bHRDRlN0
b3JhZ2VTZXNzaW9uOwotfQotCi12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENv
b2tpZUFjY2VwdFBvbGljeUZvclRlc3RpbmdDb250ZXh0KENGSFRUUENvb2tpZVN0b3JhZ2VBY2Nl
cHRQb2xpY3kgcG9saWN5KQotewotICAgIEFTU0VSVChkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbik7
Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGRlZmF1bHRDb29raWVTdG9y
YWdlID0gYWRvcHRDRih3a0NvcHlIVFRQQ29va2llU3RvcmFnZShkZWZhdWx0Q0ZTdG9yYWdlU2Vz
c2lvbikpOwotICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3koZGVm
YXVsdENvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7CisgICAgcmV0dXJuIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKIHZvaWQgV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yQWxsQ29udGV4dHMoQ0ZI
VFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeSBwb2xpY3kpCiB7Ci0gICAgaWYgKFJldGFpblB0
cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gZGVmYXVsdENGSFRUUENv
b2tpZVN0b3JhZ2UoKSkKKyAgICBpZiAoUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+
IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vz
c2lvbigpLmNvb2tpZVN0b3JhZ2UoKSkKICAgICAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENv
b2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBwb2xpY3kpOwogCi0gICAgaWYg
KHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKSB7Ci0gICAgICAgIFJldGFpblB0cjxDRkhU
VFBDb29raWVTdG9yYWdlUmVmPiBwcml2YXRlQnJvd3NpbmdDb29raWVTdG9yYWdlID0gYWRvcHRD
Rih3a0NvcHlIVFRQQ29va2llU3RvcmFnZShwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbikp
OwotICAgICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KHByaXZh
dGVCcm93c2luZ0Nvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7Ci0gICAgfQorICAgIGlmIChw
cml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpKQorICAgICAgICBDRkhUVFBDb29raWVTdG9y
YWdlU2V0Q29va2llQWNjZXB0UG9saWN5KHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkt
PmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgcG9saWN5KTsKIH0KICNlbmRpZgpJbmRleDogU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQuaAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSwxNCArMjksMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZShXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFdURjo6
U3RyaW5nJiB1c2VyQWdlbnQpOwogCiAgICAgc3RhdGljIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMg
dm9pZCBzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7CiAgICAgc3RhdGljIHZvaWQgZW5zdXJl
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKCk7CiAKICNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIHN0YXRpYyBDRlVS
TFN0b3JhZ2VTZXNzaW9uUmVmIGRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwotCi0gICAgc3RhdGlj
IHZvaWQgc2V0Q29va2llQWNjZXB0UG9saWN5Rm9yVGVzdGluZ0NvbnRleHQoQ0ZIVFRQQ29va2ll
U3RvcmFnZUFjY2VwdFBvbGljeSk7CiAgICAgc3RhdGljIHZvaWQgc2V0Q29va2llQWNjZXB0UG9s
aWN5Rm9yQWxsQ29udGV4dHMoQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeSk7CiAjZW5k
aWYKIApAQCAtNTAsOCArNDYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcg
dXNlckFnZW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCBXVEY6OlN0cmluZyByZWZlcnJlcigpIGNv
bnN0OwogI2lmIFVTRShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBib29sIGluUHJpdmF0ZUJyb3dz
aW5nTW9kZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9y
YWdlU2Vzc2lvbigpIGNvbnN0OworICAgIHZpcnR1YWwgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0OwogI2VuZGlmCiAgICAgdmlydHVhbCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCShyZXZpc2lvbiAxMzg0
MDcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw0NCArODYsMzQgQEAgdm9pZCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6Om5vdGlmeUNvb2tpZQogewogfQogCi0jaWYgVVNFKENGTkVUV09SSykK
LVJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmRlZmF1bHRDb29raWVTdG9yYWdlKCkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNv
b2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgaWYgKENGVVJMU3RvcmFn
ZVNlc3Npb25SZWYgc2Vzc2lvbiA9IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRlZmF1bHRT
dG9yYWdlU2Vzc2lvbigpKQotICAgICAgICByZXR1cm4gYWRvcHRDRih3a0NvcHlIVFRQQ29va2ll
U3RvcmFnZShzZXNzaW9uKSk7Ci0KLSAgICByZXR1cm4gd2tHZXREZWZhdWx0SFRUUENvb2tpZVN0
b3JhZ2UoKTsKLX0KLSNlbmRpZgotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29r
aWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiB1cmwpCi17Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JE
T00oY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2ll
c0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6c2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBj
b29raWVTdHJpbmcpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0Zyb21E
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewot
ICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwg
Y29va2llU3RyaW5nKTsKKyAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShzZXNzaW9uLCBm
aXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CiB9CiAKLWJvb2wgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3Qg
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVy
biBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAg
IHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwp
OwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAg
cmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnRleHQsIGZp
cnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLWJvb2wgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiBy
YXdDb29raWVzKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewotICAgIHJl
dHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwgcmF3
Q29va2llcyk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmly
c3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0gICAgV2ViQ29yZTo6
ZGVsZXRlQ29va2llKGNvbnRleHQsIHVybCwgY29va2llTmFtZSk7CisgICAgV2ViQ29yZTo6ZGVs
ZXRlQ29va2llKHNlc3Npb24sIHVybCwgY29va2llTmFtZSk7CiB9CiAKIHZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpyZWZyZXNoUGx1Z2lucygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAkocmV2
aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxh
dGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDE1ICs1MiwxMiBAQCBwcml2
YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lk
IG5vdGlmeUNvb2tpZXNDaGFuZ2VkKCk7Ci0jaWYgVVNFKENGTkVUV09SSykKLSAgICB2aXJ0dWFs
IFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBkZWZhdWx0Q29va2llU3RvcmFnZSgp
OwotI2VuZGlmCi0gICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShXZWJDb3JlOjpOZXR3
b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oV2ViQ29y
ZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBib29sIGNv
b2tpZXNFbmFibGVkKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgU3Ry
aW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250
ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VS
TCYpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKFdlYkNvcmU6Ok5ldHdvcmtpbmdD
b250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0
ZUNvb2tpZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwm
LCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29v
a2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0
cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAg
IHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxl
dGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VT
dHJhdGVneQogICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxh
dGZvcm1TdHJhdGVnaWVzV2luQ0UuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2Vi
S2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODMsMzQgKzgzLDM0IEBAIHZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzV2lu
Q0U6Om5vdGlmeUNvb2sKIHsKIH0KIAotU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpj
b29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6
OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNv
cmU6OmNvb2tpZXNGb3JET00oY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4g
V2ViQ29yZTo6Y29va2llc0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12
b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5n
Q29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzV2lu
Q0U6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IGNvb2tpZVN0cmluZykKIHsKLSAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShjb250ZXh0
LCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CisgICAgV2ViQ29yZTo6c2V0Q29va2ll
c0Zyb21ET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQogCi1i
b29sIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29u
dGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQor
Ym9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKGNvbnRleHQs
IGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHNl
c3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNX
aW5DRTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBQ
bGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdl
YkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZpcnN0UGFydHks
IHVybCk7CiB9CiAKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmdldFJhd0Nvb2tpZXMo
TmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIFBsYXRmb3JtU3Ry
YXRlZ2llc1dpbkNFOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8
Q29va2llPiYgcmF3Q29va2llcykKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2ll
cyhjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOworICAgIHJldHVybiBXZWJD
b3JlOjpnZXRSYXdDb29raWVzKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7
CiB9CiAKLXZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmRlbGV0ZUNvb2tpZShOZXR3b3Jr
aW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZU5hbWUpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpkZWxldGVDb29raWUoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgY29va2llTmFtZSkKIHsKLSAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoY29udGV4dCwg
dXJsLCBjb29raWVOYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc2Vzc2lvbiwgdXJs
LCBjb29raWVOYW1lKTsKIH0KIAogdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6cmVmcmVz
aFBsdWdpbnMoKQpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9QbGF0
Zm9ybVN0cmF0ZWdpZXNXaW5DRS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2Uv
V2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuaAkocmV2aXNpb24gMTM4NDA3
KQorKysgU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdp
ZXNXaW5DRS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMiArNTEsMTIgQEAgcHJpdmF0ZToKIAog
ICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneQogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlD
b29raWVzQ2hhbmdlZCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oV2ViQ29y
ZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9N
KFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwg
Ym9vbCBjb29raWVzRW5hYmxlZChXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdl
YkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0
dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShXZWJDb3JlOjpOZXR3b3Jr
aW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhXZWJDb3JlOjpOZXR3
b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwotICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVDb29raWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRP
TShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCB2b2lk
IHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBj
b25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwm
KTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFdlYkNvcmU6OkRh
dGFiYXNlU3RyYXRlZ3kKICAgICAvLyAtIFVzaW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCg==
</data>
<flag name="commit-queue"
          id="197911"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180600</attachid>
            <date>2012-12-22 01:33:03 -0800</date>
            <delta_ts>2012-12-22 14:04:34 -0800</delta_ts>
            <desc>patch for EWS</desc>
            <filename>StorageSession.txt</filename>
            <type>text/plain</type>
            <size>179267</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjAyOCw2ICsyMDI4LDcgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRUUFZhbGlkYXRpb24u
Y3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcAogICAgIHBsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCisgICAgcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29u
dGVudFR5cGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuY3BwCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNTc2MCw2ICs1NzYwLDcgQEAgd2ViY29y
ZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Byb3h5U2VydmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0YXRlTm90aWZpZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdGF0ZU5vdGlmaWVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9u
IDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAg
LTEwNjEsNiArMTA2MSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRU
UFZhbGlkYXRpb24uY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwIFwK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCBcCisgICAgcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcCBcCiAgICAgcGxhdGZv
cm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsv
UHJvdGVjdGlvblNwYWNlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5j
cHAgXApAQCAtMjI3Myw2ICsyMjc0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0
d29yay9IVFRQVmFsaWRhdGlvbi5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBTdGF0dXND
b2Rlcy5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmluZy5oIFwKKyAgICBwbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIFwKICAgICBwbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtpbmdDb250ZXh0LmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
YXRlTm90aWZpZXIuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5o
IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjA3LDcgKzIwNyw3IEBA
IF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yRDFFdgogX19aTjdXZWJDb3JlMTJjYWNoZVN0b3Jh
Z2VFdgogX19aTjdXZWJDb3JlMTJjcmVhdGVNYXJrdXBFUEtOU180Tm9kZUVOU18xM0VDaGlsZHJl
bk9ubHlFUE4zV1RGNlZlY3RvcklQUzBfTG0wRUVFTlNfMTNFQWJzb2x1dGVVUkxzRVBOUzVfSU5T
XzEzUXVhbGlmaWVkTmFtZUVMbTBFRUUKIF9fWk43V2ViQ29yZTEyY3JlYXRlTWFya3VwRVBLTlNf
NVJhbmdlRVBOM1dURjZWZWN0b3JJUE5TXzROb2RlRUxtMEVFRU5TXzIzRUFubm90YXRlRm9ySW50
ZXJjaGFuZ2VFYk5TXzEzRUFic29sdXRlVVJMc0UKLV9fWk43V2ViQ29yZTEyZGVsZXRlQ29va2ll
RVBOU18xN05ldHdvcmtpbmdDb250ZXh0RVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdFCitfX1pO
N1dlYkNvcmUxMmRlbGV0ZUNvb2tpZUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNf
NEtVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMmdjQ29udHJvbGxlckV2CiBfX1pO
N1dlYkNvcmUxMmljb25EYXRhYmFzZUV2CiBfX1pON1dlYkNvcmUxMnRvVWludDhBcnJheUVOM0pT
QzdKU1ZhbHVlRQpAQCAtMjM2LDEwICsyMzYsMTAgQEAgX19aTjdXZWJDb3JlMTNSZXNvdXJjZUVy
cm9yQzFFUDdOU0Vycm9yCiBfX1pON1dlYkNvcmUxM1Jlc291cmNlRXJyb3JDMUVQOV9fQ0ZFcnJv
cgogX19aTjdXZWJDb3JlMTNTdHlsZWRFbGVtZW50MjJzZXRJbmxpbmVTdHlsZVByb3BlcnR5RU5T
XzEzQ1NTUHJvcGVydHlJREVSS04zV1RGNlN0cmluZ0ViCiBfX1pON1dlYkNvcmUxM1N0eWxlZEVs
ZW1lbnQyMnNldElubGluZVN0eWxlUHJvcGVydHlFTlNfMTNDU1NQcm9wZXJ0eUlERWROU18xN0NT
U1ByaW1pdGl2ZVZhbHVlOVVuaXRUeXBlc0ViCi1fX1pON1dlYkNvcmUxM2Nvb2tpZXNGb3JET01F
UE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VSTEVTNF8KK19fWk43V2ViQ29yZTEzY29v
a2llc0ZvckRPTUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfNEtVUkxFUzVfCiBf
X1pON1dlYkNvcmUxM2NyZWF0ZVdyYXBwZXJFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUds
b2JhbE9iamVjdEVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUxM2RpcmVjdG9yeU5hbWVFUktOM1dU
RjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxM2dldFJhd0Nvb2tpZXNFUE5TXzE3TmV0d29ya2luZ0Nv
bnRleHRFUktOU180S1VSTEVTNF9STjNXVEY2VmVjdG9ySU5TXzZDb29raWVFTG0wRUVFCitfX1pO
N1dlYkNvcmUxM2dldFJhd0Nvb2tpZXNFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05T
XzRLVVJMRVM1X1JOM1dURjZWZWN0b3JJTlNfNkNvb2tpZUVMbTBFRUUKIF9fWk43V2ViQ29yZTEz
dG9BcnJheUJ1ZmZlckVOM0pTQzdKU1ZhbHVlRQogX19aTjdXZWJDb3JlMTN0b0hUTUxFbGVtZW50
RVBOU18yMUZvcm1Bc3NvY2lhdGVkRWxlbWVudEUKIF9fWk43V2ViQ29yZTEzdG9KU0RPTVdpbmRv
d0VOM0pTQzdKU1ZhbHVlRQpAQCAtMjU0LDYgKzI1NCwxMCBAQCBfX1pON1dlYkNvcmUxNERvY3Vt
ZW50TG9hZGVyMTNhdHRhY2hUb0ZyCiBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTVkZXRh
Y2hGcm9tRnJhbWVFdgogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjE4YWRkQXJjaGl2ZVJl
c291cmNlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzE1QXJjaGl2ZVJlc291cmNlRUVFCiBfX1pON1dl
YkNvcmUxNFJlc291cmNlTG9hZGVyMzJkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUVS
S05TXzIzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VFCitfX1pON1dlYkNvcmUxNGNvb2tpZXNFbmFi
bGVkRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU180S1VSTEVTNV8KK19fWk43V2Vi
Q29yZTE3c2V0Q29va2llc0Zyb21ET01FUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05T
XzRLVVJMRVM1X1JLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMjFOZXR3b3JrU3RvcmFnZVNl
c3Npb24yMWRlZmF1bHRTdG9yYWdlU2Vzc2lvbkV2CitfX1pON1dlYkNvcmUyMU5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjI1c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbkV2CiBfX1pON1dlYkNvcmUyMVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTExZGVzZXJpYWxpemVFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMxXzE0
SlNHbG9iYWxPYmplY3RFUE4zV1RGNlZlY3RvcklOUzZfNlJlZlB0cklOU18xMU1lc3NhZ2VQb3J0
RUVFTG0xRUVFTlNfMjJTZXJpYWxpemF0aW9uRXJyb3JNb2RlRQogX19aTjdXZWJDb3JlMjFTZXJp
YWxpemVkU2NyaXB0VmFsdWU2Y3JlYXRlRVBOM0pTQzlFeGVjU3RhdGVFTlMxXzdKU1ZhbHVlRVBO
M1dURjZWZWN0b3JJTlM1XzZSZWZQdHJJTlNfMTFNZXNzYWdlUG9ydEVFRUxtMUVFRVBOUzZfSU5T
N19JTlM1XzExQXJyYXlCdWZmZXJFRUVMbTFFRUVOU18yMlNlcmlhbGl6YXRpb25FcnJvck1vZGVF
CiBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTZjcmVhdGVFUktOM1dURjZTdHJp
bmdFCkBAIC0yODQsNyArMjg4LDYgQEAgX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjlzZWxl
Y3RBbGxFdgogX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbkMxRVBOU181RnJhbWVFCiBfX1pO
N1dlYkNvcmUxNExvYWRlclN0cmF0ZWd5MjFyZXNvdXJjZUxvYWRTY2hlZHVsZXJFdgogX19aTjdX
ZWJDb3JlMTRQbHVnaW5Eb2N1bWVudDEwcGx1Z2luTm9kZUV2Ci1fX1pON1dlYkNvcmUxNGNvb2tp
ZXNFbmFibGVkRVBOU18xN05ldHdvcmtpbmdDb250ZXh0RVJLTlNfNEtVUkxFUzRfCiBfX1pOSzdX
ZWJDb3JlNUZyYW1lMjV0cmFja2VkUmVwYWludFJlY3RzQXNUZXh0RXYKIF9fWk43V2ViQ29yZTlG
cmFtZVZpZXcxN3NldFRyYWNrc1JlcGFpbnRzRWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMHJl
c2V0VHJhY2tlZFJlcGFpbnRzRXYKQEAgLTQ4OCw3ICs0OTEsNyBAQCBfX1pON1dlYkNvcmUxNlZp
c2libGVTZWxlY3Rpb25DMUVSS05TXzE1CiBfX1pON1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb25D
MUVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRWIKIF9fWk43V2ViQ29yZTE2Y3JlYXRlRnVsbE1hcmt1
cEVQS05TXzROb2RlRQogX19aTjdXZWJDb3JlMTZjcmVhdGVGdWxsTWFya3VwRVBLTlNfNVJhbmdl
RQotX19aTjdXZWJDb3JlMTZkZWxldGVBbGxDb29raWVzRVBOU18xN05ldHdvcmtpbmdDb250ZXh0
RQorX19aTjdXZWJDb3JlMTZkZWxldGVBbGxDb29raWVzRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNl
c3Npb25FCiBfX1pON1dlYkNvcmUxNmVuY2xvc2luZ0ludFJlY3RFUktOU185RmxvYXRSZWN0RQog
X19aTjdXZWJDb3JlMTZpc0VuZE9mUGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNf
MjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCiBfX1pON1dlYkNvcmUxNmlzVXNlclZpc2li
bGVVUkxFUDhOU1N0cmluZwpAQCAtNTExLDcgKzUxNCw2IEBAIF9fWk43V2ViQ29yZTE3U3VicmVz
b3VyY2VMb2FkZXI2Y3JlYXRlRVAKIF9fWk43V2ViQ29yZTE3Vmlld3BvcnRBcmd1bWVudHMxOWRl
cHJlY2F0ZWRUYXJnZXREUElFCiBfX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0dXJlRVBOU18x
N0pTRE9NR2xvYmFsT2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNsYXNzSW5mb0UKIF9f
Wk43V2ViQ29yZTE3b3BlblRlbXBvcmFyeUZpbGVFUktOM1dURjZTdHJpbmdFUmkKLV9fWk43V2Vi
Q29yZTE3c2V0Q29va2llc0Zyb21ET01FUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VS
TEVTNF9SS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE3dXNlclZpc2libGVTdHJpbmdFUDVO
U1VSTAogX19aTjdXZWJDb3JlMThET01XaW5kb3dFeHRlbnNpb25DMUVQTlNfNUZyYW1lRVBOU18x
NURPTVdyYXBwZXJXb3JsZEUKIF9fWk43V2ViQ29yZTE4SFRNTENvbnRlbnRFbGVtZW50NmNyZWF0
ZUVQTlNfOERvY3VtZW50RQpAQCAtNTk1LDYgKzU5Nyw3IEBAIF9fWk43V2ViQ29yZTIwcHJvdG9j
b2xJc0phdmFTY3JpcHRFUktOM1cKIF9fWk43V2ViQ29yZTIwU3BhY2VTcGxpdFN0cmluZ0RhdGFE
MUV2CiBfX1pON1dlYkNvcmUyMUJhY2tGb3J3YXJkQ29udHJvbGxlcjExaXRlbUF0SW5kZXhFaQog
X19aTjdXZWJDb3JlMjFNZW1vcnlQcmVzc3VyZUhhbmRsZXI3aW5zdGFsbEV2CitfX1pON1dlYkNv
cmUyMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjI4Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkVS
S04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIxUGxhdGZvcm1LZXlib2FyZEV2ZW50MjRkaXNh
bWJpZ3VhdGVLZXlEb3duRXZlbnRFTlNfMTNQbGF0Zm9ybUV2ZW50NFR5cGVFYgogX19aTjdXZWJD
b3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIxOXN0YXJ0UmVzb3VyY2VMb2FkZXJFUE5TXzE0UmVz
b3VyY2VMb2FkZXJFCiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjIwc2VydmVQ
ZW5kaW5nUmVxdWVzdHNFTlNfMjBSZXNvdXJjZUxvYWRQcmlvcml0eUUKQEAgLTY1MCw3ICs2NTMs
NyBAQCBfX1pON1dlYkNvcmUyM2NyZWF0ZUZyYWdtZW50RnJvbU5vZGVzRVBOCiBfX1pON1dlYkNv
cmUyM2RhdGFGb3JVUkxDb21wb25lbnRUeXBlRVA1TlNVUkxsCiBfX1pON1dlYkNvcmUyM2RlY29k
ZUhvc3ROYW1lV2l0aFJhbmdlRVA4TlNTdHJpbmc4X05TUmFuZ2UKIF9fWk43V2ViQ29yZTIzZW5j
b2RlSG9zdE5hbWVXaXRoUmFuZ2VFUDhOU1N0cmluZzhfTlNSYW5nZQotX19aTjdXZWJDb3JlMjNn
ZXRIb3N0bmFtZXNXaXRoQ29va2llc0VQTlNfMTdOZXR3b3JraW5nQ29udGV4dEVSTjNXVEY3SGFz
aFNldElOUzJfNlN0cmluZ0VOUzJfMTBTdHJpbmdIYXNoRU5TMl8xMEhhc2hUcmFpdHNJUzRfRUVF
RQorX19aTjdXZWJDb3JlMjNnZXRIb3N0bmFtZXNXaXRoQ29va2llc0VSS05TXzIxTmV0d29ya1N0
b3JhZ2VTZXNzaW9uRVJOM1dURjdIYXNoU2V0SU5TM182U3RyaW5nRU5TM18xMFN0cmluZ0hhc2hF
TlMzXzEwSGFzaFRyYWl0c0lTNV9FRUVFCiBfX1pON1dlYkNvcmUyNEJpbmFyeVByb3BlcnR5TGlz
dFdyaXRlcjE3d3JpdGVQcm9wZXJ0eUxpc3RFdgogX19aTjdXZWJDb3JlMjRDYWNoZWRSZXNvdXJj
ZUhhbmRsZUJhc2UxMXNldFJlc291cmNlRVBOU18xNENhY2hlZFJlc291cmNlRQogX19aTjdXZWJD
b3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIxMGZpcnN0Q2hpbGRFdgpAQCAtNjY5LDcgKzY3
Miw3IEBAIF9fWk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyQzIKIF9fWk43V2Vi
Q29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyRDJFdgogX19aTjdXZWJDb3JlMjRjcmVhdGVG
cmFnbWVudEZyb21NYXJrdXBFUE5TXzhEb2N1bWVudEVSS04zV1RGNlN0cmluZ0VTNV9OU18yN0Zy
YWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbkUKIF9fWk43V2ViQ29yZTI0ZGVjb2RlVVJMRXNjYXBl
U2VxdWVuY2VzRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMjRkZWxldGVDb29raWVzRm9y
SG9zdG5hbWVFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOM1dURjZTdHJpbmdFCitfX1pON1dl
YkNvcmUyNGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNz
aW9uRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjRmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b25FUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyNG5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdl
ZEUKIF9fWk43V2ViQ29yZTI1SGlzdG9yeVByb3BlcnR5TGlzdFdyaXRlcjExcmVsZWFzZURhdGFF
dgpAQCAtNjk2LDEwICs2OTksOSBAQCBfX1pON1dlYkNvcmUyN0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvCiBfX1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazE0c2V0T3Jp
ZW50YXRpb25FTjNXVEYxMFBhc3NSZWZQdHJJTlNfMjFEZXZpY2VPcmllbnRhdGlvbkRhdGFFRUUK
IF9fWk43V2ViQ29yZTI3RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrQzFFdgogX19aTjdXZWJD
b3JlMjdzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXNFdgotX19aTjdXZWJDb3JlMjZkZWZhdWx0
Q0ZIVFRQQ29va2llU3RvcmFnZUV2CiBfX1pON1dlYkNvcmUyOGVuY29kZVdpdGhVUkxFc2NhcGVT
ZXF1ZW5jZXNFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyOHJlbW92ZUxhbmd1YWdlQ2hh
bmdlT2JzZXJ2ZXJFUHYKLV9fWk43V2ViQ29yZTI5Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWVFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VSTEVTNF8KK19fWk43V2ViQ29yZTI5
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWVFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lv
bkVSS05TXzRLVVJMRVM1XwogX19aTjdXZWJDb3JlMjlpc0NoYXJhY3RlclNtYXJ0UmVwbGFjZUV4
ZW1wdEVpYgogX19aTjdXZWJDb3JlMzBob3N0TmFtZU5lZWRzRGVjb2RpbmdXaXRoUmFuZ2VFUDhO
U1N0cmluZzhfTlNSYW5nZQogX19aTjdXZWJDb3JlMzBob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRo
UmFuZ2VFUDhOU1N0cmluZzhfTlNSYW5nZQpAQCAtMTMzMCw2ICsxMzMyLDcgQEAgX19aTks3V2Vi
Q29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U2aXNIVAogX19aTks3V2ViQ29yZTIwUmVzb3VyY2VS
ZXNwb25zZUJhc2U4bWltZVR5cGVFdgogX19aTks3V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9s
bGVyMTJmb3J3YXJkQ291bnRFdgogX19aTks3V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9sbGVy
OWJhY2tDb3VudEV2CitfX1pOSzdXZWJDb3JlMjFOZXR3b3JrU3RvcmFnZVNlc3Npb24xM2Nvb2tp
ZVN0b3JhZ2VFdgogX19aTks3V2ViQ29yZTIxUmVuZGVyTGF5ZXJDb21wb3NpdG9yMTFzY3JvbGxM
YXllckV2CiBfX1pOSzdXZWJDb3JlMjFSZW5kZXJMYXllckNvbXBvc2l0b3IxNXJvb3RSZW5kZXJM
YXllckV2CiBfX1pOSzdXZWJDb3JlMjFVc2VyQ29udGVudFVSTFBhdHRlcm43bWF0Y2hlc0VSS05T
XzRLVVJMRQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC00MzY3LDYgKzQzNjcsNyBA
QAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmNwcCcsCkBAIC00Mzg2LDcg
KzQzODcsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRp
b25DRi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZO
ZXQuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VD
Rk5ldC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9y
YWdlQ0ZOZXQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9jZi9Eb3dubG9hZEJ1bmRsZS5o
JywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzI2MjEsNiArMzI2MjEsMTAgQEAKIAkJCQkJ
PgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3Jt
XG5ldHdvcmtcTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJ
CQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXE5ldHdvcmtp
bmdDb250ZXh0LmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBAIC0zMjg0NCwxMCArMzI4NDgsNiBA
QAogCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJCQkJPC9GaWxlPgogCQkJCQk8RmlsZQot
CQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXENvb2tpZVN0b3JhZ2VD
Rk5ldC5oIgotCQkJCQkJPgotCQkJCQk8L0ZpbGU+Ci0JCQkJCTxGaWxlCiAJCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAi
CiAJCQkJCQk+CiAJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTMyOTQwLDYgKzMyOTQwLDEw
IEBACiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAi
CisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKIAkJCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGxhdGZvcm1cbmV0d29ya1xjZlxQcm94eVNlcnZlckNGTmV0LmNwcCIKIAkJCQkJCT4KIAkJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDM3LDcgKzIwMzcsNiBAQAogCQk3RUU2ODQ2MTEyRDI2RTM4MDBFNzk0MTUgLyogQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdFRTY4NDRFMTJEMjZFMzgwMEU3OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdFRTY4NDYyMTJEMjZFMzgwMEU3OTQxNSAvKiBDb29raWVKYXJDRk5ldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ0RjEyRDI2RTM4
MDBFNzk0MTUgLyogQ29va2llSmFyQ0ZOZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2MzEyRDI2RTM4
MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDUwMTJEMjZFMzgwMEU3OTQxNSAvKiBDb29r
aWVTdG9yYWdlQ0ZOZXQuY3BwICovOyB9OwotCQk3RUU2ODQ2NDEyRDI2RTM4MDBFNzk0MTUgLyog
Q29va2llU3RvcmFnZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VF
Njg0NjUxMkQyNkUzODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NTIxMkQyNkUz
ODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2
NjEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1MzEyRDI2RTM4MDBFNzk0
MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgKi87IH07CiAJCTdFRTY4NDY3MTJEMjZFMzgw
MEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1NDEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURh
dGFTdHJlYW1DRk5ldC5oICovOyB9OwpAQCAtNjA5NSw2ICs2MDk0LDggQEAKIAkJRTEzNEY1QUIx
MkVFMzQzRjAwNEVDNThEIC8qIEludFJlY3RIYXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTM0RjVBQTEyRUUzNDNGMDA0RUM1OEQgLyogSW50UmVj
dEhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMTM5ODY2MzE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTM5ODY2MTE1NDc4NDc0MDAx
RTNGNjUgLyogU3R5bGVSZXNvbHZlci5jcHAgKi87IH07CiAJCUUxMzk4NjY0MTU0Nzg0NzQwMDFF
M0Y2NSAvKiBTdHlsZVJlc29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTM5ODY2MjE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5o
ICovOyB9OworCQlFMTNFRjM0NDE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTNF
RjM0MjE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTEzRUYzNDkxNjg1MEM0
NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxM0VGMzQ3MTY4NTBDNDcwMDM0Qzgz
RiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgKi87IH07CiAJCUUxM0YwMUYxMTI3
MEUxOTAwMERGQkE3MSAvKiBDb29raWVTdG9yYWdlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEzRjAxRjAxMjcwRTE5MDAwREZCQTcxIC8qIENv
b2tpZVN0b3JhZ2VNYWMubW0gKi87IH07CiAJCUUxNDI0QzhBMTY0QjNCNEUwMEYzMkQ0MCAvKiBQ
bGF0Zm9ybUNvb2tpZUphci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTE0MjRDODkxNjRCM0I0RTAwRjMyRDQwIC8qIFBsYXRmb3JtQ29va2llSmFyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTE0MjRD
OTAxNjRCNDYwQjAwRjMyRDQwIC8qIENvb2tpZUphck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNDI0QzhGMTY0QjQ2MEIwMEYzMkQ0MCAvKiBD
b29raWVKYXJNYWMubW0gKi87IH07CkBAIC05MzcwLDcgKzkzNzEsNiBAQAogCQk3RUU2ODQ0RTEy
RDI2RTM4MDBFNzk0MTUgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NEYxMkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZUph
ckNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvb2tpZUph
ckNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTAxMkQyNkUz
ODAwRTc5NDE1IC8qIENvb2tpZVN0b3JhZ2VDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDb29raWVTdG9yYWdlQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNG
TmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tpZVN0b3JhZ2VDRk5l
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1MjEyRDI2RTM4MDBFNzk0
MTUgLyogQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTMxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybURhdGFT
dHJlYW1DRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDU0MTJE
MjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZvcm1EYXRhU3RyZWFtQ0ZOZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEzNTc2LDYgKzEzNTc2LDggQEAKIAkJRTEzNEY1QUExMkVFMzQzRjAwNEVD
NThEIC8qIEludFJlY3RIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
dFJlY3RIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMzk4NjYxMTU0Nzg0
NzQwMDFFM0Y2NSAvKiBTdHlsZVJlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0eWxlUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMTM5ODY2MjE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZVJlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUxM0VGMzQyMTY4NEVDRjQwMDM0QzgzRiAvKiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxM0VGMzQ3MTY4NTBD
NDcwMDM0QzgzRiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxM0YwMUVBMTI3MEUxMEQwMERGQkE3MSAv
KiBDb29raWVTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tp
ZVN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEzRjAxRjAxMjcwRTE5
MDAwREZCQTcxIC8qIENvb2tpZVN0b3JhZ2VNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBDb29raWVTdG9yYWdlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMTQyNEM4OTE2NEIzQjRFMDBGMzJENDAgLyogUGxhdGZvcm1Db29raWVKYXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxhdGZvcm1Db29raWVKYXIuaDsg
cGF0aCA9IG5ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE1ODMzLDYgKzE1ODM1LDcgQEAKIAkJCQkzN0REQ0Q5MjEzODQ0RkQ1MDAwOEI3
OTMgLyogTUlNRUhlYWRlci5jcHAgKi8sCiAJCQkJMzdERENEOTMxMzg0NEZENTAwMDhCNzkzIC8q
IE1JTUVIZWFkZXIuaCAqLywKIAkJCQk2MjhEMjE0QjEyMTMxRUQxMDA1NURDRkMgLyogTmV0d29y
a2luZ0NvbnRleHQuaCAqLywKKwkJCQlFMTNFRjM0MjE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmggKi8sCiAJCQkJMUE3RkE2MUEwRERBM0JCRTAwMjhGOEE1IC8qIE5l
dHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCAqLywKIAkJCQkxQTdGQTYxODBEREEzQjNBMDAyOEY4QTUg
LyogTmV0d29ya1N0YXRlTm90aWZpZXIuaCAqLywKIAkJCQk0NDc5NTgwMjE2NDNCNDdCMDAxRTBB
N0YgLyogUGFyc2VkQ29udGVudFR5cGUuY3BwICovLApAQCAtMjA0MDMsMTMgKzIwNDA2LDEzIEBA
CiAJCQkJN0VFNjg0NEUxMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmggKi8sCiAJCQkJN0VFNjg0NEYxMkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZUphckNGTmV0LmNw
cCAqLywKIAkJCQk3RUU2ODQ1MDEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0
LmNwcCAqLywKLQkJCQk3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNG
TmV0LmggKi8sCiAJCQkJN0VFNjg0NTIxMkQyNkUzODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9y
YWdlQ0ZOZXQuY3BwICovLAogCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5l
dC5jcHAgKi8sCiAJCQkJN0VFNjg0NTMxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU0MTJEMjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0
cmVhbUNGTmV0LmggKi8sCiAJCQkJN0VFNjg0NTUxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1
bkxvb3BDRi5jcHAgKi8sCiAJCQkJN0VFNjg0NTYxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1
bkxvb3BDRi5oICovLAorCQkJCUUxM0VGMzQ3MTY4NTBDNDcwMDM0QzgzRiAvKiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb25DRk5ldC5jcHAgKi8sCiAJCQkJMUFGOEUxQzExMjU2NzNFMDAwMjMwRkY3IC8q
IFByb3h5U2VydmVyQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAv
KiBSZXNvdXJjZUVycm9yLmggKi8sCiAJCQkJN0VFNjg0NTgxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlRXJyb3JDRi5jcHAgKi8sCkBAIC0yMjg5NCw3ICsyMjg5Nyw2IEBACiAJCQkJRDhCNjE1
MkYxMDMyNDk1MTAwQzg1NTRBIC8qIENvb2tpZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzM5QjVC
NjMxMzFEQUEzMjAwRjQ4RDAyIC8qIENvb2tpZXNTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzNEMDIxMkQxMzFEQjM3QjAwNDA5MUE4IC8qIENvb2tpZVN0b3JhZ2UuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTdFRTY4NDY0MTJEMjZFMzgwMEU3OTQxNSAvKiBDb29raWVTdG9yYWdlQ0ZOZXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZFNkZENDg4MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29yZGlu
YXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZEMDQwQTE5ODlDQTAwN0ZCOEM1IC8qIENv
dW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCOTc5MEU4MjA2OTIwMEIyNTk2NSAvKiBD
b3VudGVyQ29udGVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTk4Miw2ICsyNTk4NCw3IEBACiAJ
CQkJRjM3QTU2MjMxNjc5Q0Y3QjAwQzU3MDQ2IC8qIEhlYXBHcmFwaFNlcmlhbGl6ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjg4OTBBMTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCODg5MEYxNjdEMzAxNjAwMTBDREE1
IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTEzRUYz
NDQxNjg0RUNGNDAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0yOTEwMCw2ICsyOTEwMyw3IEBACiAJCQkJMEZCODg5MEIxNjdEMkZBMTAwMTBDREE1
IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCODg5
MEUxNjdEMzAxNjAwMTBDREE1IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyMDlCNDU2QjE2Nzk2QTdFMDBFNTRFNEUgLyogSlNDcnlwdG9DdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTEzRUYzNDkxNjg1MEM0NzAwMzRDODNGIC8qIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nvb2tpZUphci5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db29raWVKYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTmV0
d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvb2tpZUphci5oIgogCiAjaWYg
VVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCkBAIC00Myw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4dChjb25z
dCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CisgICAgLy8gRklYTUU6IFJldHVybmluZyAwIG1lYW5z
IGZhbGxpbmcgYmFjayB0byBkZWZhdWx0IGNvbnRleHQuIFRoYXQncyBub3QgYSBjaG9pY2UgdGhh
dCBpcyBhcHByb3ByaWF0ZSB0byBkbyBhdCBydW50aW1lCiAgICAgaWYgKCFkb2N1bWVudCkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CkBA
IC01NCw1NyArNTYsNjggQEAgc3RhdGljIE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29u
dAogICAgIHJldHVybiBsb2FkZXItPm5ldHdvcmtpbmdDb250ZXh0KCk7CiB9CiAKKyNpZiBQTEFU
Rk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCitpbmxpbmUgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzdG9yYWdlU2Vzc2lvbihjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQgPSBuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCk7CisgICAg
cmV0dXJuIGNvbnRleHQgPyBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpIDogTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKK30KKyNkZWZpbmUgU0VTU0lPTihk
b2N1bWVudCkgc3RvcmFnZVNlc3Npb24oZG9jdW1lbnQpCisjZWxzZQorI2RlZmluZSBTRVNTSU9O
KGRvY3VtZW50KSBOZXR3b3JrU3RvcmFnZVNlc3Npb24obmV0d29ya2luZ0NvbnRleHQoZG9jdW1l
bnQpKQorI2VuZGlmCisKIFN0cmluZyBjb29raWVzKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgS1VSTCYgdXJsKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAgIHJl
dHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmNvb2tpZXNGb3JE
T00obmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgdXJsKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNT
dHJhdGVneSgpLT5jb29raWVzRm9yRE9NKFNFU1NJT04oZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsKICNlbHNlCi0gICAgcmV0dXJuIGNvb2tpZXNGb3JE
T00obmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgdXJsKTsKKyAgICByZXR1cm4gY29va2llc0ZvckRPTShTRVNTSU9OKGRvY3VtZW50
KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVybCk7CiAjZW5kaWYKIH0KIAog
dm9pZCBzZXRDb29raWVzKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykK
LSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPnNldENvb2tpZXNG
cm9tRE9NKG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlG
b3JDb29raWVzKCksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+Y29va2llc1N0cmF0ZWd5KCktPnNldENvb2tpZXNGcm9tRE9NKFNFU1NJT04oZG9jdW1lbnQp
LCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBjb29raWVTdHJpbmcpOwog
I2Vsc2UKLSAgICBzZXRDb29raWVzRnJvbURPTShuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCks
IGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZVN0cmluZyk7Cisg
ICAgc2V0Q29va2llc0Zyb21ET00oU0VTU0lPTihkb2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZVN0cmluZyk7CiAjZW5kaWYKIH0KIAogYm9vbCBj
b29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAjaWYgVVNFKFBMQVRG
T1JNX1NUUkFURUdJRVMpCi0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVz
U3RyYXRlZ3koKS0+Y29va2llc0VuYWJsZWQobmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBk
b2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgZG9jdW1lbnQtPmNvb2tpZVVSTCgpKTsK
KyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5jb29r
aWVzRW5hYmxlZChTRVNTSU9OKGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29r
aWVzKCksIGRvY3VtZW50LT5jb29raWVVUkwoKSk7CiAjZWxzZQotICAgIHJldHVybiBjb29raWVz
RW5hYmxlZChuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCBkb2N1bWVudC0+Y29va2llVVJMKCkpOworICAgIHJldHVybiBjb29raWVz
RW5hYmxlZChTRVNTSU9OKGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVz
KCksIGRvY3VtZW50LT5jb29raWVVUkwoKSk7CiAjZW5kaWYKIH0KIAogU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VS
TCYgdXJsKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAgIHJldHVybiBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFy
dHlGb3JDb29raWVzKCksIHVybCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5j
b29raWVzU3RyYXRlZ3koKS0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU0VTU0lPTihk
b2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpOwogI2Vsc2UK
LSAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUobmV0d29ya2luZ0NvbnRl
eHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsKKyAg
ICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU0VTU0lPTihkb2N1bWVudCks
IGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpOwogI2VuZGlmCiB9CiAKIGJv
b2wgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVy
bCwgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMpCiB7CiAjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJ
RVMpCi0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+
Z2V0UmF3Q29va2llcyhuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCksIGRvY3VtZW50LT5maXJz
dFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOworICAgIHJldHVybiBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmdldFJhd0Nvb2tpZXMoU0VTU0lPTihkb2N1
bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOwog
I2Vsc2UKLSAgICByZXR1cm4gZ2V0UmF3Q29va2llcyhuZXR3b3JraW5nQ29udGV4dChkb2N1bWVu
dCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOworICAg
IHJldHVybiBnZXRSYXdDb29raWVzKFNFU1NJT04oZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBjb29raWVzKTsKICNlbmRpZgogfQogCiB2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb29raWVOYW1lKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+ZGVsZXRlQ29va2llKG5l
dHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmRlbGV0ZUNvb2tpZShTRVNTSU9OKGRv
Y3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKICNlbHNlCi0gICAgZGVsZXRlQ29va2llKG5ldHdv
cmtpbmdDb250ZXh0KGRvY3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBkZWxldGVDb29r
aWUoU0VTU0lPTihkb2N1bWVudCksIHVybCwgY29va2llTmFtZSk7CiAjZW5kaWYKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxMzg0
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlSG9z
dC5oIgogI2luY2x1ZGUgIkFzeW5jRmlsZVN0cmVhbS5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gMTM4NDA3KQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJDYWNoZVBvbGljeS5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJQdXJnZVByaW9yaXR5LmgiCisjaW5jbHVkZSAi
UmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0
LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAkocmV2
aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDMwICszMywyMiBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKE1B
QykgfHwgVVNFKENGTkVUV09SSykKLXR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0
b3JhZ2UqICBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgS1VSTDsKLWNsYXNzIE5ldHdvcmtpbmdDb250ZXh0OworY2xhc3MgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOwogc3RydWN0IENvb2tpZTsKIAogY2xhc3MgQ29va2llc1N0cmF0
ZWd5IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQoKSA9
IDA7CiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBS
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gZGVmYXVsdENvb2tpZVN0b3JhZ2UoKSA9
IDA7Ci0jZW5kaWYKLQotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2lu
Z0NvbnRleHQqLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmlu
ZykgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4
dCosIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmKSA9IDA7Ci0gICAgdmlydHVh
bCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOwotICAgIHZpcnR1YWwg
Ym9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+JikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiBjb29raWVOYW1lKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY29v
a2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXRS
YXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgfkNvb2tpZXNTdHJhdGVneSgpIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAkocmV2aXNpb24gMTM4
NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5k
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1
ZXN0LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOZXR3b3JrU3RvcmFnZVNlc3Np
b25faAorI2RlZmluZSBOZXR3b3JrU3RvcmFnZVNlc3Npb25faAorCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgUExBVEZP
Uk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQordHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTFN0
b3JhZ2VTZXNzaW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwordHlwZWRlZiBzdHJ1Y3QgT3Bh
cXVlQ0ZIVFRQQ29va2llU3RvcmFnZSogIENGSFRUUENvb2tpZVN0b3JhZ2VSZWY7CisjZW5kaWYK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOZXR3b3JraW5nQ29udGV4dDsKKworY2xh
c3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3
b3JrU3RvcmFnZVNlc3Npb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsK
KyAgICBzdGF0aWMgUGFzc093blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IGNyZWF0ZURlZmF1
bHRTZXNzaW9uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckJhc2UpOworICAgIHN0YXRpYyBQYXNz
T3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gY3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlKTsKKworICAgIHN0YXRpYyB2b2lkIHN3aXRj
aFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKKworI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVU
V09SSykKKyAgICAvLyBNYXkgYmUgbnVsbCwgaW4gd2hpY2ggY2FzZSBhIEZvdW5kYXRpb24gZGVm
YXVsdCBzaG91bGQgYmUgdXNlZC4KKyAgICBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHBsYXRmb3Jt
U2Vzc2lvbigpIHsgcmV0dXJuIG1fcGxhdGZvcm1TZXNzaW9uLmdldCgpOyB9CisgICAgUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UoKSBjb25zdDsKKyAgICBi
b29sIGlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNQcml2YXRl
OyB9CisjZWxzZQorICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihOZXR3b3JraW5nQ29udGV4dCop
OworICAgIH5OZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsKKyAgICBOZXR3b3JraW5nQ29udGV4dCog
Y29udGV4dCgpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisjaWYgUExBVEZPUk0oTUFDKSB8
fCBVU0UoQ0ZORVRXT1JLKQorICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihDRlVSTFN0b3JhZ2VT
ZXNzaW9uUmVmIHBsYXRmb3JtU2Vzc2lvbik7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKCk7
CisgICAgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IG1fcGxhdGZvcm1TZXNzaW9u
OworICAgIGJvb2wgbV9pc1ByaXZhdGU7CisjZWxzZQorICAgIFJlZlB0cjxOZXR3b3JraW5nQ29u
dGV4dD4gbV9jb250ZXh0OworI2VuZGlmCit9OworCisjaWYgUExBVEZPUk0oV0lOKQorLy8gTmVl
ZGVkIGZvciBXZWJLaXQxIEFQSSBvbmx5Lgordm9pZCBvdmVycmlkZUNvb2tpZVN0b3JhZ2UoQ0ZI
VFRQQ29va2llU3RvcmFnZVJlZik7CitDRkhUVFBDb29raWVTdG9yYWdlUmVmIG92ZXJyaWRlbkNv
b2tpZVN0b3JhZ2UoKTsKKyNlbmRpZgorCit9CisKKyNlbmRpZiAvLyBOZXR3b3JrU3RvcmFnZVNl
c3Npb25faApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25TdHViLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvblN0dWIuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHVi
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKKworI2luY2x1
ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitOZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbihOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCkKKyAgICA6IG1fY29udGV4dChj
b250ZXh0KQoreworfQorCitOZXR3b3JrU3RvcmFnZVNlc3Npb246On5OZXR3b3JrU3RvcmFnZVNl
c3Npb24oKQoreworfQorCitOZXR3b3JraW5nQ29udGV4dCogTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Ojpjb250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOworfQorCitQ
YXNzT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
cmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKGNvbnN0IFN0cmluZyYpCit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK05ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKQor
eworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBzZXNzaW9u
LCAoMCkpOworICAgIHJldHVybiBzZXNzaW9uOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpCit7Cit9CisKK30KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgJ
KHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsOSBAQAogI2lmbmRl
ZiBOZXR3b3JraW5nQ29udGV4dF9oCiAjZGVmaW5lIE5ldHdvcmtpbmdDb250ZXh0X2gKIAorI2lu
Y2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQogI2lu
Y2x1ZGUgIlNjaGVkdWxlUGFpci5oIgpAQCAtNDAsMTAgKzQyLDYgQEAgY2xhc3MgV2ViQ29va2ll
SmFyOwogT0JKQ19DTEFTUyBOU09wZXJhdGlvblF1ZXVlOwogI2VuZGlmCiAKLSNpZiBQTEFURk9S
TShNQUMpIHx8IFVTRShDRk5FVFdPUkspCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMU3Rv
cmFnZVNlc3Npb24qIENGVVJMU3RvcmFnZVNlc3Npb25SZWY7Ci0jZW5kaWYKLQogI2lmIFBMQVRG
T1JNKFFUKQogUVRfQkVHSU5fTkFNRVNQQUNFCiBjbGFzcyBRT2JqZWN0OwpAQCAtNjgsNiArNjYs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAKICNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICAvLyBGSVhNRTogV3JhcCBXZWJD
b29raWVKYXIgaW50byBhIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB0byBtYWtlIHRoZSBjb2RlIGNy
b3NzLXBsYXRmb3JtLgogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUph
cigpIGNvbnN0ID0gMDsKICNlbmRpZgogCkBAIC04MCwxMSArNzksMTIgQEAgcHVibGljOgogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBi
b29sIGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIENGVVJM
U3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0
dWFsIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCA9IDA7CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKFFUKQorICAgIC8vIEZJWE1FOiBXcmFwIFFOZXR3b3JrQWNj
ZXNzTWFuYWdlciBpbnRvIGEgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIHRvIG1ha2UgdGhlIGNvZGUg
Y3Jvc3MtcGxhdGZvcm0uCiAgICAgdmlydHVhbCBRT2JqZWN0KiBvcmlnaW5hdGluZ09iamVjdCgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFFOZXR3b3JrQWNjZXNzTWFuYWdlciogbmV0d29ya0Fj
Y2Vzc01hbmFnZXIoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIG1pbWVTbmlmZmluZ0Vu
YWJsZWQoKSBjb25zdCA9IDA7CkBAIC05OCw2ICs5OCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAj
aWYgVVNFKFNPVVApCisgICAgLy8gRklYTUU6IFdyYXAgU291cFNlc3Npb24gaW50byBhIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiB0byBtYWtlIHRoZSBjb2RlIGNyb3NzLXBsYXRmb3JtLgogICAgIHZp
cnR1YWwgU291cFNlc3Npb24qIHNvdXBTZXNzaW9uKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
dWludDY0X3QgaW5pdGlhdGluZ1BhZ2VJRCgpIGNvbnN0ID0gMDsKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QbGF0Zm9ybUNvb2tpZUphci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIu
aAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Q
bGF0Zm9ybUNvb2tpZUphci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxOSArMzQsMTkgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgS1VSTDsKLWNsYXNzIE5ldHdvcmtpbmdDb250ZXh0
OworY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogc3RydWN0IENvb2tpZTsKIAogLy8gSWYg
bmV0d29ya2luZyBjb250ZXh0IGlzIG51bGwsIGRlZmF1bHQgY29va2llIHN0b3JhZ2UgaXMgdXNl
ZC4KLVN0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpOwotdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3Jr
aW5nQ29udGV4dCosIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBjb25zdCBT
dHJpbmcmKTsKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJik7Ci1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJik7Ci1ib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiwgVmVjdG9yPENvb2tpZT4mKTsKLXZvaWQg
ZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmlu
ZyYpOwotdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCosIEhh
c2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKTsKLXZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1l
KE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7Ci12b2lkIGRlbGV0
ZUFsbENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqKTsKK1N0cmluZyBjb29raWVzRm9yRE9NKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmKTsKK3ZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYp
OworYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJik7CitTdHJpbmcgY29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpOworYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBW
ZWN0b3I8Q29va2llPiYpOwordm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOwordm9pZCBnZXRIb3N0bmFtZXNX
aXRoQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBIYXNoU2V0PFN0cmluZz4m
IGhvc3RuYW1lcyk7Cit2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKK3ZvaWQgZGVsZXRlQWxs
Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mKTsKIAogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAko
cmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1
ZGUgIkJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3
b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5j
bHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCShyZXZpc2lvbiAxMzg0
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDEzICsyNiwxMyBAQAogI2lmbmRlZiBSZXNvdXJjZUhhbmRs
ZV9oCiAjZGVmaW5lIFJlc291cmNlSGFuZGxlX2gKIAotI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DbGllbnQuaCIKICNpbmNsdWRl
ICJIVFRQSGVhZGVyTWFwLmgiCi0jaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogI2lmIFVT
RShTT1VQKQordHlwZWRlZiBzdHJ1Y3QgX0dUbHNDZXJ0aWZpY2F0ZSBHVGxzQ2VydGlmaWNhdGU7
CiB0eXBlZGVmIHN0cnVjdCBfU291cFNlc3Npb24gU291cFNlc3Npb247CiB0eXBlZGVmIHN0cnVj
dCBfU291cFJlcXVlc3QgU291cFJlcXVlc3Q7CiAjZW5kaWYKQEAgLTc4LDYgKzc4LDcgQEAgY2xh
c3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgRnJh
bWU7CiBjbGFzcyBLVVJMOworY2xhc3MgTmV0d29ya2luZ0NvbnRleHQ7CiBjbGFzcyBQcm90ZWN0
aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VIYW5kbGVDbGll
bnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
SW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbF9o
CiAjZGVmaW5lIFJlc291cmNlSGFuZGxlSW50ZXJuYWxfaAogCisjaW5jbHVkZSAiTmV0d29ya2lu
Z0NvbnRleHQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUph
ckNGTmV0LmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDkgKzI5
LDggQEAKICNpZiBVU0UoQ0ZORVRXT1JLKQogCiAjaW5jbHVkZSAiQ29va2llLmgiCi0jaW5jbHVk
ZSAiQ29va2llU3RvcmFnZUNGTmV0LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgotI2luY2x1ZGUgIk5l
dHdvcmtpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJTb2Z0TGlua2luZy5oIgogI2lu
Y2x1ZGUgPENGTmV0d29yay9DRkhUVFBDb29raWVzUHJpdi5oPgpAQCAtOTUsMTUgKzk0LDEyIEBA
IHN0YXRpYyBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gZmlsdGVyQ29va2kKICAgICByZXR1cm4gZmls
dGVyZWRDb29raWVzOwogfQogCi12b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgdmFsdWUpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS81
NjMyODgzPiBDRkhUVFBDb29raWVTdG9yYWdlIHN0b3JlcyBhbiBlbXB0eSBjb29raWUsIHdoaWNo
IHdvdWxkIGJlIHNlbnQgYXMgIkNvb2tpZTogPSIuCiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+
IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29u
dGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVT
dG9yYWdlKTsKLQogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsQ0YoQWRvcHRDRiwgdXJsLmNy
ZWF0ZUNGVVJMKCkpOwogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gZmlyc3RQYXJ0eUZvckNvb2tp
ZXNDRihBZG9wdENGLCBmaXJzdFBhcnR5LmNyZWF0ZUNGVVJMKCkpOwogCkBAIC0xMTksNTQgKzEx
NSw0MyBAQCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0CiAgICAgUmV0
YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVDcmVhdGVX
aXRoUmVzcG9uc2VIZWFkZXJGaWVsZHMoa0NGQWxsb2NhdG9yRGVmYXVsdCwKICAgICAgICAgaGVh
ZGVyRmllbGRzQ0YuZ2V0KCksIHVybENGLmdldCgpKSk7CiAKLSAgICBDRkhUVFBDb29raWVTdG9y
YWdlU2V0Q29va2llcyhjb29raWVTdG9yYWdlLmdldCgpLCBmaWx0ZXJDb29raWVzKGNvb2tpZXND
Ri5nZXQoKSkuZ2V0KCksIHVybENGLmdldCgpLCBmaXJzdFBhcnR5Rm9yQ29va2llc0NGLmdldCgp
KTsKKyAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llcyhzZXNzaW9uLmNvb2tpZVN0b3Jh
Z2UoKS5nZXQoKSwgZmlsdGVyQ29va2llcyhjb29raWVzQ0YuZ2V0KCkpLmdldCgpLCB1cmxDRi5n
ZXQoKSwgZmlyc3RQYXJ0eUZvckNvb2tpZXNDRi5nZXQoKSk7CiB9CiAKLVN0cmluZyBjb29raWVz
Rm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiwgY29uc3QgS1VS
TCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIFJldGFpblB0
cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJl
bnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3Jh
Z2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7Ci0KICAgICBSZXRhaW5QdHI8Q0ZVUkxS
ZWY+IHVybENGKEFkb3B0Q0YsIHVybC5jcmVhdGVDRlVSTCgpKTsKIAogICAgIGJvb2wgc2VjdXJl
ID0gdXJsLnByb3RvY29sSXMoImh0dHBzIik7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNv
b2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkwoY29v
a2llU3RvcmFnZS5nZXQoKSwgdXJsQ0YuZ2V0KCksIHNlY3VyZSkpOworICAgIFJldGFpblB0cjxD
RkFycmF5UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29r
aWVzRm9yVVJMKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCB1cmxDRi5nZXQoKSwgc2Vj
dXJlKSk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaGVhZGVyQ0YoQWRvcHRDRiwg
Q0ZIVFRQQ29va2llQ29weVJlcXVlc3RIZWFkZXJGaWVsZHMoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
ZmlsdGVyQ29va2llcyhjb29raWVzQ0YuZ2V0KCkpLmdldCgpKSk7CiAgICAgcmV0dXJuIChDRlN0
cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShoZWFkZXJDRi5nZXQoKSwgc19jb29raWVDRik7
CiB9CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29u
dGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVy
bCkKK1N0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBL
VVJMJiB1cmwpCiB7Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tp
ZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkg
OiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVTdG9yYWdl
KTsKLQogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsQ0YoQWRvcHRDRiwgdXJsLmNyZWF0ZUNG
VVJMKCkpOwogCiAgICAgYm9vbCBzZWN1cmUgPSB1cmwucHJvdG9jb2xJcygiaHR0cHMiKTsKLSAg
ICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29va2llc0NGKEFkb3B0Q0YsIENGSFRUUENvb2tpZVN0
b3JhZ2VDb3B5Q29va2llc0ZvclVSTChjb29raWVTdG9yYWdlLmdldCgpLCB1cmxDRi5nZXQoKSwg
c2VjdXJlKSk7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBD
RkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdl
KCkuZ2V0KCksIHVybENGLmdldCgpLCBzZWN1cmUpKTsKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9u
YXJ5UmVmPiBoZWFkZXJDRihBZG9wdENGLCBDRkhUVFBDb29raWVDb3B5UmVxdWVzdEhlYWRlckZp
ZWxkcyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjb29raWVzQ0YuZ2V0KCkpKTsKICAgICByZXR1cm4g
KENGU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGhlYWRlckNGLmdldCgpLCBzX2Nvb2tp
ZUNGKTsKIH0KIAotYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4dCogY29udGV4
dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCitib29s
IGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCiB7Ci0gICAgUmV0
YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8g
Y3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2ll
U3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsKLQotICAgIENGSFRUUENvb2tp
ZVN0b3JhZ2VBY2NlcHRQb2xpY3kgcG9saWN5ID0gQ0ZIVFRQQ29va2llU3RvcmFnZUdldENvb2tp
ZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpKTsKKyAgICBDRkhUVFBDb29raWVTdG9y
YWdlQWNjZXB0UG9saWN5IHBvbGljeSA9IENGSFRUUENvb2tpZVN0b3JhZ2VHZXRDb29raWVBY2Nl
cHRQb2xpY3koc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCkpOwogICAgIHJldHVybiBwb2xp
Y3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50
RG9tYWluIHx8IHBvbGljeSA9PSBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5QWx3YXlz
OwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+
JiByYXdDb29raWVzKQorYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVy
bCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmF3Q29va2llcy5jbGVhcigp
OwotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0g
Y29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENG
SFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7CiAKICAgICBS
ZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybENGKEFkb3B0Q0YsIHVybC5jcmVhdGVDRlVSTCgpKTsKIAog
ICAgIGJvb2wgc2VuZFNlY3VyZUNvb2tpZXMgPSB1cmwucHJvdG9jb2xJcygiaHR0cHMiKTsKLSAg
ICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29va2llc0NGKEFkb3B0Q0YsIENGSFRUUENvb2tpZVN0
b3JhZ2VDb3B5Q29va2llc0ZvclVSTChjb29raWVTdG9yYWdlLmdldCgpLCB1cmxDRi5nZXQoKSwg
c2VuZFNlY3VyZUNvb2tpZXMpKTsKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29va2llc0NG
KEFkb3B0Q0YsIENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2llc0ZvclVSTChzZXNzaW9uLmNv
b2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsQ0YuZ2V0KCksIHNlbmRTZWN1cmVDb29raWVzKSk7CiAK
ICAgICBDRkluZGV4IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KGNvb2tpZXNDRi5nZXQoKSk7CiAg
ICAgcmF3Q29va2llcy5yZXNlcnZlQ2FwYWNpdHkoY291bnQpOwpAQCAtMTkwLDEwICsxNzUsOSBA
QCBib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+
IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29u
dGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVT
dG9yYWdlKTsKKyAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3Rv
cmFnZSA9IHNlc3Npb24uY29va2llU3RvcmFnZSgpOwogCiAgICAgUmV0YWluUHRyPENGVVJMUmVm
PiB1cmxDRihBZG9wdENGLCB1cmwuY3JlYXRlQ0ZVUkwoKSk7CiAKQEAgLTIxMCwxMiArMTk0LDkg
QEAgdm9pZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbgogICAgIH0KIH0KIAot
dm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
SGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCit2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVz
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgSGFzaFNldDxTdHJpbmc+JiBo
b3N0bmFtZXMpCiB7Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tp
ZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkg
OiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVTdG9yYWdl
KTsKLQotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQ
Q29va2llU3RvcmFnZUNvcHlDb29raWVzKGNvb2tpZVN0b3JhZ2UuZ2V0KCkpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZBcnJheVJlZj4gY29va2llc0NGKEFkb3B0Q0YsIENGSFRUUENvb2tpZVN0b3JhZ2VD
b3B5Q29va2llcyhzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSkpOwogICAgIGlmICghY29v
a2llc0NGKQogICAgICAgICByZXR1cm47CiAKQEAgLTIyNywxMCArMjA4LDkgQEAgdm9pZCBnZXRI
b3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQwogICAgIH0KIH0KIAotdm9pZCBkZWxldGVD
b29raWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgaG9zdG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7Ci0gICAg
UmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0
ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29v
a2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsKKyAgICBSZXRhaW5QdHI8
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IHNlc3Npb24uY29va2llU3Rv
cmFnZSgpOwogCiAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBD
RkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXMoY29va2llU3RvcmFnZS5nZXQoKSkpOwogICAg
IGlmICghY29va2llc0NGKQpAQCAtMjQ1LDEyICsyMjUsOSBAQCB2b2lkIGRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZShOZXR3b3JraW5nCiAgICAgfQogfQogCi12b2lkIGRlbGV0ZUFsbENvb2tpZXMo
TmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCit2b2lkIGRlbGV0ZUFsbENvb2tpZXMoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQogewotICAgIFJldGFpblB0cjxDRkhUVFBD
b29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBD
b29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAg
ICBBU1NFUlQoY29va2llU3RvcmFnZSk7Ci0KLSAgICBDRkhUVFBDb29raWVTdG9yYWdlRGVsZXRl
QWxsQ29va2llcyhjb29raWVTdG9yYWdlLmdldCgpKTsKKyAgICBDRkhUVFBDb29raWVTdG9yYWdl
RGVsZXRlQWxsQ29va2llcyhzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAJKHJldmlzaW9uIDEz
ODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFn
ZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOSArMjYsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2UuaCIKIAotI2luY2x1ZGUgIkNvb2tpZVN0
b3JhZ2VDRk5ldC5oIgotCi0jaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJO
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiAj
aWYgUExBVEZPUk0oTUFDKQpAQCAtNDgsNTYgKzQ2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAjaWYgUExBVEZPUk0oV0lOKQogCi1zdGF0aWMgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWY+JiBjb29raWVTdG9yYWdlT3ZlcnJpZGUoKQotewotICAgIERFRklORV9TVEFUSUNfTE9D
QUwoUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+LCBjb29raWVTdG9yYWdlLCAoKSk7
Ci0gICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2U7Ci19Ci0KLSNlbmRpZgotCi1SZXRhaW5QdHI8Q0ZI
VFRQQ29va2llU3RvcmFnZVJlZj4gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQpCi17Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIGlmIChSZXRhaW5Q
dHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4mIG92ZXJyaWRlID0gY29va2llU3RvcmFnZU92ZXJy
aWRlKCkpCi0gICAgICAgIHJldHVybiBvdmVycmlkZTsKLSNlbmRpZgotCi0gICAgaWYgKENGVVJM
U3RvcmFnZVNlc3Npb25SZWYgc2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkpCi0g
ICAgICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4oQWRvcHRDRiwg
d2tDb3B5SFRUUENvb2tpZVN0b3JhZ2Uoc2Vzc2lvbikpOwotCi0jaWYgVVNFKENGTkVUV09SSykK
LSAgICByZXR1cm4gd2tHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UoKTsKLSNlbHNlCi0gICAg
Ly8gV2hlbiB1c2luZyBOU1VSTENvbm5lY3Rpb24sIHdlIGFsc28gdXNlIGl0cyBzaGFyZWQgY29v
a2llIHN0b3JhZ2UuCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCkKLXsKLSNpZiBQ
TEFURk9STShXSU4pCi0gICAgaWYgKFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiYg
b3ZlcnJpZGUgPSBjb29raWVTdG9yYWdlT3ZlcnJpZGUoKSkKLSAgICAgICAgcmV0dXJuIG92ZXJy
aWRlOwotI2VuZGlmCi0KLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNT
dHJhdGVneSgpLT5kZWZhdWx0Q29va2llU3RvcmFnZSgpOwotfQotCi0jaWYgUExBVEZPUk0oV0lO
KQotCi12b2lkIG92ZXJyaWRlQ29va2llU3RvcmFnZShDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNv
b2tpZVN0b3JhZ2UpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAvLyBGSVhN
RTogV2h5IGRvbid0IHdlIHJldGFpbiBpdD8gVGhlIG9ubHkgY2FsbGVyIGlzIGFuIEFQSSBtZXRo
b2QgdGhhdCB0YWtlcyBjb29raWUgc3RvcmFnZSBhcyBhIHJhdyBhcmd1bWVudC4KLSAgICBjb29r
aWVTdG9yYWdlT3ZlcnJpZGUoKS5hZG9wdENGKGNvb2tpZVN0b3JhZ2UpOwotfQotCi1DRkhUVFBD
b29raWVTdG9yYWdlUmVmIG92ZXJyaWRlbkNvb2tpZVN0b3JhZ2UoKQotewotICAgIHJldHVybiBj
b29raWVTdG9yYWdlT3ZlcnJpZGUoKS5nZXQoKTsKLX0KLQogc3RhdGljIHZvaWQgbm90aWZ5Q29v
a2llc0NoYW5nZWRPbk1haW5UaHJlYWQodm9pZCopCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKQEAgLTEzMCw3ICs3OCw3IEBAIHZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2Vz
KCkKICAgICBDRlJ1bkxvb3BSZWYgcnVuTG9vcCA9IGNvb2tpZVN0b3JhZ2VPYnNlcnZlclJ1bkxv
b3AoKTsKICAgICBBU1NFUlQocnVuTG9vcCk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2ll
U3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCk7
CisgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3Jh
Z2UoKTsKICAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7CiAKICAgICBDRkhUVFBDb29raWVTdG9y
YWdlU2NoZWR1bGVXaXRoUnVuTG9vcChjb29raWVTdG9yYWdlLmdldCgpLCBydW5Mb29wLCBrQ0ZS
dW5Mb29wQ29tbW9uTW9kZXMpOwpAQCAtMTQ0LDcgKzkyLDcgQEAgdm9pZCBzdG9wT2JzZXJ2aW5n
Q29va2llQ2hhbmdlcygpCiAgICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBjb29raWVTdG9yYWdl
T2JzZXJ2ZXJSdW5Mb29wKCk7CiAgICAgQVNTRVJUKHJ1bkxvb3ApOwogCi0gICAgUmV0YWluUHRy
PENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBkZWZhdWx0Q0ZIVFRQQ29v
a2llU3RvcmFnZSgpOworICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29r
aWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24o
KS5jb29raWVTdG9yYWdlKCk7CiAgICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwogCiAgICAgQ0ZI
VFRQQ29va2llU3RvcmFnZVJlbW92ZU9ic2VydmVyKGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHJ1bkxv
b3AsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSwgbm90aWZ5Q29va2llc0NoYW5nZWQsIDApOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tp
ZVN0b3JhZ2VDRk5ldC5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIENvb2tpZVN0b3JhZ2VDRk5ldF9oCi0jZGVm
aW5lIENvb2tpZVN0b3JhZ2VDRk5ldF9oCi0KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0K
LXR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0b3JhZ2UqICBDRkhUVFBDb29raWVT
dG9yYWdlUmVmOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE5ldHdvcmtpbmdDb250
ZXh0OwotCi1SZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY3VycmVudENGSFRUUENv
b2tpZVN0b3JhZ2UoTmV0d29ya2luZ0NvbnRleHQqKTsgLy8gV2lsbCBiZSBudWxsIHdoZW4gdXNp
bmcgc2hhcmVkIE5TSFRUUENvb2tpZVN0b3JhZ2UuCi1SZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3Rv
cmFnZVJlZj4gZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsgLy8gRG9lc24ndCB0YWtlIGN1
cnJlbnQgc2Vzc2lvbiBpbnRvIGFjY291bnQuCi0KLSNpZiBQTEFURk9STShXSU4pCi0vLyBOZWVk
ZWQgZm9yIFdlYktpdDEgQVBJIG9ubHkuCi12b2lkIG92ZXJyaWRlQ29va2llU3RvcmFnZShDRkhU
VFBDb29raWVTdG9yYWdlUmVmKTsKLUNGSFRUUENvb2tpZVN0b3JhZ2VSZWYgb3ZlcnJpZGVuQ29v
a2llU3RvcmFnZSgpOwotI2VuZGlmCi0KLX0KLQotI2VuZGlmIC8vIENvb2tpZVN0b3JhZ2VDRk5l
dF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ0ZOZXQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIK
KworI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KKworI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNl
LmgiCisjZWxzZQorI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1J
bnRlcmZhY2UuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK05ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKENGVVJMU3RvcmFnZVNlc3Npb25SZWYg
cGxhdGZvcm1TZXNzaW9uKQorICAgIDogbV9wbGF0Zm9ybVNlc3Npb24ocGxhdGZvcm1TZXNzaW9u
KQorICAgICwgbV9pc1ByaXZhdGUoZmFsc2UpCit7Cit9CisKK3N0YXRpYyBPd25QdHI8TmV0d29y
a1N0b3JhZ2VTZXNzaW9uPiYgZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE93blB0cjxO
ZXR3b3JrU3RvcmFnZVNlc3Npb24+LCBzZXNzaW9uLCAoKSk7CisgICAgcmV0dXJuIHNlc3Npb247
Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNz
aW9uKCkKK3sKKyAgICAvLyBTZXQgYSBwcml2YXRlIHNlc3Npb24gZm9yIHRlc3RpbmcgdG8gYXZv
aWQgaW50ZXJmZXJpbmcgd2l0aCBnbG9iYWwgY29va2llcy4gVGhpcyBzaG91bGQgYmUgZGlmZmVy
ZW50IGZyb20gcHJpdmF0ZSBicm93c2luZyBzZXNzaW9uLgorICAgIC8vIEZJWE1FOiBJdCBsb29r
cyBsaWtlIGNyZWF0aW5nIGEgbmV3IHNlc3Npb24gd2l0aCB0aGUgc2FtZSBpZGVudGlmaWVyIG1h
eSBiZSBqdXN0IGNyZWF0aW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBzYW1lIHN0b3JhZ2UuIFNlZSA8
cmRhcjovL3Byb2JsZW0vMTE1NzE0NTA+IGFuZCA8cmRhcjovL3Byb2JsZW0vMTIzODQzODA+Lgor
I2lmIFBMQVRGT1JNKE1BQykKKyAgICBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgPSBh
ZG9wdFB0cihuZXcgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKHdrQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VT
ZXNzaW9uKENGU1RSKCJQcml2YXRlIFdlYktpdCBTZXNzaW9uIikpKSk7CisjZWxzZQorICAgIGRl
ZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSA9IGFkb3B0UHRyKG5ldyBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24od2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTVFIoIlByaXZhdGUgV2Vi
S2l0IFNlc3Npb24iKSwgZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLT5wbGF0Zm9ybVNl
c3Npb24oKSkpKTsKKyNlbmRpZgorfQorCisjaWYgUExBVEZPUk0oV0lOKQorc3RhdGljIFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiYgY29va2llU3RvcmFnZU92ZXJyaWRlKCkKK3sK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVm
PiwgY29va2llU3RvcmFnZSwgKCkpOworICAgIHJldHVybiBjb29raWVTdG9yYWdlOworfQorCit2
b2lkIG92ZXJyaWRlQ29va2llU3RvcmFnZShDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0
b3JhZ2UpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAvLyBGSVhNRTogV2h5
IGRvbid0IHdlIHJldGFpbiBpdD8gVGhlIG9ubHkgY2FsbGVyIGlzIGFuIEFQSSBtZXRob2QgdGhh
dCB0YWtlcyBjb29raWUgc3RvcmFnZSBhcyBhIHJhdyBhcmd1bWVudC4KKyAgICBjb29raWVTdG9y
YWdlT3ZlcnJpZGUoKS5hZG9wdENGKGNvb2tpZVN0b3JhZ2UpOworfQorCitDRkhUVFBDb29raWVT
dG9yYWdlUmVmIG92ZXJyaWRlbkNvb2tpZVN0b3JhZ2UoKQoreworICAgIHJldHVybiBjb29raWVT
dG9yYWdlT3ZlcnJpZGUoKS5nZXQoKTsKK30KKyNlbmRpZgorCitOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkKK3sKKyAg
ICBpZiAoIWRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSkKKyAgICAgICAgZGVmYXVsdE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbigpID0gYWRvcHRQdHIobmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bigwKSk7CisgICAgcmV0dXJuICpkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCk7Cit9CisK
K1Bhc3NPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyQmFz
ZSkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmSWRlbnRpZmllciA9IFN0cmluZyhp
ZGVudGlmaWVyQmFzZSArICIuUHJpdmF0ZUJyb3dzaW5nIikuY3JlYXRlQ0ZTdHJpbmcoKTsKKwor
I2lmIFBMQVRGT1JNKE1BQykKKyAgICBPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBzZXNz
aW9uID0gYWRvcHRQdHIobmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbih3a0NyZWF0ZVByaXZhdGVT
dG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCkpKSk7CisjZWxzZQorICAgIE93blB0cjxO
ZXR3b3JrU3RvcmFnZVNlc3Npb24+IHNlc3Npb24gPSBhZG9wdFB0cihuZXcgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKHdrQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKGNmSWRlbnRpZmllci5nZXQo
KSwgZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLT5wbGF0Zm9ybVNlc3Npb24oKSkpKTsK
KyNlbmRpZgorICAgIHNlc3Npb24tPm1faXNQcml2YXRlID0gdHJ1ZTsKKworICAgIHJldHVybiBz
ZXNzaW9uLnJlbGVhc2UoKTsKK30KKworUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llU3RvcmFnZSgpIGNvbnN0Cit7CisjaWYgUExB
VEZPUk0oV0lOKQorICAgIGlmIChSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4mIG92
ZXJyaWRlID0gY29va2llU3RvcmFnZU92ZXJyaWRlKCkpCisgICAgICAgIHJldHVybiBvdmVycmlk
ZTsKKyNlbmRpZgorCisgICAgaWYgKG1fcGxhdGZvcm1TZXNzaW9uKQorICAgICAgICByZXR1cm4g
UmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+KEFkb3B0Q0YsIHdrQ29weUhUVFBDb29r
aWVTdG9yYWdlKG1fcGxhdGZvcm1TZXNzaW9uLmdldCgpKSk7CisKKyNpZiBVU0UoQ0ZORVRXT1JL
KQorICAgIHJldHVybiB3a0dldERlZmF1bHRIVFRQQ29va2llU3RvcmFnZSgpOworI2Vsc2UKKyAg
ICAvLyBXaGVuIHVzaW5nIE5TVVJMQ29ubmVjdGlvbiwgd2UgYWxzbyB1c2UgaXRzIHNoYXJlZCBj
b29raWUgc3RvcmFnZS4KKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCit9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRk5ldC5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIKICNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgotI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2VDRk5l
dC5oIgogI2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJGb3JtRGF0YVN0cmVhbUNGTmV0LmgiCkBAIC0zOCw2
ICszNyw3IEBACiAjaW5jbHVkZSAiTG9hZGVyUnVuTG9vcENGLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5n
Q29udGV4dC5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKQEAgLTM5OSw3
ICszOTksNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVQCiB7CiAg
ICAgLy8gSWYgYSBVUkwgYWxyZWFkeSBoYXMgY29va2llcywgdGhlbiB3ZSdsbCByZWxheCB0aGUg
M3JkIHBhcnR5IGNvb2tpZSBwb2xpY3kgYW5kIGFjY2VwdCBuZXcgY29va2llcy4KIAotICAgIFJl
dGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjZkNvb2tpZVN0b3JhZ2UgPSBjdXJyZW50
Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KTsKKyAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2ll
U3RvcmFnZVJlZj4gY2ZDb29raWVTdG9yYWdlID0gY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5j
b29raWVTdG9yYWdlKCk7CiAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeSBjb29r
aWVBY2NlcHRQb2xpY3kgPSBDRkhUVFBDb29raWVTdG9yYWdlR2V0Q29va2llQWNjZXB0UG9saWN5
KGNmQ29va2llU3RvcmFnZS5nZXQoKSk7CiAKICAgICBpZiAoY29va2llQWNjZXB0UG9saWN5ICE9
IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFp
bikKQEAgLTUwNiw3ICs1MDYsNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydChOZXR3b3Jr
aW5nQ29uCiAgICAgaWYgKCFjb250ZXh0LT5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGQtPm1fc3RvcmFnZVNlc3Npb24gPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigp
OworICAgIGQtPm1fc3RvcmFnZVNlc3Npb24gPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLnBs
YXRmb3JtU2Vzc2lvbigpOwogCiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSA9
ICFjbGllbnQoKSB8fCBjbGllbnQoKS0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UodGhpcyk7
CiAKQEAgLTc0MSw3ICs3NDEsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VT
eW5jaHJvCiAKICAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGhhbmRsZSA9IGFkb3B0UmVmKG5l
dyBSZXNvdXJjZUhhbmRsZShyZXF1ZXN0LCBjbGllbnQuZ2V0KCksIGZhbHNlIC8qZGVmZXJzTG9h
ZGluZyovLCB0cnVlIC8qc2hvdWxkQ29udGVudFNuaWZmKi8pKTsKIAotICAgIGhhbmRsZS0+ZC0+
bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCk7CisgICAgaGFuZGxl
LT5kLT5tX3N0b3JhZ2VTZXNzaW9uID0gY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5wbGF0Zm9y
bVNlc3Npb24oKTsKIAogICAgIGlmIChoYW5kbGUtPmQtPm1fc2NoZWR1bGVkRmFpbHVyZVR5cGUg
IT0gTm9GYWlsdXJlKSB7CiAgICAgICAgIGVycm9yID0gY29udGV4dC0+YmxvY2tlZEVycm9yKHJl
cXVlc3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9D
b29raWVKYXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jaHJvbWl1bS9Db29raWVKYXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDEzODQw
NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFy
Q2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw1NSArNDEsNTUgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi12b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikKK3ZvaWQgc2V0Q29va2llc0Zyb21ET00oY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
Rm9yQ29va2llcywgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikKIHsK
LSAgICBpZiAoIWNvbnRleHQpCisgICAgaWYgKCFzZXNzaW9uLmNvbnRleHQoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVKYXIgPSBjb250ZXh0LT5j
b29raWVKYXIoKTsKKyAgICBXZWJLaXQ6OldlYkNvb2tpZUphciogY29va2llSmFyID0gc2Vzc2lv
bi5jb250ZXh0KCktPmNvb2tpZUphcigpOwogICAgIGlmIChjb29raWVKYXIpCiAgICAgICAgIGNv
b2tpZUphci0+c2V0Q29va2llKHVybCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvb2tpZVN0cik7
CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5n
IGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgS1VSTCYgdXJsKQogewotICAgIGlm
ICghY29udGV4dCkKKyAgICBpZiAoIXNlc3Npb24uY29udGV4dCgpKQogICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAgICAgU3RyaW5nIHJlc3VsdDsKLSAgICBXZWJLaXQ6OldlYkNvb2tpZUphciog
Y29va2llSmFyID0gY29udGV4dC0+Y29va2llSmFyKCk7CisgICAgV2ViS2l0OjpXZWJDb29raWVK
YXIqIGNvb2tpZUphciA9IHNlc3Npb24uY29udGV4dCgpLT5jb29raWVKYXIoKTsKICAgICBpZiAo
Y29va2llSmFyKQogICAgICAgICByZXN1bHQgPSBjb29raWVKYXItPmNvb2tpZXModXJsLCBmaXJz
dFBhcnR5Rm9yQ29va2llcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotU3RyaW5nIGNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtVUkwmIHVy
bCkKIHsKLSAgICBpZiAoIWNvbnRleHQpCisgICAgaWYgKCFzZXNzaW9uLmNvbnRleHQoKSkKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIFN0cmluZyByZXN1bHQ7Ci0gICAgV2ViS2l0OjpX
ZWJDb29raWVKYXIqIGNvb2tpZUphciA9IGNvbnRleHQtPmNvb2tpZUphcigpOworICAgIFdlYktp
dDo6V2ViQ29va2llSmFyKiBjb29raWVKYXIgPSBzZXNzaW9uLmNvbnRleHQoKS0+Y29va2llSmFy
KCk7CiAgICAgaWYgKGNvb2tpZUphcikKICAgICAgICAgcmVzdWx0ID0gY29va2llSmFyLT5jb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSh1cmwsIGZpcnN0UGFydHlGb3JDb29raWVzKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIGNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBjb29raWVVUkwsIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHlGb3JDb29raWVzKQorYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGNvb2tpZVVSTCwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eUZvckNvb2tpZXMpCiB7CiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBpZiAoIWNv
bnRleHQpCisgICAgaWYgKCFzZXNzaW9uLmNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKLSAgICBXZWJLaXQ6OldlYkNvb2tpZUphciogY29va2llSmFyID0gY29udGV4dC0+Y29va2ll
SmFyKCk7CisgICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9IHNlc3Npb24uY29u
dGV4dCgpLT5jb29raWVKYXIoKTsKICAgICBpZiAoY29va2llSmFyKQogICAgICAgICByZXN1bHQg
PSBjb29raWVKYXItPmNvb2tpZXNFbmFibGVkKGNvb2tpZVVSTCwgZmlyc3RQYXJ0eUZvckNvb2tp
ZXMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgZ2V0UmF3Q29va2llcyhOZXR3b3Jr
aW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNv
bnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIGdldFJhd0Nv
b2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBm
aXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3
Q29va2llcykKIHsKICAgICByYXdDb29raWVzLmNsZWFyKCk7Ci0gICAgaWYgKCFjb250ZXh0KQor
ICAgIGlmICghc2Vzc2lvbi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBX
ZWJLaXQ6OldlYlZlY3RvcjxXZWJLaXQ6OldlYkNvb2tpZT4gd2ViQ29va2llczsKLSAgICBXZWJL
aXQ6OldlYkNvb2tpZUphciogY29va2llSmFyID0gY29udGV4dC0+Y29va2llSmFyKCk7CisgICAg
V2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9IHNlc3Npb24uY29udGV4dCgpLT5jb29r
aWVKYXIoKTsKICAgICBpZiAoY29va2llSmFyKQogICAgICAgICBjb29raWVKYXItPnJhd0Nvb2tp
ZXModXJsLCBmaXJzdFBhcnR5Rm9yQ29va2llcywgd2ViQ29va2llcyk7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHdlYkNvb2tpZXMuc2l6ZSgpOyArK2kpIHsKQEAgLTEwMCwyNiArMTAw
LDI2IEBAIGJvb2wgZ2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY28KICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdm9pZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBkZWxl
dGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKLSAgICBpZiAoIWNvbnRleHQpCisg
ICAgaWYgKCFzZXNzaW9uLmNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFdlYktpdDo6
V2ViQ29va2llSmFyKiBjb29raWVKYXIgPSBjb250ZXh0LT5jb29raWVKYXIoKTsKKyAgICBXZWJL
aXQ6OldlYkNvb2tpZUphciogY29va2llSmFyID0gc2Vzc2lvbi5jb250ZXh0KCktPmNvb2tpZUph
cigpOwogICAgIGlmIChjb29raWVKYXIpCiAgICAgICAgIGNvb2tpZUphci0+ZGVsZXRlQ29va2ll
KHVybCwgY29va2llTmFtZSk7CiB9CiAKLXZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0
d29ya2luZ0NvbnRleHQqIC8qY29udGV4dCovLCBIYXNoU2V0PFN0cmluZz4mIC8qaG9zdG5hbWVz
Ki8pCit2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIEhhc2hTZXQ8U3RyaW5nPiYgLypob3N0bmFtZXMqLykKIHsKICAgICAvLyBGSVhNRTog
Tm90IHlldCBpbXBsZW1lbnRlZAogfQogCi12b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShO
ZXR3b3JraW5nQ29udGV4dCogLypjb250ZXh0Ki8sIGNvbnN0IFN0cmluZyYgLypob3N0bmFtZSov
KQordm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgU3RyaW5nJiAvKmhvc3RuYW1lKi8pCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5
ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250
ZXh0KiAvKmNvbnRleHQqLykKK3ZvaWQgZGVsZXRlQWxsQ29va2llcyhjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1Jlc291cmNlSGFu
ZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2No
cm9taXVtL1Jlc291cmNlSGFuZGxlLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9SZXNvdXJjZUhhbmRsZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDkgKzMxLDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VIYW5kbGUuaCIKIAorI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCisj
aW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJXcmFwcGVkUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiV3JhcHBlZFJlc291cmNlUmVzcG9uc2UuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAJKHJldmlz
aW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29r
aWVKYXJDdXJsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNTAgKzI3LDUwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGNvb2tpZUphcjsK
IAotdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IEtVUkwm
LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit2b2lkIHNldENvb2tpZXNG
cm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgY29va2llSmFyLnNldCh1cmwu
c3RyaW5nKCksIHZhbHVlKTsKIH0KIAotU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2luZ0Nv
bnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JE
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwm
IHVybCkKIHsKICAgICByZXR1cm4gY29va2llSmFyLmdldCh1cmwuc3RyaW5nKCkpOwogfQogCi1T
dHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCitTdHJp
bmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKIHsKICAg
ICAvLyBGSVhNRTogaW5jbHVkZSBIdHRwT25seSBjb29raWUuCiAgICAgcmV0dXJuIGNvb2tpZUph
ci5nZXQodXJsLnN0cmluZygpKTsKIH0KIAotYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5n
Q29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwm
IC8qdXJsKi8pCitib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQogewog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVy
bCovLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2llcyhjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29u
c3QgS1VSTCYgLyp1cmwqLywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgLy8g
RklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAgICAg
cmV0dXJuIGZhbHNlOyAvLyByZXR1cm4gdHJ1ZSB3aGVuIGltcGxlbWVudGVkCiB9CiAKLXZvaWQg
ZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmlu
ZyYpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBLVVJMJiwgY29uc3QgU3RyaW5nJikKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1l
bnRlZAogfQogCi12b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0
KiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCit2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29r
aWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5h
bWVzKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVs
ZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBo
b3N0bmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAgLy8gRklYTUU6IE5v
dCB5ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtpbmdD
b250ZXh0KikKK3ZvaWQgZGVsZXRlQWxsQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VIYW5kbGVDdXJsLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogCiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5o
IgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlTWFuYWdlci5oIgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5t
bQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvQ29va2llSmFyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSw4IEBACiAjaW1w
b3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkNvb2tpZS5oIgogI2ltcG9ydCAiQ29v
a2llU3RvcmFnZS5oIgotI2ltcG9ydCAiQ29va2llU3RvcmFnZUNGTmV0LmgiCiAjaW1wb3J0ICJL
VVJMLmgiCi0jaW1wb3J0ICJOZXR3b3JraW5nQ29udGV4dC5oIgorI2ltcG9ydCAiTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYyLDMxICs2MSwyOSBAQCBzdGF0aWMgUmV0YWluUHRyPE5T
QXJyYXk+IGZpbHRlckNvb2tpZXMoCiAgICAgcmV0dXJuIGZpbHRlcmVkQ29va2llczsKIH0KIAot
U3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtV
UkwmLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1cmwpCiB7
CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRU
UENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwot
ICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hUVFBDb29raWVzRm9yVVJMKGNvb2tpZVN0b3JhZ2Uu
Z2V0KCksIHVybCk7CisgICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXNGb3JVUkwo
c2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHVybCk7CiAgICAgcmV0dXJuIFtbTlNIVFRQ
Q29va2llIHJlcXVlc3RIZWFkZXJGaWVsZHNXaXRoQ29va2llczpmaWx0ZXJDb29raWVzKGNvb2tp
ZXMpLmdldCgpXSBvYmplY3RGb3JLZXk6QCJDb29raWUiXTsKIAogICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlM7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1TdHJpbmcgY29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtV
UkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQogewogICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9y
YWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9y
YWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBOU0FycmF5
ICpjb29raWVzID0gd2tIVFRQQ29va2llc0ZvclVSTChjb29raWVTdG9yYWdlLmdldCgpLCB1cmwp
OworICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hUVFBDb29raWVzRm9yVVJMKHNlc3Npb24uY29v
a2llU3RvcmFnZSgpLmdldCgpLCB1cmwpOwogICAgIHJldHVybiBbW05TSFRUUENvb2tpZSByZXF1
ZXN0SGVhZGVyRmllbGRzV2l0aENvb2tpZXM6Y29va2llc10gb2JqZWN0Rm9yS2V5OkAiQ29va2ll
Il07CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIHJldHVybiBTdHJpbmco
KTsKIH0KIAotdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4
dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IGNvb2tpZVN0cikKK3ZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgY29va2llU3RyKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKIApAQCAtMTAzLDMxICsxMDAsMjggQEAgdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3
b3JraW5nQ29udGV4dAogICAgIFJldGFpblB0cjxOU0FycmF5PiBmaWx0ZXJlZENvb2tpZXMgPSBm
aWx0ZXJDb29raWVzKFtOU0hUVFBDb29raWUgY29va2llc1dpdGhSZXNwb25zZUhlYWRlckZpZWxk
czpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0OmNvb2tpZVN0cmluZyBmb3JLZXk6
QCJTZXQtQ29va2llIl0gZm9yVVJMOmNvb2tpZVVSTF0pOwogICAgIEFTU0VSVChbZmlsdGVyZWRD
b29raWVzLmdldCgpIGNvdW50XSA8PSAxKTsKIAotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVT
dG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVT
dG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICB3a1Nl
dEhUVFBDb29raWVzRm9yVVJMKGNvb2tpZVN0b3JhZ2UuZ2V0KCksIGZpbHRlcmVkQ29va2llcy5n
ZXQoKSwgY29va2llVVJMLCBmaXJzdFBhcnR5KTsKKyAgICB3a1NldEhUVFBDb29raWVzRm9yVVJM
KHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCBmaWx0ZXJlZENvb2tpZXMuZ2V0KCksIGNv
b2tpZVVSTCwgZmlyc3RQYXJ0eSk7CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwog
fQogCi1ib29sIGNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKK2Jvb2wgY29va2ll
c0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJM
JiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKIHsKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJl
Zj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShj
b250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCk7Ci0gICAgTlNIVFRQQ29va2ll
QWNjZXB0UG9saWN5IGNvb2tpZUFjY2VwdFBvbGljeSA9IHN0YXRpY19jYXN0PE5TSFRUUENvb2tp
ZUFjY2VwdFBvbGljeT4od2tHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2Uu
Z2V0KCkpKTsKKyAgICBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kgY29va2llQWNjZXB0UG9saWN5
ID0gc3RhdGljX2Nhc3Q8TlNIVFRQQ29va2llQWNjZXB0UG9saWN5Pih3a0dldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3koc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCkpKTsKICAgICByZXR1cm4g
Y29va2llQWNjZXB0UG9saWN5ID09IE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeUFsd2F5cyB8fCBj
b29raWVBY2NlcHRQb2xpY3kgPT0gTlNIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWlu
RG9jdW1lbnREb21haW47CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsLCBWZWN0
b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25z
dCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewogICAgIHJhd0Nvb2tp
ZXMuY2xlYXIoKTsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBSZXRh
aW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBj
dXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVT
dG9yYWdlKCk7Ci0gICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXNGb3JVUkwoY29v
a2llU3RvcmFnZS5nZXQoKSwgdXJsKTsKKyAgICBOU0FycmF5ICpjb29raWVzID0gd2tIVFRQQ29v
a2llc0ZvclVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsKTsKICAgICBOU1VJ
bnRlZ2VyIGNvdW50ID0gW2Nvb2tpZXMgY291bnRdOwogICAgIHJhd0Nvb2tpZXMucmVzZXJ2ZUNh
cGFjaXR5KGNvdW50KTsKICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBjb3VudDsgKytp
KSB7CkBAIC0xNDEsMTIgKzEzNSwxMiBAQCBib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0Nv
bnRleHQqIGNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKE5ldHdv
cmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29v
a2llTmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7CiAg
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCiAgICAgTlNVUkwgKmNvb2tpZVVSTCA9
IHVybDsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFn
ZSA9IGNvbnRleHQgPyBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1
bHRDRkhUVFBDb29raWVTdG9yYWdlKCk7CisgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKTsKICAgICBOU0Fy
cmF5ICpjb29raWVzID0gd2tIVFRQQ29va2llc0ZvclVSTChjb29raWVTdG9yYWdlLmdldCgpLCBj
b29raWVVUkwpOwogCiAgICAgTlNTdHJpbmcgKmNvb2tpZU5hbWVTdHJpbmcgPSBjb29raWVOYW1l
OwpAQCAtMTYxLDEyICsxNTUsMTEgQEAgdm9pZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbgogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKLXZvaWQgZ2V0SG9z
dG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIEhhc2hTZXQ8U3Ry
aW5nPiYgaG9zdG5hbWVzKQordm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQog
ewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIFJldGFpblB0cjxDRkhU
VFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhU
VFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsK
LSAgICBOU0FycmF5ICpjb29raWVzID0gd2tIVFRQQ29va2llcyhjb29raWVTdG9yYWdlLmdldCgp
KTsKKyAgICBOU0FycmF5ICpjb29raWVzID0gd2tIVFRQQ29va2llcyhzZXNzaW9uLmNvb2tpZVN0
b3JhZ2UoKS5nZXQoKSk7CiAgICAgCiAgICAgZm9yIChOU0hUVFBDb29raWUqIGNvb2tpZSBpbiBj
b29raWVzKQogICAgICAgICBob3N0bmFtZXMuYWRkKFtjb29raWUgZG9tYWluXSk7CkBAIC0xNzQs
MTEgKzE2NywxMSBAQCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtpbmdDCiAg
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAotdm9pZCBkZWxldGVDb29raWVzRm9y
SG9zdG5hbWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgaG9zdG5h
bWUpCit2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2Uo
Y29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOworICAgIFJldGFpblB0cjxD
RkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gc2Vzc2lvbi5jb29raWVTdG9y
YWdlKCk7CiAgICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXMoY29va2llU3RvcmFn
ZS5nZXQoKSk7CiAgICAgaWYgKCFjb29raWVzKQogICAgICAgICByZXR1cm47CkBAIC0xOTEsMTAg
KzE4NCw5IEBAIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtpbmcKICAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCi12b2lkIGRlbGV0ZUFsbENvb2tpZXMoTmV0
d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCit2b2lkIGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQogewotICAgIFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29r
aWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICB3
a0RlbGV0ZUFsbEhUVFBDb29raWVzKGNvb2tpZVN0b3JhZ2UuZ2V0KCkpOworICAgIHdrRGVsZXRl
QWxsSFRUUENvb2tpZXMoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCkpOwogfQogCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVTdG9yYWdlTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nv
b2tpZVN0b3JhZ2VNYWMubW0JKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZVN0b3JhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI1LDcgKzI1LDYgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvb2tpZVN0
b3JhZ2UuaCIKLSNpbmNsdWRlICJDb29raWVTdG9yYWdlQ0ZOZXQuaCIKIAogI2ltcG9ydCAiUmVz
b3VyY2VIYW5kbGUuaCIKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0JKHJldmlzaW9uIDEzODQwNykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2IEBACiAjaW1wb3J0ICJCbG9iUmVnaXN0
cnkuaCIKICNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiQ29va2llU3RvcmFn
ZS5oIgotI2ltcG9ydCAiQ29va2llU3RvcmFnZUNGTmV0LmgiCiAjaW1wb3J0ICJDcmVkZW50aWFs
U3RvcmFnZS5oIgogI2ltcG9ydCAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbXBvcnQgIkVt
cHR5UHJvdG9jb2xEZWZpbml0aW9ucy5oIgpAQCAtNDIsNiArNDEsNyBAQAogI2ltcG9ydCAiRnJh
bWVMb2FkZXIuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1JTUVUeXBlUmVnaXN0
cnkuaCIKKyNpbXBvcnQgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW1wb3J0ICJQYWdlLmgiCiAj
aW1wb3J0ICJSZXNvdXJjZUVycm9yLmgiCiAjaW1wb3J0ICJSZXNvdXJjZVJlc3BvbnNlLmgiCkBA
IC0xNDcsNyArMTQ3LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2ll
UAogewogICAgIC8vIElmIGEgVVJMIGFscmVhZHkgaGFzIGNvb2tpZXMsIHRoZW4gd2UnbGwgcmVs
YXggdGhlIDNyZCBwYXJ0eSBjb29raWUgcG9saWN5IGFuZCBhY2NlcHQgbmV3IGNvb2tpZXMuCiAK
LSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY2ZDb29raWVTdG9yYWdlID0g
Y3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCk7CisgICAgUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+IGNmQ29va2llU3RvcmFnZSA9IGNvbnRleHQtPnN0b3JhZ2VTZXNz
aW9uKCkuY29va2llU3RvcmFnZSgpOwogICAgIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSBjb29r
aWVBY2NlcHRQb2xpY3kgPSBzdGF0aWNfY2FzdDxOU0hUVFBDb29raWVBY2NlcHRQb2xpY3k+KHdr
R2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShjZkNvb2tpZVN0b3JhZ2UuZ2V0KCkpKTsKIAogICAg
IGlmIChjb29raWVBY2NlcHRQb2xpY3kgIT0gTlNIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZy
b21NYWluRG9jdW1lbnREb21haW4pCkBAIC0yMzAsNyArMjMwLDcgQEAgYm9vbCBSZXNvdXJjZUhh
bmRsZTo6c3RhcnQoTmV0d29ya2luZ0NvbgogICAgIGlmICghY29udGV4dC0+aXNWYWxpZCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBkLT5tX3N0b3JhZ2VTZXNzaW9uID0gY29udGV4
dC0+c3RvcmFnZVNlc3Npb24oKTsKKyAgICBkLT5tX3N0b3JhZ2VTZXNzaW9uID0gY29udGV4dC0+
c3RvcmFnZVNlc3Npb24oKS5wbGF0Zm9ybVNlc3Npb24oKTsKIAogICAgIEFTU0VSVCghZC0+bV9w
cm94eSk7CiAgICAgZC0+bV9wcm94eS5hZG9wdE5TKHdrQ3JlYXRlTlNVUkxDb25uZWN0aW9uRGVs
ZWdhdGVQcm94eSgpKTsKQEAgLTM5Niw3ICszOTYsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjps
b2FkUmVzb3VyY2VTeW5jaHJvCiAKICAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGhhbmRsZSA9
IGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRsZShyZXF1ZXN0LCBjbGllbnQuZ2V0KCksIGZhbHNl
IC8qZGVmZXJzTG9hZGluZyovLCB0cnVlIC8qc2hvdWxkQ29udGVudFNuaWZmKi8pKTsKIAotICAg
IGhhbmRsZS0+ZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCk7
CisgICAgaGFuZGxlLT5kLT5tX3N0b3JhZ2VTZXNzaW9uID0gY29udGV4dC0+c3RvcmFnZVNlc3Np
b24oKS5wbGF0Zm9ybVNlc3Npb24oKTsKIAogICAgIGlmIChjb250ZXh0ICYmIGhhbmRsZS0+ZC0+
bV9zY2hlZHVsZWRGYWlsdXJlVHlwZSAhPSBOb0ZhaWx1cmUpIHsKICAgICAgICAgZXJyb3IgPSBj
b250ZXh0LT5ibG9ja2VkRXJyb3IocmVxdWVzdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3F0L0Nvb2tpZUphclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L0Nvb2tpZUphclF0LmNwcAkocmV2aXNpb24gMTM4NDA3
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Db29raWVKYXJRdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDE1ICs0NiwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0YXRpYyBTaGFyZWRDb29raWVKYXJRdCogc19zaGFyZWRDb29raWVKYXJRdCA9IDA7CiAKLXZv
aWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3Zv
aWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
dmFsdWUpCiB7Ci0gICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IGNvbnRleHQgPyBjb250ZXh0
LT5uZXR3b3JrQWNjZXNzTWFuYWdlcigpLT5jb29raWVKYXIoKSA6IFNoYXJlZENvb2tpZUphclF0
OjpzaGFyZWQoKTsKKyAgICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gc2Vzc2lvbi5jb250ZXh0
KCkgPyBzZXNzaW9uLmNvbnRleHQoKS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFy
KCkgOiBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgaWYgKCFqYXIpCiAgICAgICAg
IHJldHVybjsKIAogICAgIFFVcmwgdXJsRm9yQ29va2llcyh1cmwpOwogICAgIFFVcmwgZmlyc3RQ
YXJ0eVVybChmaXJzdFBhcnR5KTsKLSAgICBpZiAoIXRoaXJkUGFydHlDb29raWVQb2xpY3lQZXJt
aXRzKGNvbnRleHQsIHVybEZvckNvb2tpZXMsIGZpcnN0UGFydHlVcmwpKQorICAgIGlmICghdGhp
cmRQYXJ0eUNvb2tpZVBvbGljeVBlcm1pdHMoc2Vzc2lvbi5jb250ZXh0KCksIHVybEZvckNvb2tp
ZXMsIGZpcnN0UGFydHlVcmwpKQogICAgICAgICByZXR1cm47CiAKICAgICBRTGlzdDxRTmV0d29y
a0Nvb2tpZT4gY29va2llcyA9IFFOZXR3b3JrQ29va2llOjpwYXJzZUNvb2tpZXMoUVN0cmluZyh2
YWx1ZSkudG9MYXRpbjEoKSk7CkBAIC02OSwxNSArNjksMTUgQEAgdm9pZCBzZXRDb29raWVzRnJv
bURPTShOZXR3b3JraW5nQ29udGV4dAogICAgIGphci0+c2V0Q29va2llc0Zyb21VcmwoY29va2ll
cywgdXJsRm9yQ29va2llcyk7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdD
b250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwp
CitTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBRTmV0
d29ya0Nvb2tpZUphciogamFyID0gY29udGV4dCA/IGNvbnRleHQtPm5ldHdvcmtBY2Nlc3NNYW5h
Z2VyKCktPmNvb2tpZUphcigpIDogU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOworICAgIFFO
ZXR3b3JrQ29va2llSmFyKiBqYXIgPSBzZXNzaW9uLmNvbnRleHQoKSA/IHNlc3Npb24uY29udGV4
dCgpLT5uZXR3b3JrQWNjZXNzTWFuYWdlcigpLT5jb29raWVKYXIoKSA6IFNoYXJlZENvb2tpZUph
clF0OjpzaGFyZWQoKTsKICAgICBpZiAoIWphcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
CiAgICAgUVVybCB1cmxGb3JDb29raWVzKHVybCk7CiAgICAgUVVybCBmaXJzdFBhcnR5VXJsKGZp
cnN0UGFydHkpOwotICAgIGlmICghdGhpcmRQYXJ0eUNvb2tpZVBvbGljeVBlcm1pdHMoY29udGV4
dCwgdXJsRm9yQ29va2llcywgZmlyc3RQYXJ0eVVybCkpCisgICAgaWYgKCF0aGlyZFBhcnR5Q29v
a2llUG9saWN5UGVybWl0cyhzZXNzaW9uLmNvbnRleHQoKSwgdXJsRm9yQ29va2llcywgZmlyc3RQ
YXJ0eVVybCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIFFMaXN0PFFOZXR3b3Jr
Q29va2llPiBjb29raWVzID0gamFyLT5jb29raWVzRm9yVXJsKHVybEZvckNvb2tpZXMpOwpAQCAt
OTQsOSArOTQsOSBAQCBTdHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogCiAg
ICAgcmV0dXJuIHJlc3VsdENvb2tpZXMuam9pbihRTGF0aW4xU3RyaW5nKCI7ICIpKTsKIH0KIAot
U3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQorU3Ry
aW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVy
bCkKIHsKLSAgICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gY29udGV4dCA/IGNvbnRleHQtPm5l
dHdvcmtBY2Nlc3NNYW5hZ2VyKCktPmNvb2tpZUphcigpIDogU2hhcmVkQ29va2llSmFyUXQ6OnNo
YXJlZCgpOworICAgIFFOZXR3b3JrQ29va2llSmFyKiBqYXIgPSBzZXNzaW9uLmNvbnRleHQoKSA/
IHNlc3Npb24uY29udGV4dCgpLT5uZXR3b3JrQWNjZXNzTWFuYWdlcigpLT5jb29raWVKYXIoKSA6
IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKICAgICBpZiAoIWphcikKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogCkBAIC0xMTEsNDMgKzExMSw0MyBAQCBTdHJpbmcgY29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoTmV0CiAgICAgcmV0dXJuIHJlc3VsdENvb2tpZXMuam9pbihRTGF0
aW4xU3RyaW5nKCI7ICIpKTsKIH0KIAotYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29u
dGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8q
dXJsKi8pCitib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8p
CiB7Ci0gICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IGNvbnRleHQgPyBjb250ZXh0LT5uZXR3
b3JrQWNjZXNzTWFuYWdlcigpLT5jb29raWVKYXIoKSA6IFNoYXJlZENvb2tpZUphclF0OjpzaGFy
ZWQoKTsKKyAgICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gc2Vzc2lvbi5jb250ZXh0KCkgPyBz
ZXNzaW9uLmNvbnRleHQoKS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBT
aGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgcmV0dXJuICEhamFyOwogfQogCi1ib29s
IGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8q
Zmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovLCBWZWN0b3I8Q29va2llPiYgcmF3Q29v
a2llcykKK2Jvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovLCBW
ZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBs
ZW1lbnRlZAogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKICAgICByZXR1cm4gZmFsc2U7IC8vIHJl
dHVybiB0cnVlIHdoZW4gaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxldGVDb29raWUoTmV0d29y
a2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKK3ZvaWQgZGVsZXRlQ29v
a2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJp
bmcmKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZ2V0
SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIEhhc2hTZXQ8
U3RyaW5nPiYgaG9zdG5hbWVzKQordm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVz
KQogewotICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgIWNvbnRleHQpOyAvLyBOb3QgeWV0IGlt
cGxlbWVudGVkIGZvciBjb29raWUgamFycyBvdGhlciB0aGFuIHRoZSBzaGFyZWQgb25lLgorICAg
IEFTU0VSVF9VTlVTRUQoc2Vzc2lvbiwgIXNlc3Npb24uY29udGV4dCgpKTsgLy8gTm90IHlldCBp
bXBsZW1lbnRlZCBmb3IgY29va2llIGphcnMgb3RoZXIgdGhhbiB0aGUgc2hhcmVkIG9uZS4KICAg
ICBTaGFyZWRDb29raWVKYXJRdCogamFyID0gU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOwog
ICAgIGlmIChqYXIpCiAgICAgICAgIGphci0+Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoaG9zdG5h
bWVzKTsKIH0KIAotdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFN0
cmluZyYgaG9zdG5hbWUpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCAhY29udGV4dCk7
IC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9yIGNvb2tpZSBqYXJzIG90aGVyIHRoYW4gdGhlIHNo
YXJlZCBvbmUuCisgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uLCAhc2Vzc2lvbi5jb250ZXh0KCkp
OyAvLyBOb3QgeWV0IGltcGxlbWVudGVkIGZvciBjb29raWUgamFycyBvdGhlciB0aGFuIHRoZSBz
aGFyZWQgb25lLgogICAgIFNoYXJlZENvb2tpZUphclF0KiBqYXIgPSBTaGFyZWRDb29raWVKYXJR
dDo6c2hhcmVkKCk7CiAgICAgaWYgKGphcikKICAgICAgICAgamFyLT5kZWxldGVDb29raWVzRm9y
SG9zdG5hbWUoaG9zdG5hbWUpOwogfQogCi12b2lkIGRlbGV0ZUFsbENvb2tpZXMoTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQpCit2b2lkIGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQogewotICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgIWNv
bnRleHQpOyAvLyBOb3QgeWV0IGltcGxlbWVudGVkIGZvciBjb29raWUgamFycyBvdGhlciB0aGFu
IHRoZSBzaGFyZWQgb25lLgorICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbiwgIXNlc3Npb24uY29u
dGV4dCgpKTsgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBmb3IgY29va2llIGphcnMgb3RoZXIgdGhh
biB0aGUgc2hhcmVkIG9uZS4KICAgICBTaGFyZWRDb29raWVKYXJRdCogamFyID0gU2hhcmVkQ29v
a2llSmFyUXQ6OnNoYXJlZCgpOwogICAgIGlmIChqYXIpCiAgICAgICAgIGphci0+ZGVsZXRlQWxs
Q29va2llcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0
d29ya1JlcGx5SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAJKHJldmlzaW9uIDEzODQwNykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiQmxvYkRh
dGEuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0
cnkuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlc291cmNl
SGFuZGxlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZUhhbmRsZUludGVybmFsLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwCShyZXZpc2lvbiAxMzg0
MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291
cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDExIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RhdGljIFNvdXBDb29raWVKYXIqIGNvb2tpZUphckZvckNvbnRleHQoTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQpCitzdGF0aWMgU291cENvb2tpZUphciogY29va2llSmFyRm9y
U2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24pCiB7Ci0gICAgcmV0
dXJuIFNPVVBfQ09PS0lFX0pBUihzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUoY29udGV4dC0+c291
cFNlc3Npb24oKSwgU09VUF9UWVBFX0NPT0tJRV9KQVIpKTsKKyAgICBpZiAoIXNlc3Npb24uY29u
dGV4dCgpKQorICAgICAgICByZXR1cm4gc291cENvb2tpZUphcigpOworICAgIHJldHVybiBTT1VQ
X0NPT0tJRV9KQVIoc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHNlc3Npb24uY29udGV4dCgpLT5z
b3VwU2Vzc2lvbigpLCBTT1VQX1RZUEVfQ09PS0lFX0pBUikpOwogfQogCiBzdGF0aWMgR1JlZlB0
cjxTb3VwQ29va2llSmFyPiYgZGVmYXVsdENvb2tpZUphcigpCkBAIC03Myw5ICs3NSw5IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBodHRwT25seUNvb2tpZUV4aXN0cygKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKK3ZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgU291cENvb2tpZUphciogamFyID0gY29udGV4dCA/IGNv
b2tpZUphckZvckNvbnRleHQoY29udGV4dCkgOiBzb3VwQ29va2llSmFyKCk7CisgICAgU291cENv
b2tpZUphciogamFyID0gY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKICAgICBpZiAoIWph
cikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDcsOSArMTA5LDkgQEAgdm9pZCBzZXRDb29raWVz
RnJvbURPTShOZXR3b3JraW5nQ29udGV4dAogICAgIHNvdXBfY29va2llc19mcmVlKGV4aXN0aW5n
Q29va2llcyk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgY29va2llc0ZvckNvbnRleHQoTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBmb3JIVFRQSGVhZGVyKQor
c3RhdGljIFN0cmluZyBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBmb3JIVFRQSGVhZGVyKQogewotICAg
IFNvdXBDb29raWVKYXIqIGphciA9IGNvbnRleHQgPyBjb29raWVKYXJGb3JDb250ZXh0KGNvbnRl
eHQpIDogc291cENvb2tpZUphcigpOworICAgIFNvdXBDb29raWVKYXIqIGphciA9IGNvb2tpZUph
ckZvclNlc3Npb24oc2Vzc2lvbik7CiAgICAgaWYgKCFqYXIpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKIApAQCAtMTE4LDI1ICsxMjAsMjUgQEAgc3RhdGljIFN0cmluZyBjb29raWVzRm9yQ29u
dGV4dChOZXR3b3JraQogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZXMuZ2V0KCkp
OwogfQogCi1TdHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
Y29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwm
IHVybCkKIHsKLSAgICByZXR1cm4gY29va2llc0ZvckNvbnRleHQoY29udGV4dCwgdXJsLCBmYWxz
ZSk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKHNlc3Npb24sIHVybCwgZmFsc2UpOwog
fQogCi1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwp
CitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VS
TCYgdXJsKQogewotICAgIHJldHVybiBjb29raWVzRm9yQ29udGV4dChjb250ZXh0LCB1cmwsIHRy
dWUpOworICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihzZXNzaW9uLCB1cmwsIHRydWUpOwog
fQogCi1ib29sIGNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKK2Jvb2wgY29va2ll
c0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJM
JiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKIHsKLSAgICByZXR1cm4gISFj
b29raWVKYXJGb3JDb250ZXh0KGNvbnRleHQpOworICAgIHJldHVybiAhIWNvb2tpZUphckZvclNl
c3Npb24oc2Vzc2lvbik7CiB9CiAKLWJvb2wgZ2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCwg
VmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywg
Y29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKICAgICByYXdD
b29raWVzLmNsZWFyKCk7Ci0gICAgU291cENvb2tpZUphciogamFyID0gY29udGV4dCA/IGNvb2tp
ZUphckZvckNvbnRleHQoY29udGV4dCkgOiBzb3VwQ29va2llSmFyKCk7CisgICAgU291cENvb2tp
ZUphciogamFyID0gY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKICAgICBpZiAoIWphcikK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xNTcsOSArMTU5LDkgQEAgYm9vbCBnZXRSYXdD
b29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjbwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lk
IGRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1l
KQogewotICAgIFNvdXBDb29raWVKYXIqIGphciA9IGNvbnRleHQgPyBjb29raWVKYXJGb3JDb250
ZXh0KGNvbnRleHQpIDogc291cENvb2tpZUphcigpOworICAgIFNvdXBDb29raWVKYXIqIGphciA9
IGNvb2tpZUphckZvclNlc3Npb24oc2Vzc2lvbik7CiAgICAgaWYgKCFqYXIpCiAgICAgICAgIHJl
dHVybjsKIApAQCAtMTc4LDkgKzE4MCw5IEBAIHZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtpbmdD
b250ZXh0KiBjb24KICAgICB9CiB9CiAKLXZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0
d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQordm9p
ZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQogewotICAgIFNvdXBDb29raWVKYXIq
IGNvb2tpZUphciA9IGNvbnRleHQgPyBjb29raWVKYXJGb3JDb250ZXh0KGNvbnRleHQpIDogc291
cENvb2tpZUphcigpOworICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphciA9IGNvb2tpZUphckZv
clNlc3Npb24oc2Vzc2lvbik7CiAgICAgR093blB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29r
aWVfamFyX2FsbF9jb29raWVzKGNvb2tpZUphcikpOwogICAgIGZvciAoR1NMaXN0KiBpdGVtID0g
Y29va2llcy5nZXQoKTsgaXRlbTsgaXRlbSA9IGdfc2xpc3RfbmV4dChpdGVtKSkgewogICAgICAg
ICBHT3duUHRyPFNvdXBDb29raWU+IGNvb2tpZShzdGF0aWNfY2FzdDxTb3VwQ29va2llKj4oaXRl
bS0+ZGF0YSkpOwpAQCAtMTkwLDEwICsxOTIsMTAgQEAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29v
a2llcyhOZXR3b3JraW5nQwogICAgIH0KIH0KIAotdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5h
bWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit2
b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAgQ1N0cmluZyBob3N0TmFt
ZVN0cmluZyA9IGhvc3RuYW1lLnV0ZjgoKTsKLSAgICBTb3VwQ29va2llSmFyKiBjb29raWVKYXIg
PSBjb250ZXh0ID8gY29va2llSmFyRm9yQ29udGV4dChjb250ZXh0KSA6IHNvdXBDb29raWVKYXIo
KTsKKyAgICBTb3VwQ29va2llSmFyKiBjb29raWVKYXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNl
c3Npb24pOwogICAgIEdPd25QdHI8R1NMaXN0PiBjb29raWVzKHNvdXBfY29va2llX2phcl9hbGxf
Y29va2llcyhjb29raWVKYXIpKTsKICAgICBmb3IgKEdTTGlzdCogaXRlbSA9IGNvb2tpZXMuZ2V0
KCk7IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAgICAgICAgU291cENvb2tp
ZSogY29va2llID0gc3RhdGljX2Nhc3Q8U291cENvb2tpZSo+KGl0ZW0tPmRhdGEpOwpAQCAtMjAz
LDkgKzIwNSw5IEBAIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtpbmcKICAg
ICB9CiB9CiAKLXZvaWQgZGVsZXRlQWxsQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4
dCkKK3ZvaWQgZGVsZXRlQWxsQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24pCiB7Ci0gICAgU291cENvb2tpZUphciogY29va2llSmFyID0gY29udGV4dCA/IGNvb2tp
ZUphckZvckNvbnRleHQoY29udGV4dCkgOiBzb3VwQ29va2llSmFyKCk7CisgICAgU291cENvb2tp
ZUphciogY29va2llSmFyID0gY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKICAgICBHT3du
UHRyPEdTTGlzdD4gY29va2llcyhzb3VwX2Nvb2tpZV9qYXJfYWxsX2Nvb2tpZXMoY29va2llSmFy
KSk7CiAgICAgZm9yIChHU0xpc3QqIGl0ZW0gPSBjb29raWVzLmdldCgpOyBpdGVtOyBpdGVtID0g
Z19zbGlzdF9uZXh0KGl0ZW0pKSB7CiAgICAgICAgIFNvdXBDb29raWUqIGNvb2tpZSA9IHN0YXRp
Y19jYXN0PFNvdXBDb29raWUqPihpdGVtLT5kYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAJKHJldmlzaW9uIDEzODQwNykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiR093blB0clNvdXAuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VI
YW5kbGVTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJp
bmdzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnku
aCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2ll
SmFyV2luLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgs
NyBAQAogCiAjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
Ik5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNs
dWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVkZSA8V2luaW5ldC5oPgpAQCAtMzUsNyArMzYsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya2lu
Z0NvbnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZh
bHVlKQordm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewog
ICAgIC8vIEZJWE1FOiBEZWFsIHdpdGggZmlyc3RQYXJ0eSBhcmd1bWVudC4KICAgICBTdHJpbmcg
c3RyID0gdXJsLnN0cmluZygpOwpAQCAtNDMsNyArNDQsNyBAQCB2b2lkIHNldENvb2tpZXNGcm9t
RE9NKE5ldHdvcmtpbmdDb250ZXh0CiAgICAgSW50ZXJuZXRTZXRDb29raWUoc3RyLmNoYXJhY3Rl
cnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIDAsIHZhbC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5h
dGlvbigpKTsKIH0KIAotU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqLCBj
b25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKIHsK
ICAgICAvLyBGSVhNRTogRGVhbCB3aXRoIGZpcnN0UGFydHkgYXJndW1lbnQuCiAKQEAgLTY0LDQw
ICs2NSw0MCBAQCBTdHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCosCiAgICAg
cmV0dXJuIFN0cmluZzo6YWRvcHQoYnVmZmVyKTsKIH0KIAotU3RyaW5nIGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgLy8gRklYTUU6IGluY2x1ZGUg
SHR0cE9ubHkgY29va2llCi0gICAgcmV0dXJuIGNvb2tpZXNGb3JET00oY29udGV4dCwgZmlyc3RQ
YXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gY29va2llc0ZvckRPTShzZXNzaW9uLmNvbnRleHQoKSwg
Zmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29u
dGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8q
dXJsKi8pCitib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8p
CiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgZ2V0UmF3Q29va2llcyhOZXR3b3JraW5n
Q29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwm
IC8qdXJsKi8sIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBnZXRSYXdDb29raWVz
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJz
dFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8sIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVz
KQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiAgICAgcmF3Q29va2llcy5j
bGVhcigpOwogICAgIHJldHVybiBmYWxzZTsgLy8gcmV0dXJuIHRydWUgd2hlbiBpbXBsZW1lbnRl
ZAogfQogCi12b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmKQordm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgLy8gRklYTUU6IE5v
dCB5ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3
b3JraW5nQ29udGV4dCosIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQordm9pZCBnZXRIb3N0
bmFtZXNXaXRoQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBIYXNoU2V0PFN0
cmluZz4mIGhvc3RuYW1lcykKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAog
fQogCi12b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShOZXR3b3JraW5nQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAg
IC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRlQWxsQ29va2ll
cyhOZXR3b3JraW5nQ29udGV4dCopCit2b2lkIGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJikKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VIYW5k
bGVXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
d2luL1Jlc291cmNlSGFuZGxlV2luLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VIYW5kbGVXaW4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRGF0YVVSTC5oIgogI2luY2x1ZGUg
IkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUg
Ik5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDEzODQwNykKKysr
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDE2ICsxNDQsOSBAQCB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRTCiAgICAgbV9zZXJpYWxMb2FkaW5nRW5hYmxlZCA9
IGVuYWJsZWQ7CiB9CiAKLXN0YXRpYyBSZW1vdGVOZXR3b3JraW5nQ29udGV4dCogbmV0d29ya2lu
Z0NvbnRleHQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQorc3RhdGljIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQog
ewotICAgIC8vIFRoaXMgbmV0d29ya2luZyBjb250ZXh0IGlzIG9ubHkgbmVlZGVkIHRvIGdldCBz
dG9yYWdlIHNlc3Npb24gZnJvbS4KLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkgewot
ICAgICAgICBzdGF0aWMgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQgPSBSZW1vdGVO
ZXR3b3JraW5nQ29udGV4dDo6Y3JlYXRlKGZhbHNlLCBmYWxzZSwgdHJ1ZSkubGVha1JlZigpOwot
ICAgICAgICByZXR1cm4gY29udGV4dDsKLSAgICB9IGVsc2UgewotICAgICAgICBzdGF0aWMgUmVt
b3RlTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQgPSBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6
Y3JlYXRlKGZhbHNlLCBmYWxzZSwgZmFsc2UpLmxlYWtSZWYoKTsKLSAgICAgICAgcmV0dXJuIGNv
bnRleHQ7Ci0gICAgfQorICAgIHJldHVybiBwcml2YXRlQnJvd3NpbmdFbmFibGVkID8gUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQ6OnByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSA6IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxvYWQoYm9vbCBwcml2YXRlQnJvd3NpbmdF
bmFibGVkLCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCkBAIC0xNjQsMzIgKzE1NywzMiBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpzdGFyCiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNG
b3JET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQogewotICAgIHJlc3VsdCA9IFdlYkNv
cmU6OmNvb2tpZXNGb3JET00obmV0d29ya2luZ0NvbnRleHQocHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCksIGZpcnN0UGFydHksIHVybCk7CisgICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llc0ZvckRP
TShzdG9yYWdlU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJs
KTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zy
b21ET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewotICAgIFdl
YkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKG5ldHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CisgICAgV2ViQ29yZTo6
c2V0Q29va2llc0Zyb21ET00oc3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCks
IGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFi
bGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGJvb2wmIHJlc3Vs
dCkKIHsKLSAgICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChuZXR3b3JraW5nQ29u
dGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXN1
bHQgPSBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzdG9yYWdlU2Vzc2lvbihwcml2YXRlQnJvd3Np
bmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoYm9vbCBwcml2YXRl
QnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmws
IFN0cmluZyYgcmVzdWx0KQogewotICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKG5ldHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJsZWQp
LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBm
aXJzdFBhcnR5LCB1cmwpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpnZXRSYXdDb29raWVzKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmVzdWx0KQogewot
ICAgIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMobmV0d29ya2luZ0NvbnRleHQocHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCwgcmVzdWx0KTsKKyAgICBXZWJDb3JlOjpnZXRS
YXdDb29raWVzKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBh
cnR5LCB1cmwsIHJlc3VsdCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmRlbGV0ZUNvb2tpZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIFdlYkNvcmU6OmRlbGV0ZUNv
b2tpZShuZXR3b3JraW5nQ29udGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgdXJsLCBjb29r
aWVOYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc3RvcmFnZVNlc3Npb24ocHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCksIHVybCwgY29va2llTmFtZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQ
cm9jZXNzTWFpbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWluTWFjLm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWluTWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0ICJDb21tYW5kTGluZS5o
IgogI2ltcG9ydCAiRW52aXJvbm1lbnRVdGlsaXRpZXMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9j
ZXNzLmgiCisjaW1wb3J0ICJXZWJTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPFdlYkNvcmUv
UnVuTG9vcC5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+Ci0jaW1wb3J0IDxX
ZWJTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPG1hY2gvbWFjaF9lcnJvci5oPgogI2ltcG9y
dCA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW1wb3J0IDxzZXJ2ZXJzL2Jvb3Rz
dHJhcC5oPgpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5l
dHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDEzODQwNykKKysr
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
dm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CiAgICAgc3RhdGljIHZvaWQgZGVz
dHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKIAorICAgIHN0YXRpYyBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsgLy8gQ2FuIG9ubHkg
YmUgY2FsbGVkIHdoZW4gdGhlIHNlc3Npb24gZXhpc3RzLgorCiBwcml2YXRlOgogICAgIFJlbW90
ZU5ldHdvcmtpbmdDb250ZXh0KGJvb2wgbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MsIGJvb2wgbG9j
YWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZCwgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVk
KTsKIApAQCAtNDksOCArNTEsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIG5lZWRz
U2l0ZVNwZWNpZmljUXVpcmtzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGxv
Y2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VT
ZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBOU09wZXJhdGlvblF1ZXVlICpz
Y2hlZHVsZWRPcGVyYXRpb25RdWV1ZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JikgY29uc3QgT1ZFUlJJREU7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0J
KHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9S
ZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsMTIg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0
aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbjsK
K3N0YXRpYyBPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiYgcHJpdmF0ZUJyb3dzaW5nU3Rv
cmFnZVNlc3Npb24oKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiwgc2Vzc2lvbiwgKCkp
OworICAgIHJldHVybiBzZXNzaW9uOworfQogCiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6UmVt
b3RlTmV0d29ya2luZ0NvbnRleHQoYm9vbCBuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcywgYm9vbCBs
b2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkLCBib29sIHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQpCiAgICAgOiBtX25lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKG5lZWRzU2l0ZVNwZWNpZmljUXVp
cmtzKQpAQCAtNjMsMTkgKzY4LDIwIEBAIGJvb2wgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6Omxv
Y2FsRmlsZUMKICAgICByZXR1cm4gbV9sb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkOwog
fQogCi1ib29sIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjppblByaXZhdGVCcm93c2luZ01vZGUo
KSBjb25zdAorTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6
c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGVCcm93c2luZ0Vu
YWJsZWQ7CisgICAgaWYgKG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkgeworICAgICAgICBBU1NF
UlQocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSk7CisgICAgICAgIHJldHVybiAqcHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKTsKKyAgICB9CisKKyAgICByZXR1cm4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0KIAotQ0ZVUkxTdG9y
YWdlU2Vzc2lvblJlZiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBj
b25zdAorTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6cHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7Ci0gICAgaWYgKGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgp
KSB7Ci0gICAgICAgIEFTU0VSVChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbik7Ci0gICAg
ICAgIHJldHVybiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbjsKLSAgICB9Ci0gICAgLy8g
RklYTUUgKE5ldHdvcmtQcm9jZXNzKTogUmV0dXJuIGEgZGVmYXVsdCBzZXNzaW9uIHRoYXQncyB1
c2VkIGZvciB0ZXN0aW5nLgotICAgIHJldHVybiAwOworICAgIEFTU0VSVChwcml2YXRlQnJvd3Np
bmdTdG9yYWdlU2Vzc2lvbigpKTsKKyAgICByZXR1cm4gKnByaXZhdGVCcm93c2luZ1N0b3JhZ2VT
ZXNzaW9uKCk7CiB9CiAKIE5TT3BlcmF0aW9uUXVldWUgKlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0
OjpzY2hlZHVsZWRPcGVyYXRpb25RdWV1ZSgpIGNvbnN0CkBAIC0xMDgsMjMgKzExNCwxOCBAQCB2
b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRQcml2YXRlCiAKIHZvaWQgUmVtb3RlTmV0
d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewotICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNz
aW9uKQorICAgIGlmIChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBBU1NFUlQoIXByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRp
ZmllckJhc2UoKS5pc051bGwoKSk7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50
aWZpZXIgPSBTdHJpbmcocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFz
ZSgpICsgIi5Qcml2YXRlQnJvd3NpbmciKS5jcmVhdGVDRlN0cmluZygpOwogCi0gICAgcHJpdmF0
ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24gPSBXS0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihj
ZklkZW50aWZpZXIuZ2V0KCkpOworICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkg
PSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24ocHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpKTsKIH0KIAogdm9pZCBS
ZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQog
ewotICAgIGlmICghcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pCi0gICAgICAgIHJldHVy
bjsKLQotICAgIENGUmVsZWFzZShwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbik7Ci0gICAg
cHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24gPSAwOworICAgIHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uKCkgPSBudWxscHRyOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlck1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlck1hYy5tbQkocmV2aXNpb24gMTM4NDA3
KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9D
dXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vz
cy5oIgogI2ltcG9ydCA8V2ViQ29yZS9LVVJMLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNl
RXJyb3IuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5j
aGVyRWZsLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Miw3ICsyMiw5IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUHJvY2Vz
c0V4ZWN1dGFibGVQYXRoLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvTmV0d29ya2luZ0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9j
ZXNzTGF1bmNoZXJHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcAkocmV2aXNpb24gMTM4NDA3KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJH
dGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw5IEBACiAKICNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmls
ZVN5c3RlbS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya2luZ0NvbnRleHQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29w
Lmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTA0Myw3ICsxMDQzLDYgQEAKIAkJRTFCNzg0NzMxNjNGMjUzRTAwMDdCNjkyIC8qIFJl
bW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTFCNzg0NzIxNjNGMjUzRTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtp
bmdDb250ZXh0Lm1tICovOyB9OwogCQlFMUNDMUI5MDEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJ
bmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUND
MUI4RTEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvLmggKi87IH07CiAJCUUxQ0MxQjkxMTJE
N0VBREYwMDYyNTgzOCAvKiBQcmludEluZm9NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUNDMUI4RjEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJ
bmZvTWFjLm1tICovOyB9OwotCQlFMUQyMjk3MTE2NTJEQzUyMDBCQUE0QkQgLyogV2ViUGxhdGZv
cm1TdHJhdGVnaWVzTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTFEMjI5NkUxNjUyREI5QzAwQkFBNEJEIC8qIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
c01hYy5tbSAqLzsgfTsKIAkJRTFFREZEQTYxNjI4ODY4RTAwMzlFQ0RBIC8qIE1haW5NYWNQcm9j
ZXNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
NkZBMzEwMTFFMzkyMUUwMERCMTM3MSAvKiBNYWluTWFjUHJvY2Vzcy5jcHAgKi87IH07CiAJCUUx
RURGREE3MTYyODg2OTYwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRURGRDlCMTYy
ODdEMEIwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbSAqLzsgfTsKIAkJ
RTFFREZEQTgxNjI4ODY5OTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVERkRBMjE2Mjg4
MzhDMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01hYy5tbSAqLzsgfTsKQEAgLTIzNDQs
NyArMjM0Myw2IEBACiAJCUUxQjc4NDcyMTYzRjI1M0UwMDA3QjY5MiAvKiBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJl
bW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MUNDMUI4RTEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFByaW50SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMUNDMUI4RjEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvTWFjLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJpbnRJbmZvTWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlFMUQyMjk2RTE2NTJEQjlDMDBCQUE0QkQgLyogV2ViUGxhdGZv
cm1TdHJhdGVnaWVzTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMUVERkQ5ODE2Mjg3QkQxMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01haW4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzc01h
aW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFFREZEOUIxNjI4N0QwQjAwMzlF
Q0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYWluTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzc01haW5NYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRURGRDlEMTYyODdGMTkwMDM5RUNEQSAvKiBTaGFy
ZWRXb3JrZXJQcm9jZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJl
ZFdvcmtlclByb2Nlc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM3MzMsNyAr
MzczMSw2IEBACiAJCQkJQkMxMTFBREYxMTJGNUJDMjAwMzM3QkFCIC8qIFdlYkVycm9yc01hYy5t
bSAqLywKIAkJCQk5MzkxRjI4MzEyMUIzOEY1MDBFQkY3RTggLyogV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5oICovLAogCQkJCTkzOTFGMjg0MTIxQjM4RjUwMEVCRjdFOCAvKiBXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0Lm1tICovLAotCQkJCUUxRDIyOTZFMTY1MkRCOUMwMEJBQTRCRCAvKiBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXNNYWMubW0gKi8sCiAJCQkJQkNDNDNBQzYxMjdCOTlERTAwMzE3
RjE2IC8qIFdlYlBvcHVwTWVudU1hYy5tbSAqLywKIAkJCQlCQ0M1NzE1OTExNUFEQUVGMDAxQ0NB
RjkgLyogV2ViU3lzdGVtSW50ZXJmYWNlLmggKi8sCiAJCQkJQkNDNTcxNUExMTVBREFFRjAwMUND
QUY5IC8qIFdlYlN5c3RlbUludGVyZmFjZS5tbSAqLywKQEAgLTU5NzgsNyArNTk3NSw2IEBACiAJ
CQkJNTEyMTc0NjAxNjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxMjE3NDY0MTY0QzIxMzcwMDM3QTVDMSAvKiBXZWJSZXNvdXJjZUJ1
ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUYxQUM2QjE2NTE3NTlFMDBDMTdEN0YgLyog
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gaW4gU291cmNlcyAqLywKLQkJCQlFMUQyMjk3
MTE2NTJEQzUyMDBCQUE0QkQgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUFBM0Q3NUIxNjUxQjQ0RjAwODcxM0QwIC8qIFJlbW90ZUxheWVyVHJlZUhv
c3QubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUEzRDc2MTE2NTFCN0QzMDA4NzEzRDAgLyogUmVt
b3RlTGF5ZXJUcmVlSG9zdE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MUZEMThCNTE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvTWVtb3J5U3RhdGlzdGljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQVhPYmplY3RD
YWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Gb250Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250Q2FjaGUuaD4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5j
cHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2ll
cy9XZWJDb29raWVNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llU3RvcmFnZS5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybUNvb2tpZUphci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTU1LDcgKzU2
LDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNXaXRoQwogewogICAgIEhh
c2hTZXQ8U3RyaW5nPiBob3N0bmFtZXM7CiAKLSAgICBXZWJDb3JlOjpnZXRIb3N0bmFtZXNXaXRo
Q29va2llcygwLCBob3N0bmFtZXMpOworICAgIFdlYkNvcmU6OmdldEhvc3RuYW1lc1dpdGhDb29r
aWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIGhvc3Ru
YW1lcyk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBob3N0bmFtZUxpc3Q7CiAgICAgY29weVRvVmVj
dG9yKGhvc3RuYW1lcywgaG9zdG5hbWVMaXN0KTsKQEAgLTY1LDEyICs2NiwxMiBAQCB2b2lkIFdl
YkNvb2tpZU1hbmFnZXI6OmdldEhvc3RuYW1lc1dpdGhDCiAKIHZvaWQgV2ViQ29va2llTWFuYWdl
cjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7Ci0g
ICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKDAsIGhvc3RuYW1lKTsKKyAgICBX
ZWJDb3JlOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpk
ZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgaG9zdG5hbWUpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1h
bmFnZXI6OmRlbGV0ZUFsbENvb2tpZXMoKQogewotICAgIFdlYkNvcmU6OmRlbGV0ZUFsbENvb2tp
ZXMoMCk7CisgICAgV2ViQ29yZTo6ZGVsZXRlQWxsQ29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2Vy
OjpzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKQpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Eb3dubG9hZHMvZWZsL0Rvd25sb2FkU291cEVycm9yc0VmbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvZWZsL0Rvd25sb2FkU291
cEVycm9yc0VmbC5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRG93bmxvYWRzL2VmbC9Eb3dubG9hZFNvdXBFcnJvcnNFZmwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRG93bmxvYWRTb3VwRXJyb3JzLmgiCiAK
ICNpbmNsdWRlIDxXZWJDb3JlL0Vycm9yc0VmbC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VFcnJvci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvZ3RrL0Rvd25sb2FkU291cEVycm9yc0d0ay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvZ3RrL0Rv
d25sb2FkU291cEVycm9yc0d0ay5jcHAJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL2d0ay9Eb3dubG9hZFNvdXBFcnJvcnNHdGsuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRG93bmxvYWRTb3VwRXJy
b3JzLmgiCiAKICNpbmNsdWRlIDxXZWJDb3JlL0Vycm9yc0d0ay5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VFcnJvci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL21hYy9Eb3du
bG9hZE1hYy5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkRvd25sb2FkLmgiCiAKKyNpbXBv
cnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUv
QXV0aGVudGljYXRpb25NYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuY3BwCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiAr
NzcsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KICNl
bmRpZgogCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgIldlYlN5c3RlbUludGVyZmFjZS5o
IgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIApAQCAtMzAzLDcgKzMwNyw4IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnN3aXRjaE5ldHdv
cmtMb2FkZXIKIHsKICNpZiAoUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKSkgJiYgIVBM
QVRGT1JNKFdJTikKICAgICAvLyBGSVhNRSAoTmV0d29ya1Byb2Nlc3MpOiBEbyB0aGlzIGluIG5l
dHdvcmsgcHJvY2VzcywgdG9vLgotICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN3aXRj
aFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKKyAgICBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSgp
OworICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigp
OwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3Mu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJldmlzaW9uIDEzODQw
NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0xvYWRlclN0cmF0ZWd5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BsYXRmb3JtQ29va2llSmFyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVBhc3Rl
Ym9hcmQuaD4KQEAgLTExMyw5MCArMTE0LDgzIEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpub3RpZnlDb29raWUKICAgICBXZWJDb29raWVNYW5hZ2VyOjpzaGFyZWQoKS5kaXNwYXRjaENv
b2tpZXNEaWRDaGFuZ2UoKTsKIH0KIAotI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENGTkVUV09S
SykKLVJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmRlZmF1bHRDb29raWVTdG9yYWdlKCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLSNlbmRpZgot
Ci1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdD
b250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwp
CitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsKQogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIFN0cmluZyBy
ZXN1bHQ7Ci0gICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rp
b24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00oY29udGV4dCAmJiBjb250ZXh0LT5pblByaXZhdGVC
cm93c2luZ01vZGUoKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShyZXN1bHQpLCAwKSkKKyAgICAg
ICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Q29va2llc0ZvckRPTShzZXNzaW9uLmlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCBmaXJzdFBh
cnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tp
ZXNGb3JET006OlJlcGx5KHJlc3VsdCksIDApKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIFdl
YkNvcmU6OmNvb2tpZXNGb3JET00oY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1
cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQog
Ci12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0Zyb21ET00oTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
Y29va2llU3RyaW5nKQogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdl
YlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9N
KGNvbnRleHQgJiYgY29udGV4dC0+aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCksIGZpcnN0UGFydHks
IHVybCwgY29va2llU3RyaW5nKSwgMCk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5l
dHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24uaXNQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKCksIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKSwgMCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKIAotICAgIFdlYkNvcmU6OnNldENvb2tpZXNG
cm9tRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBXZWJD
b3JlOjpzZXRDb29raWVzRnJvbURPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0
cmluZyk7CiB9CiAKLWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRW5hYmxlZChO
ZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsKQogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAg
aWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAg
IGJvb2wgcmVzdWx0OwotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtD
b25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZChjb250ZXh0ICYmIGNvbnRleHQtPmlu
UHJpdmF0ZUJyb3dzaW5nTW9kZSgpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkOjpSZXBseShyZXN1bHQpLCAw
KSkKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigp
LT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Q29va2llc0VuYWJsZWQoc2Vzc2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24o
KSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpDb29raWVzRW5hYmxlZDo6UmVwbHkocmVzdWx0KSwgMCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogI2VuZGlmCiAKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsK
KyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwg
dXJsKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewog
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgp
LnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIFN0cmluZyByZXN1bHQ7Ci0gICAgICAg
IGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlv
bigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnRleHQgJiYgY29udGV4dC0+aW5Qcml2YXRl
QnJvd3NpbmdNb2RlKCksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWU6OlJlcGx5KHJl
c3VsdCksIDApKQorICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25u
ZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLmlz
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
OjpSZXBseShyZXN1bHQpLCAwKSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBXZWJDb3JlOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOwor
ICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9u
LCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0
UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJs
LCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKICNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkg
ewotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCkt
PmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpHZXRSYXdDb29raWVzKGNvbnRleHQgJiYgY29udGV4dC0+aW5Qcml2YXRlQnJvd3Np
bmdNb2RlKCksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQorICAgICAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpH
ZXRSYXdDb29raWVzKHNlc3Npb24uaXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIGZpcnN0UGFy
dHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3
Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBXZWJD
b3JlOjpnZXRSYXdDb29raWVzKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7
CisgICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwg
dXJsLCByYXdDb29raWVzKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0
ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRl
Q29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkp
IHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
RGVsZXRlQ29va2llKGNvbnRleHQgJiYgY29udGV4dC0+aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCks
IHVybCwgY29va2llTmFtZSksIDApOworICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3
b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVDb29raWUoc2Vzc2lvbi5pc1ByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oKSwgdXJsLCBjb29raWVOYW1lKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAjZW5kaWYKIAotICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShjb250ZXh0LCB1cmwsIGNvb2tp
ZU5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1cmwsIGNvb2tpZU5h
bWUpOwogfQogCiAvLyBEYXRhYmFzZVN0cmF0ZWd5CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU3LDE1ICs1NywxMiBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0
cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkKCkgT1ZFUlJJREU7
Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQotICAgIHZpcnR1YWwgUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGRlZmF1bHRDb29raWVTdG9yYWdlKCkgT1ZFUlJJ
REU7Ci0jZW5kaWYKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKFdlYkNvcmU6Ok5l
dHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJv
bURPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRl
eHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJM
JikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBi
b29sIGdldFJhd0Nvb2tpZXMoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4mKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKFdl
YkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0
cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwg
Y29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVk
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nv
b2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwg
Y29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0
ZWd5CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTAgKzM0LDggQEAgcHVibGljOgogICAgIH0K
IAogICAgIHN0YXRpYyB2b2lkIHNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRp
ZmllckJhc2UoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIHZvaWQgc3dpdGNoVG9OZXdUZXN0
aW5nU2Vzc2lvbigpOwogICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwot
ICAgIHN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGRlZmF1bHRTdG9yYWdlU2Vzc2lvbigp
OwogICAgIHN0YXRpYyB2b2lkIHNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKEhU
VFBDb29raWVBY2NlcHRQb2xpY3kpOwogCiBwcml2YXRlOgpAQCAtNDgsOCArNDYsNyBAQCBwcml2
YXRlOgogCiAgICAgdmlydHVhbCBib29sIG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJs
ZWQoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdN
b2RlKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVm
IHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBXZWJDb3JlOjpTY2hlZHVsZVBhaXJIYXNoU2V0KiBzY2hlZHVsZWRSdW5Mb29w
UGFpcnMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0IE9W
RVJSSURFOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjEsNyArMjEsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgiCiAKLSNpbXBvcnQgPFdlYkNvcmUvQ29va2llU3Rv
cmFnZUNGTmV0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyQ2xpZW50Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgpA
QCAtMzIsOCArMzEsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1zdGF0aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBkZWZhdWx0Q0ZTdG9yYWdl
U2Vzc2lvbjsKLXN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uOworc3RhdGljIE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBwcml2
YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChP
d25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiwgc2Vzc2lvbiwgKCkpOworICAgIHJldHVybiBz
ZXNzaW9uOworfQogCiBib29sIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6Om5lZWRzU2l0ZVNw
ZWNpZmljUXVpcmtzKCkgY29uc3QKIHsKQEAgLTY3LDI2ICs2OSwxNyBAQCB2b2lkIFdlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6OnNldFByaXZhCiAgICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNl
c3Npb25JZGVudGlmaWVyQmFzZSgpID0gaWRlbnRpZmllcjsKIH0KIAotdm9pZCBXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0Ojpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkKLXsKLSAgICAvLyBT
ZXQgYSBwcml2YXRlIHNlc3Npb24gZm9yIHRlc3RpbmcgdG8gYXZvaWQgaW50ZXJmZXJpbmcgd2l0
aCBnbG9iYWwgY29va2llcy4gVGhpcyBzaG91bGQgYmUgZGlmZmVyZW50IGZyb20gcHJpdmF0ZSBi
cm93c2luZyBzZXNzaW9uLgotICAgIGlmIChkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbikKLSAgICAg
ICAgQ0ZSZWxlYXNlKGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uKTsKLSAgICBkZWZhdWx0Q0ZTdG9y
YWdlU2Vzc2lvbiA9IFdLQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU1RSKCJQcml2YXRl
IFdlYktpdCBTZXNzaW9uIikpOwotfQotCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6
OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewogICAgIC8vIEZJWE1FIChOZXR3b3Jr
UHJvY2Vzcyk6IERvbid0IGNyZWF0ZSBhbiB1bm5lY2Vzc2FyeSBzZXNzaW9uIHdoZW4gdXNpbmcg
bmV0d29yayBwcm9jZXNzLgogCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAo
cHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pCisgICAgaWYgKHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBiYXNlID0gcHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpID8gU3Ry
aW5nKFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0pIDogcHJpdmF0ZUJy
b3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpOwotICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gY2ZJZGVudGlmaWVyID0gU3RyaW5nKGJhc2UgKyAiLlByaXZhdGVCcm93c2luZyIp
LmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgU3RyaW5nIGlkZW50aWZpZXJCYXNlID0gcHJpdmF0ZUJy
b3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpID8gU3RyaW5nKFtb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0pIDogcHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpOwogCi0gICAgcHJpdmF0ZUJyb3dzaW5nU3Rv
cmFnZVNlc3Npb24gPSBXS0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIu
Z2V0KCkpOworICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkgPSBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oaWRlbnRpZmllckJhc2Up
OwogfQogCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCkKQEAgLTk0LDM5ICs4NywyOCBAQCB2b2lkIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OmRlc3Ryb3lQCiAgICAgaWYgKCFwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lv
bikKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ0ZSZWxlYXNlKHByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uKTsKLSAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbiA9IDA7Ci19Ci0K
LUNGVVJMU3RvcmFnZVNlc3Npb25SZWYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVmYXVs
dFN0b3JhZ2VTZXNzaW9uKCkKLXsKLSAgICByZXR1cm4gZGVmYXVsdENGU3RvcmFnZVNlc3Npb247
Ci19Ci0KLWJvb2wgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6aW5Qcml2YXRlQnJvd3NpbmdN
b2RlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygp
ICYmIGZyYW1lKCktPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBw
cml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpID0gbnVsbHB0cjsKIH0KIAotQ0ZVUkxTdG9y
YWdlU2Vzc2lvblJlZiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigp
IGNvbnN0CitOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6
OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICBpZiAoaW5Qcml2YXRlQnJvd3NpbmdNb2Rl
KCkpIHsKLSAgICAgICAgQVNTRVJUKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKTsKLSAg
ICAgICAgcmV0dXJuIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uOworICAgIGJvb2wgaW5Q
cml2YXRlQnJvd3NpbmdNb2RlID0gZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpICYmIGZy
YW1lKCktPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBpZiAoaW5Q
cml2YXRlQnJvd3NpbmdNb2RlKSB7CisgICAgICAgIEFTU0VSVChwcml2YXRlQnJvd3NpbmdTdG9y
YWdlU2Vzc2lvbigpKTsKKyAgICAgICAgcmV0dXJuICpwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vz
c2lvbigpOwogICAgIH0KLSAgICByZXR1cm4gZGVmYXVsdENGU3RvcmFnZVNlc3Npb247CisgICAg
cmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9
CiAKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5
Rm9yQWxsQ29udGV4dHMoSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCiB7CiAgICAgW1tO
U0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXSBzZXRDb29raWVBY2Nl
cHRQb2xpY3k6c3RhdGljX2Nhc3Q8TlNIVFRQQ29va2llQWNjZXB0UG9saWN5Pihwb2xpY3kpXTsK
IAotICAgIGlmIChSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFn
ZSA9IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCkpCisgICAgaWYgKFJldGFpblB0cjxDRkhU
VFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCkpCiAgICAgICAgIFdLU2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBwb2xpY3kpOwogCi0g
ICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKSB7Ci0gICAgICAgIFJldGFpblB0
cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBwcml2YXRlQnJvd3NpbmdDb29raWVTdG9yYWdlID0g
YWRvcHRDRihXS0NvcHlIVFRQQ29va2llU3RvcmFnZShwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vz
c2lvbikpOwotICAgICAgICBXS1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocHJpdmF0ZUJyb3dz
aW5nQ29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKKyAgICBpZiAocHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb24oKSkgeworICAgICAgICBXS1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
cHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKS0+Y29va2llU3RvcmFnZSgpLmdldCgpLCBw
b2xpY3kpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlBsYXRmb3Jt
U3RyYXRlZ2llc01hYy5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCi0KLSNpbmNsdWRlICJX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJm
YWNlLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6ZGVmYXVsdENvb2tpZVN0b3JhZ2UoKQotewotICAgIGlmIChDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmIHNlc3Npb24gPSBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoV0tDb3B5SFRUUENvb2tpZVN0b3JhZ2Uo
c2Vzc2lvbikpOwotCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICByZXR1cm4gV0tHZXREZWZhdWx0
SFRUUENvb2tpZVN0b3JhZ2UoKTsKLSNlbHNlCi0gICAgLy8gV2hlbiB1c2luZyBOU1VSTENvbm5l
Y3Rpb24sIHdlIGFsc28gdXNlIGl0cyBzaGFyZWQgY29va2llIHN0b3JhZ2UuCi0gICAgcmV0dXJu
IDA7Ci0jZW5kaWYKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDEzODQw
NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0pTRWxlbWVu
dC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSlNSYW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWFp
blJlc291cmNlTG9hZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JraW5nQ29udGV4dC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTm9kZVRyYXZlcnNhbC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRG9jdW1lbnQuaD4KQEAgLTI0OCw3ICsy
NDksNyBAQCB2b2lkIFdlYkZyYW1lOjpzdGFydERvd25sb2FkKGNvbnN0IFdlYkNvCiAKICNpZiBF
TkFCTEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2Vz
TmV0d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQg
PSBtX2NvcmVGcmFtZS0+bG9hZGVyKCktPm5ldHdvcmtpbmdDb250ZXh0KCktPmluUHJpdmF0ZUJy
b3dzaW5nTW9kZSgpOworICAgICAgICBib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBtX2Nv
cmVGcmFtZS0+bG9hZGVyKCktPm5ldHdvcmtpbmdDb250ZXh0KCktPnN0b3JhZ2VTZXNzaW9uKCku
aXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CiAgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgp
Lm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlN0YXJ0RG93bmxvYWQocHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCwgcG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCksIDApOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdl
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2
ICs0OSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4KICNpbXBvcnQgPFdl
YkNvcmUvSFRNTENvbnZlcnRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+
CisjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtpbmdDb250ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CkBAIC02NzgsNyArNjc5LDcgQEAgYm9vbCBX
ZWJQYWdlOjpwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVSTAogICAgIE5TTXV0YWJsZVVSTFJlcXVl
c3QqIHJlcXVlc3QgPSBbW05TTXV0YWJsZVVSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJMOnVy
bF07CiAgICAgW3JlcXVlc3Qgc2V0VmFsdWU6KE5TU3RyaW5nKil1c2VyQWdlbnQoKSBmb3JIVFRQ
SGVhZGVyRmllbGQ6QCJVc2VyLUFnZW50Il07CiAgICAgTlNDYWNoZWRVUkxSZXNwb25zZSAqY2Fj
aGVkUmVzcG9uc2U7Ci0gICAgaWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Np
b24gPSBjb3JlUGFnZSgpLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPm5ldHdvcmtpbmdDb250ZXh0
KCktPnN0b3JhZ2VTZXNzaW9uKCkpCisgICAgaWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3Rv
cmFnZVNlc3Npb24gPSBjb3JlUGFnZSgpLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPm5ldHdvcmtp
bmdDb250ZXh0KCktPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCkpCiAgICAgICAg
IGNhY2hlZFJlc3BvbnNlID0gV0tDYWNoZWRSZXNwb25zZUZvclJlcXVlc3Qoc3RvcmFnZVNlc3Np
b24sIHJlcXVlc3QpOwogICAgIGVsc2UKICAgICAgICAgY2FjaGVkUmVzcG9uc2UgPSBbW05TVVJM
Q2FjaGUgc2hhcmVkVVJMQ2FjaGVdIGNhY2hlZFJlc3BvbnNlRm9yUmVxdWVzdDpyZXF1ZXN0XTsK
QEAgLTY5Miw3ICs2OTMsNyBAQCBzdGF0aWMgTlNDYWNoZWRVUkxSZXNwb25zZSAqY2FjaGVkUmVz
cG9uCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZVVSTFJlcXVlc3Q+IHJlcXVlc3QoQWRvcHROUywg
W1tOU011dGFibGVVUkxSZXF1ZXN0IGFsbG9jXSBpbml0V2l0aFVSTDp1cmxdKTsKICAgICBbcmVx
dWVzdC5nZXQoKSBzZXRWYWx1ZTooTlNTdHJpbmcgKil3ZWJQYWdlLT51c2VyQWdlbnQoKSBmb3JI
VFRQSGVhZGVyRmllbGQ6QCJVc2VyLUFnZW50Il07CiAKLSAgICBpZiAoQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZiBzdG9yYWdlU2Vzc2lvbiA9IHdlYlBhZ2UtPmNvcmVQYWdlKCktPm1haW5GcmFtZSgp
LT5sb2FkZXIoKS0+bmV0d29ya2luZ0NvbnRleHQoKS0+c3RvcmFnZVNlc3Npb24oKSkKKyAgICBp
ZiAoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vzc2lvbiA9IHdlYlBhZ2UtPmNvcmVQ
YWdlKCktPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+bmV0d29ya2luZ0NvbnRleHQoKS0+c3RvcmFn
ZVNlc3Npb24oKS5wbGF0Zm9ybVNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuIFdLQ2FjaGVkUmVz
cG9uc2VGb3JSZXF1ZXN0KHN0b3JhZ2VTZXNzaW9uLCByZXF1ZXN0LmdldCgpKTsKIAogICAgIHJl
dHVybiBbW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdIGNhY2hlZFJlc3BvbnNlRm9yUmVxdWVz
dDpyZXF1ZXN0LmdldCgpXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmNwcAkocmV2aXNpb24gMTM4
NDA3KQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVn
aWVzRWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsMzQgKzg2LDM0IEBAIHZvaWQgUGxhdGZv
cm1TdHJhdGVnaWVzRWZsOjpub3RpZnlDb29raWUKIHsKIH0KIAotU3RyaW5nIFBsYXRmb3JtU3Ry
YXRlZ2llc0VmbDo6Y29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29u
c3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3Ry
YXRlZ2llc0VmbDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOwor
ICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVy
bCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpzZXRDb29raWVzRnJvbURPTShO
ZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgUGxhdGZvcm1TdHJh
dGVnaWVzRWZsOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb29raWVTdHJpbmcpCiB7Ci0gICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00o
Y29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNl
dENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsK
IH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNvb2tpZXNFbmFibGVkKE5ldHdvcmtp
bmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1
cmwpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKGNvbnRl
eHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVk
KHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdp
ZXNFZmw6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcg
UGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHks
IGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2Vi
Q29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwg
dXJsKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmdldFJhd0Nvb2tpZXMoTmV0
d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtV
UkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIFBsYXRmb3JtU3RyYXRl
Z2llc0VmbDo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tp
ZT4mIHJhd0Nvb2tpZXMpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoY29u
dGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6
Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQog
Ci12b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6ZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkK
K3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29v
a2llTmFtZSkKIHsKLSAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoY29udGV4dCwgdXJsLCBjb29r
aWVOYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVO
YW1lKTsKIH0KIAogdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OnJlZnJlc2hQbHVnaW5zKCkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2ll
c0VmbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1Bs
YXRmb3JtU3RyYXRlZ2llc0VmbC5oCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaAkod29ya2luZyBjb3B5
KQpAQCAtNDcsMTIgKzQ3LDEyIEBAIHByaXZhdGU6CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVz
U3RyYXRlZ3kKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQoKTsKLSAgICB2
aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0Kiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwot
ICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29u
dGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktV
UkwmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoV2Vi
Q29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVh
bCBib29sIGdldFJhd0Nvb2tpZXMoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6
Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYp
OworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmly
dHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktV
UkwmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCBib29sIGdl
dFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxX
ZWJDb3JlOjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29u
c3QgU3RyaW5nJik7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CiAgICAgLy8g
LSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgpJbmRleDogU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuY3Bw
CShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Q
bGF0Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCwzNCArODAsMzQg
QEAgdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6Om5vdGlmeUNvb2tpZQogewogfQogCi1TdHJp
bmcgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJp
bmcgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYg
dXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKGNvbnRleHQsIGZpcnN0
UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwg
Zmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OnNldENv
b2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9p
ZCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OnNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKLSAgICBXZWJDb3JlOjpzZXRD
b29raWVzRnJvbURPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7Cisg
ICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBj
b29raWVTdHJpbmcpOwogfQogCi1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y29va2llc0Vu
YWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHks
IGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjb29raWVzRW5h
YmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2ll
c0VuYWJsZWQoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6
Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotU3RyaW5nIFBs
YXRmb3JtU3RyYXRlZ2llc0d0azo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
IHVybCkKK1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOwor
ICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9u
LCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Z2V0
UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wg
UGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJs
LCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Z2V0
UmF3Q29va2llcyhjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOworICAgIHJl
dHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgcmF3
Q29va2llcyk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpkZWxldGVDb29raWUo
TmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBjb29raWVOYW1lKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmRlbGV0ZUNvb2tpZShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShjb250
ZXh0LCB1cmwsIGNvb2tpZU5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9u
LCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCiAvLyBQbHVnaW5TdHJhdGVneQpJbmRleDogU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVn
aWVzR3RrLmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMiAr
NDYsMTIgQEAgcHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneQogICAg
IHZpcnR1YWwgdm9pZCBub3RpZnlDb29raWVzQ2hhbmdlZCgpOwotICAgIHZpcnR1YWwgU3RyaW5n
IGNvb2tpZXNGb3JET00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCB2
b2lkIHNldENvb2tpZXNGcm9tRE9NKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0
cmluZyYpOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChXZWJDb3JlOjpOZXR3b3Jr
aW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3
Q29va2llcyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiYpOwotICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6TmV0d29ya2luZ0Nv
bnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVh
bCBTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJM
Jik7CisgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29v
a2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZp
cnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tp
ZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsK
IAogICAgIC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kKICAgICAvLyAtIFVzaW5nIGRlZmF1
bHQgaW1wbGVtZW50YXRpb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24gMTM4NDA3
KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2ICsxMDgsNyBAQAogI2ltcG9ydCA8V2ViQ29y
ZS9Nb3VzZUV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUGx1Z2luVmlld0Jhc2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUHJvdGVjdGlvblNwYWNlLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVz
b3VyY2VIYW5kbGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsMTMgKzI3LDggQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQoZnJhbWUpKTsKICAgICB9CiAKLSAgICBz
dGF0aWMgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNl
KGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyB2b2lkIHN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Np
b24oKTsKICAgICBzdGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CiAg
ICAgc3RhdGljIHZvaWQgZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKLSAgICBzdGF0
aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKLQotICAg
IHN0YXRpYyB2b2lkIHNldENvb2tpZUFjY2VwdFBvbGljeUZvclRlc3RpbmdDb250ZXh0KE5TSFRU
UENvb2tpZUFjY2VwdFBvbGljeSk7CiAKIHByaXZhdGU6CiAgICAgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dChXZWJDb3JlOjpGcmFtZSogZnJhbWUpCkBAIC00Myw4ICszOCw3IEBAIHByaXZhdGU6
CiAKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSBjb25zdCBPVkVS
UklERTsKICAgICB2aXJ0dWFsIGJvb2wgbG9jYWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZCgp
IGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBpblByaXZhdGVCcm93c2luZ01vZGUo
KSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3Rv
cmFnZVNlc3Npb24oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCBPVkVSUklERTsKICAgICB2
aXJ0dWFsIFdlYkNvcmU6OlNjaGVkdWxlUGFpckhhc2hTZXQqIHNjaGVkdWxlZFJ1bkxvb3BQYWly
cygpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBi
bG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3QgT1ZFUlJJ
REU7CiB9OwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZpc2lvbiAxMzg0MDcp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAjaW1wb3J0ICJXZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0LmgiCiAKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXJD
bGllbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgpAQCAtMjgsOCArMjksMTEgQEAKIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGRlZmF1
bHRDRlN0b3JhZ2VTZXNzaW9uOwotc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgcHJpdmF0
ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb247CitzdGF0aWMgT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbj4mIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkKK3sKKyAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+LCBzZXNzaW9uLCAoKSk7Cisg
ICAgcmV0dXJuIHNlc3Npb247Cit9CiAKIGJvb2wgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6
bmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSBjb25zdAogewpAQCAtNTEsNjkgKzU1LDI3IEBAIFJl
c291cmNlRXJyb3IgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDoKICAgICByZXR1cm4gZnJhbWUo
KS0+bG9hZGVyKCktPmNsaWVudCgpLT5ibG9ja2VkRXJyb3IocmVxdWVzdCk7CiB9CiAKLXN0YXRp
YyBTdHJpbmcmIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKQot
ewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIGJhc2UsICgpKTsKLSAgICByZXR1cm4gYmFzZTsKLX0KLQotdm9pZCBXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0OjpzZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZp
ZXJCYXNlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKLXsKLSAgICBwcml2YXRlQnJvd3NpbmdT
dG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkgPSBpZGVudGlmaWVyOwotfQotCi12b2lkIFdl
YkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKQotewot
ICAgIC8vIFNldCBhIHByaXZhdGUgc2Vzc2lvbiBmb3IgdGVzdGluZyB0byBhdm9pZCBpbnRlcmZl
cmluZyB3aXRoIGdsb2JhbCBjb29raWVzLiBUaGlzIHNob3VsZCBiZSBkaWZmZXJlbnQgZnJvbSBw
cml2YXRlIGJyb3dzaW5nIHNlc3Npb24uCi0gICAgaWYgKGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9u
KQotICAgICAgICBDRlJlbGVhc2UoZGVmYXVsdENGU3RvcmFnZVNlc3Npb24pOwotICAgIGRlZmF1
bHRDRlN0b3JhZ2VTZXNzaW9uID0gV0tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTVFIo
IlByaXZhdGUgV2ViS2l0IFNlc3Npb24iKSk7Ci19Ci0KIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pCisg
ICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFN0cmluZyBiYXNlID0gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlm
aWVyQmFzZSgpLmlzTnVsbCgpID8gU3RyaW5nKFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxl
SWRlbnRpZmllcl0pIDogcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFz
ZSgpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVudGlmaWVyID0gU3RyaW5nKGJh
c2UgKyAiLlByaXZhdGVCcm93c2luZyIpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0KLSAgICBwcml2YXRl
QnJvd3NpbmdTdG9yYWdlU2Vzc2lvbiA9IFdLQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKGNm
SWRlbnRpZmllci5nZXQoKSk7CisgICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSA9
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihbW05T
QnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKIH0KIAogdm9pZCBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7Ci0g
ICAgaWYgKCFwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbikKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgQ0ZSZWxlYXNlKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKTsKLSAgICBwcml2
YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbiA9IDA7Ci19Ci0KLUNGVVJMU3RvcmFnZVNlc3Npb25S
ZWYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkKLXsK
LSAgICByZXR1cm4gZGVmYXVsdENGU3RvcmFnZVNlc3Npb247CisgICAgcHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb24oKSA9IG51bGxwdHI7CiB9CiAKLWJvb2wgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QKK05ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAog
ewotICAgIHJldHVybiBmcmFtZSgpICYmIGZyYW1lKCktPnNldHRpbmdzKCkgJiYgZnJhbWUoKS0+
c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwotfQotCi1DRlVSTFN0b3JhZ2VT
ZXNzaW9uUmVmIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29u
c3QKLXsKLSAgICBpZiAoaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkpIHsKLSAgICAgICAgQVNTRVJU
KHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKTsKLSAgICAgICAgcmV0dXJuIHByaXZhdGVC
cm93c2luZ1N0b3JhZ2VTZXNzaW9uOworICAgIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlID0g
ZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpICYmIGZyYW1lKCktPnNldHRpbmdzKCktPnBy
aXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBpZiAoaW5Qcml2YXRlQnJvd3NpbmdNb2RlKSB7
CisgICAgICAgIEFTU0VSVChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpKTsKKyAgICAg
ICAgcmV0dXJuICpwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpOwogICAgIH0KLSAgICBy
ZXR1cm4gZGVmYXVsdENGU3RvcmFnZVNlc3Npb247CisgICAgcmV0dXJuIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKLXZvaWQgV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yVGVzdGluZ0NvbnRleHQoTlNI
VFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSkKLXsKLSAgICBBU1NFUlQoZGVmYXVsdENGU3Rv
cmFnZVNlc3Npb24pOwotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBkZWZh
dWx0Q29va2llU3RvcmFnZSA9IGFkb3B0Q0YoV0tDb3B5SFRUUENvb2tpZVN0b3JhZ2UoZGVmYXVs
dENGU3RvcmFnZVNlc3Npb24pKTsKLSAgICBXS1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3koZGVm
YXVsdENvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7Ci19CkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
aAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDEzICs1MywxMiBA
QCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5CiAgICAgdmlydHVh
bCB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBSZXRh
aW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gZGVmYXVsdENvb2tpZVN0b3JhZ2UoKSBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKFdlYkNvcmU6Ok5ldHdvcmtp
bmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShX
ZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKLSAgICB2
aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZF
UlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUo
V2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBib29sIGdl
dFJhd0Nvb2tpZXMoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNv
b2tpZT4mKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6
Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBzZXRD
b29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3Qg
U3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFN0
cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBX
ZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJD
b3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3Qg
U3RyaW5nJikgT1ZFUlJJREU7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CiAg
ICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2ll
cy5tbQkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04Nyw0NyArODcs
MzQgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Om5vdGlmeUNvb2tpZQogewogfQogCi1S
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpk
ZWZhdWx0Q29va2llU3RvcmFnZSgpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29r
aWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIGlmIChDRlVSTFN0b3JhZ2VT
ZXNzaW9uUmVmIHNlc3Npb24gPSBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZWZhdWx0U3Rv
cmFnZVNlc3Npb24oKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoV0tDb3B5SFRUUENvb2tpZVN0
b3JhZ2Uoc2Vzc2lvbikpOwotCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICByZXR1cm4gV0tHZXRE
ZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UoKTsKLSNlbHNlCi0gICAgLy8gV2hlbiB1c2luZyBOU1VS
TENvbm5lY3Rpb24sIHdlIGFsc28gdXNlIGl0cyBzaGFyZWQgY29va2llIHN0b3JhZ2UuCi0gICAg
cmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29v
a2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYgdXJsKQotewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9y
RE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tp
ZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
Y29va2llU3RyaW5nKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9t
RE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsK
LSAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmws
IGNvb2tpZVN0cmluZyk7CisgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oc2Vzc2lvbiwg
Zmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1
cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAg
ICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJs
KTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAg
IHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb250ZXh0LCBm
aXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1ib29sIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYg
cmF3Q29va2llcykKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwsIHJh
d0Nvb2tpZXMpOworICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHNlc3Npb24sIGZp
cnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIFdlYkNvcmU6
OmRlbGV0ZUNvb2tpZShjb250ZXh0LCB1cmwsIGNvb2tpZU5hbWUpOworICAgIFdlYkNvcmU6OmRl
bGV0ZUNvb2tpZShzZXNzaW9uLCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCiB2b2lkIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6cmVmcmVzaFBsdWdpbnMoKQpJbmRleDogU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiAxMzg0MDcpCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
OSw4ICszOSw5IEBACiAjaW1wb3J0ICJXZWJLaXRWZXJzaW9uQ2hlY2tzLmgiCiAjaW1wb3J0ICJX
ZWJOU0RpY3Rpb25hcnlFeHRyYXMuaCIKICNpbXBvcnQgIldlYk5TVVJMRXh0cmFzLmgiCisjaW1w
b3J0ICJXZWJTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPFdlYkNvcmUvQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvQ29va2llU3RvcmFnZUNGTmV0Lmg+Cisj
aW1wb3J0IDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9SZXNvdXJjZUhhbmRsZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCkBAIC0xMjg2
LDEyICsxMjg3LDEzIEBAICsgKHZvaWQpX3NldElCQ3JlYXRvcklEOihOU1N0cmluZyAqKXN0cmkK
IAogKyAodm9pZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Npb24KIHsKLSAg
ICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7
CisgICAgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UoKTsKKyAgICBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKIH0KIAogKyAodm9pZClfc2V0Q3Vy
cmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hUVFBDb29raWVB
Y2NlcHRQb2xpY3kpcG9saWN5CiB7Ci0gICAgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0
Q29va2llQWNjZXB0UG9saWN5Rm9yVGVzdGluZ0NvbnRleHQocG9saWN5KTsKKyAgICBXS1NldEhU
VFBDb29raWVBY2NlcHRQb2xpY3koTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFn
ZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHBvbGljeSk7CiB9CiAKIC0gKEJPT0wp
aXNET01QYXN0ZUFsbG93ZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0J
KHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjAxNiw3ICsyMDE2LDcgQEAgLSAoTlNDYWNoZWRVUkxSZXNw
b25zZSAqKV9jYWNoZWRSZXNwb25zZQogICAgIGlmICghX3ByaXZhdGUtPnBhZ2UpCiAgICAgICAg
IHJldHVybiBuaWw7CiAKLSAgICBpZiAoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vz
c2lvbiA9IF9wcml2YXRlLT5wYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPm5ldHdvcmtpbmdD
b250ZXh0KCktPnN0b3JhZ2VTZXNzaW9uKCkpCisgICAgaWYgKENGVVJMU3RvcmFnZVNlc3Npb25S
ZWYgc3RvcmFnZVNlc3Npb24gPSBfcHJpdmF0ZS0+cGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigp
LT5uZXR3b3JraW5nQ29udGV4dCgpLT5zdG9yYWdlU2Vzc2lvbigpLnBsYXRmb3JtU2Vzc2lvbigp
KQogICAgICAgICBjYWNoZWRSZXNwb25zZSA9IFdLQ2FjaGVkUmVzcG9uc2VGb3JSZXF1ZXN0KHN0
b3JhZ2VTZXNzaW9uLCByZXF1ZXN0LmdldCgpKTsKICAgICBlbHNlCiAgICAgICAgIGNhY2hlZFJl
c3BvbnNlID0gW1tOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXSBjYWNoZWRSZXNwb25zZUZvclJl
cXVlc3Q6cmVxdWVzdC5nZXQoKV07CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmNwcAkocmV2aXNpb24gMTM4
NDA3KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdp
ZXNRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDM0ICs5OSwzNCBAQCB2b2lkIFBsYXRmb3Jt
U3RyYXRlZ2llc1F0Ojpub3RpZnlDb29raWVzCiB7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVN0cmF0
ZWdpZXNRdDo6Y29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3Qg
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRl
Z2llc1F0Ojpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lv
biwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVy
biBXZWJDb3JlOjpjb29raWVzRm9yRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAg
cmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsK
IH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6c2V0Q29va2llc0Zyb21ET00oTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2ll
c1F0OjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBjb29raWVTdHJpbmcpCiB7Ci0gICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oY29udGV4
dCwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNldENvb2tp
ZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAot
Ym9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Y29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK2Jv
b2wgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYg
dXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChjb250ZXh0LCBmaXJz
dFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzZXNzaW9u
LCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1T
dHJhdGVnaWVzUXQ6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQog
Ci1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZl
Y3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Z2V0
UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tp
ZXMpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoY29udGV4dCwgZmlyc3RQ
YXJ0eSwgdXJsLCByYXdDb29raWVzKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2ll
cyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12b2lkIFBsYXRm
b3JtU3RyYXRlZ2llc1F0OjpkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBQbGF0Zm9y
bVN0cmF0ZWdpZXNRdDo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0g
ICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKGNvbnRleHQsIHVybCwgY29va2llTmFtZSk7CisgICAg
V2ViQ29yZTo6ZGVsZXRlQ29va2llKHNlc3Npb24sIHVybCwgY29va2llTmFtZSk7CiB9CiAKIHZv
aWQgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OnJlZnJlc2hQbHVnaW5zKCkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0
LmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
UGxhdGZvcm1TdHJhdGVnaWVzUXQuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsMTIgKzU4LDEyIEBA
IHByaXZhdGU6CiAgICAgCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5CiAgICAgdmly
dHVhbCB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29v
a2llc0ZvckRPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0Q29va2llc0Zyb21ET00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5n
Jik7Ci0gICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKFdlYkNvcmU6Ok5ldHdvcmtpbmdD
b250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
S1VSTCYpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29r
aWVzKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7
Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4
dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFN0
cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVz
RW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVh
bCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYp
OworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwogCiAg
ICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQogICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBp
bXBsZW1lbnRhdGlvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdl
YkZyYW1lQWRhcHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgogI2lu
Y2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uU2NoZWR1bGVyLmgiCisjaW5jbHVk
ZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJRV2ViUGFnZUFkYXB0ZXIuaCIKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VBZGFwdGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAJKHJldmlz
aW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYlBhZ2VB
ZGFwdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgIkxv
Y2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSAiTWVtb3J5Q2FjaGUuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgIk5vZGVMaXN0LmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0aW9uUHJlc2VudGVyQ2xpZW50UXQu
aCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNv
b2tpZU1hbmFnZXJDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2Vi
Q29va2llTWFuYWdlckNGTmV0LmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNlL1dlYktp
dC93aW4vV2ViQ29va2llTWFuYWdlckNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyAr
MjgsNyBAQAogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXIuaCIKIAogI2luY2x1ZGUgPENGTmV0
d29yay9DRkhUVFBDb29raWVzUHJpdi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llU3RvcmFn
ZUNGTmV0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZp
ZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZp
c2lvbiAxMzg0MDcpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTU0LDcgKzE1NCw2IEBACiAjaWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlIDxD
Rk5ldHdvcmsvQ0ZVUkxDYWNoZVByaXYuaD4KICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxQcm90
b2NvbFByaXYuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2VDRk5ldC5oPgogI2lu
Y2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4gCiAj
ZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAJKHJldmlzaW9uIDEzODQw
NykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw3ICsyMyw2IEBACiAjaW5jbHVkZSAi
RnJhbWVMb2FkZXJDbGllbnQuaCIKICNpZiBVU0UoQ0ZORVRXT1JLKQogI2luY2x1ZGUgPENGTmV0
d29yay9DRkhUVFBDb29raWVzUHJpdi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llU3RvcmFn
ZUNGTmV0Lmg+CiAjZW5kaWYKICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaWYgVVNF
KENGTkVUV09SSykKQEAgLTMzLDggKzMyLDExIEBACiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogI2lmIFVTRShDRk5FVFdPUkspCi1zdGF0aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBkZWZh
dWx0Q0ZTdG9yYWdlU2Vzc2lvbjsKLXN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHByaXZh
dGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uOworc3RhdGljIE93blB0cjxOZXR3b3JrU3RvcmFnZVNl
c3Npb24+JiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpCit7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiwgc2Vzc2lvbiwgKCkpOwor
ICAgIHJldHVybiBzZXNzaW9uOworfQogI2VuZGlmCiAKIFBhc3NSZWZQdHI8V2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dD4gV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6Y3JlYXRlKEZyYW1lKiBm
cmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCkBAIC02OSw3NSArNzEsNDMgQEAgdm9pZCBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRQcml2YQogICAgIHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKSA9IGlkZW50aWZpZXI7CiB9CiAKLXZvaWQgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpCi17Ci0j
aWYgVVNFKENGTkVUV09SSykKLSAgICAvLyBTZXQgYSBwcml2YXRlIHNlc3Npb24gZm9yIHRlc3Rp
bmcgdG8gYXZvaWQgaW50ZXJmZXJpbmcgd2l0aCBnbG9iYWwgY29va2llcy4gVGhpcyBzaG91bGQg
YmUgZGlmZmVyZW50IGZyb20gcHJpdmF0ZSBicm93c2luZyBzZXNzaW9uLgotICAgIGRlZmF1bHRD
RlN0b3JhZ2VTZXNzaW9uID0gd2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTVFIoIlBy
aXZhdGUgV2ViS2l0IFNlc3Npb24iKSwgZGVmYXVsdENGU3RvcmFnZVNlc3Npb24pOwotI2VuZGlm
Ci19Ci0KIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dz
aW5nU2Vzc2lvbigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICNpZiBVU0UoQ0ZO
RVRXT1JLKQotICAgIGlmIChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbikKKyAgICBpZiAo
cHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
U3RyaW5nIGJhc2UgPSBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNl
KCkuaXNOdWxsKCkgPyBTdHJpbmcocmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZCdW5k
bGVHZXRWYWx1ZUZvckluZm9EaWN0aW9uYXJ5S2V5KENGQnVuZGxlR2V0TWFpbkJ1bmRsZSgpLCBr
Q0ZCdW5kbGVJZGVudGlmaWVyS2V5KSkpIDogcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25J
ZGVudGlmaWVyQmFzZSgpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVudGlmaWVy
ID0gU3RyaW5nKGJhc2UgKyAiLlByaXZhdGVCcm93c2luZyIpLmNyZWF0ZUNGU3RyaW5nKCk7Cisg
ICAgU3RyaW5nIGlkZW50aWZpZXJCYXNlID0gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25J
ZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpID8gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJp
bmdSZWY+KENGQnVuZGxlR2V0VmFsdWVGb3JJbmZvRGljdGlvbmFyeUtleShDRkJ1bmRsZUdldE1h
aW5CdW5kbGUoKSwga0NGQnVuZGxlSWRlbnRpZmllcktleSkpKSA6IHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKTsKIAotICAgIHByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uID0gd2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlmaWVyLmdl
dCgpLCBkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbik7CisgICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFn
ZVNlc3Npb24oKSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbihpZGVudGlmaWVyQmFzZSk7CiAjZW5kaWYKIH0KIAogdm9pZCBXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7CiAjaWYgVVNF
KENGTkVUV09SSykKLSAgICBpZiAoIXByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBDRlJlbGVhc2UocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b24pOwotICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uID0gMDsKKyAgICBwcml2YXRl
QnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpID0gbnVsbHB0cjsKICNlbmRpZgogfQogCiAjaWYgVVNF
KENGTkVUV09SSykKLUNGVVJMU3RvcmFnZVNlc3Npb25SZWYgV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIHJl
dHVybiBkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbjsKLX0KLQotYm9vbCBXZWJGcmFtZU5ldHdvcmtp
bmdDb250ZXh0OjppblByaXZhdGVCcm93c2luZ01vZGUoKSBjb25zdAotewotICAgIHJldHVybiBm
cmFtZSgpICYmIGZyYW1lKCktPnNldHRpbmdzKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS0+cHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwotfQotCi1DRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKLXsKLSAgICBib29s
IHByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBpblByaXZhdGVCcm93c2luZ01vZGUoKTsKLSAgICBp
ZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkgewotICAgICAgICBBU1NFUlQocHJpdmF0ZUJyb3dz
aW5nU3RvcmFnZVNlc3Npb24pOwotICAgICAgICByZXR1cm4gcHJpdmF0ZUJyb3dzaW5nU3RvcmFn
ZVNlc3Npb247CisgICAgYm9vbCBpblByaXZhdGVCcm93c2luZ01vZGUgPSBmcmFtZSgpICYmIGZy
YW1lKCktPnNldHRpbmdzKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCgpOworICAgIGlmIChpblByaXZhdGVCcm93c2luZ01vZGUpIHsKKyAgICAgICAgQVNT
RVJUKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpOworICAgICAgICByZXR1cm4gKnBy
aXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCk7CiAgICAgfQotICAgIHJldHVybiBkZWZhdWx0
Q0ZTdG9yYWdlU2Vzc2lvbjsKLX0KLQotdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpz
ZXRDb29raWVBY2NlcHRQb2xpY3lGb3JUZXN0aW5nQ29udGV4dChDRkhUVFBDb29raWVTdG9yYWdl
QWNjZXB0UG9saWN5IHBvbGljeSkKLXsKLSAgICBBU1NFUlQoZGVmYXVsdENGU3RvcmFnZVNlc3Np
b24pOwotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBkZWZhdWx0Q29va2ll
U3RvcmFnZSA9IGFkb3B0Q0Yod2tDb3B5SFRUUENvb2tpZVN0b3JhZ2UoZGVmYXVsdENGU3RvcmFn
ZVNlc3Npb24pKTsKLSAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5
KGRlZmF1bHRDb29raWVTdG9yYWdlLmdldCgpLCBwb2xpY3kpOworICAgIHJldHVybiBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQogCiB2b2lkIFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRz
KENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kgcG9saWN5KQogewotICAgIGlmIChSZXRh
aW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGRlZmF1bHRDRkhU
VFBDb29raWVTdG9yYWdlKCkpCisgICAgaWYgKFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdl
UmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFn
ZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCkpCiAgICAgICAgIENGSFRUUENvb2tpZVN0b3JhZ2VT
ZXRDb29raWVBY2NlcHRQb2xpY3koY29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKIAotICAg
IGlmIChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbikgewotICAgICAgICBSZXRhaW5QdHI8
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gcHJpdmF0ZUJyb3dzaW5nQ29va2llU3RvcmFnZSA9IGFk
b3B0Q0Yod2tDb3B5SFRUUENvb2tpZVN0b3JhZ2UocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b24pKTsKLSAgICAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShw
cml2YXRlQnJvd3NpbmdDb29raWVTdG9yYWdlLmdldCgpLCBwb2xpY3kpOwotICAgIH0KKyAgICBp
ZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSkKKyAgICAgICAgQ0ZIVFRQQ29va2ll
U3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lv
bigpLT5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHBvbGljeSk7CiB9CiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjksMTQgKzI5LDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGUoV2ViQ29yZTo6RnJhbWUqLCBjb25zdCBX
VEY6OlN0cmluZyYgdXNlckFnZW50KTsKIAogICAgIHN0YXRpYyB2b2lkIHNldFByaXZhdGVCcm93
c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoY29uc3QgU3RyaW5nJik7Ci0gICAgc3Rh
dGljIHZvaWQgc3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOwogICAgIHN0YXRpYyB2b2lkIGVu
c3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95UHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwogCiAjaWYgVVNFKENGTkVUV09SSykKLSAgICBzdGF0aWMg
Q0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKLQotICAgIHN0
YXRpYyB2b2lkIHNldENvb2tpZUFjY2VwdFBvbGljeUZvclRlc3RpbmdDb250ZXh0KENGSFRUUENv
b2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kpOwogICAgIHN0YXRpYyB2b2lkIHNldENvb2tpZUFjY2Vw
dFBvbGljeUZvckFsbENvbnRleHRzKENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kpOwog
I2VuZGlmCiAKQEAgLTUwLDggKzQ2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdURjo6U3Ry
aW5nIHVzZXJBZ2VudCgpIGNvbnN0OwogICAgIHZpcnR1YWwgV1RGOjpTdHJpbmcgcmVmZXJyZXIo
KSBjb25zdDsKICNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIHZpcnR1YWwgYm9vbCBpblByaXZhdGVC
cm93c2luZ01vZGUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIENGVVJMU3RvcmFnZVNlc3Npb25SZWYg
c3RvcmFnZVNlc3Npb24oKSBjb25zdDsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24oKSBjb25zdDsKICNlbmRpZgogICAgIHZpcnR1YWwg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JikgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAkocmV2aXNpb24g
MTM4NDA3KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNDQgKzg2LDM0IEBAIHZvaWQgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpub3RpZnlDb29raWUKIHsKIH0KIAotI2lmIFVTRShDRk5FVFdP
UkspCi1SZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpkZWZhdWx0Q29va2llU3RvcmFnZSgpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIGlmIChDRlVSTFN0
b3JhZ2VTZXNzaW9uUmVmIHNlc3Npb24gPSBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZWZh
dWx0U3RvcmFnZVNlc3Npb24oKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0Yod2tDb3B5SFRUUENv
b2tpZVN0b3JhZ2Uoc2Vzc2lvbikpOwotCi0gICAgcmV0dXJuIHdrR2V0RGVmYXVsdEhUVFBDb29r
aWVTdG9yYWdlKCk7Ci19Ci0jZW5kaWYKLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQotewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVz
Rm9yRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNv
b2tpZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgY29va2llU3RyaW5nKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNG
cm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykK
IHsKLSAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1
cmwsIGNvb2tpZVN0cmluZyk7CisgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oc2Vzc2lv
biwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQogCi1ib29sIFdlYlBsYXRmb3Jt
U3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsK
KyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwg
dXJsKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewot
ICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb250ZXh0
LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1ib29sIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4
dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2ll
PiYgcmF3Q29va2llcykKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVz
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKLSAg
ICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmws
IHJhd0Nvb2tpZXMpOworICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHNlc3Npb24s
IGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIFdlYkNv
cmU6OmRlbGV0ZUNvb2tpZShjb250ZXh0LCB1cmwsIGNvb2tpZU5hbWUpOworICAgIFdlYkNvcmU6
OmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCiB2b2lkIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6cmVmcmVzaFBsdWdpbnMoKQpJbmRleDogU291cmNlL1dlYktpdC93
aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJ
KHJldmlzaW9uIDEzODQwNykKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MiwxNSArNTIsMTIgQEAg
cHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneQogICAgIHZpcnR1YWwg
dm9pZCBub3RpZnlDb29raWVzQ2hhbmdlZCgpOwotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgdmly
dHVhbCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gZGVmYXVsdENvb2tpZVN0b3Jh
Z2UoKTsKLSNlbmRpZgotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oV2ViQ29yZTo6
TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKFdl
YkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwotICAgIHZpcnR1YWwgYm9v
bCBjb29raWVzRW5hYmxlZChXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNv
cmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFs
IFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShXZWJDb3JlOjpOZXR3b3JraW5n
Q29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OktVUkwmKTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhXZWJDb3JlOjpOZXR3b3Jr
aW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwotICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVDb29raWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIHNl
dENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNv
bnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25z
dCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsK
KyAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFdlYkNvcmU6OkRhdGFi
YXNlU3RyYXRlZ3kKICAgICAvLyAtIFVzaW5nIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uCkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dp
bkNFLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0
L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcAkocmV2aXNpb24gMTM4NDA3KQorKysgU291cmNl
L1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgzLDM0ICs4MywzNCBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2ll
c1dpbkNFOjpub3RpZnlDb29rCiB7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5D
RTo6Y29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1dp
bkNFOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVybiBX
ZWJDb3JlOjpjb29raWVzRm9yRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0
dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0K
IAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6c2V0Q29va2llc0Zyb21ET00oTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2ll
c1dpbkNFOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3Ry
aW5nJiBjb29raWVTdHJpbmcpCiB7Ci0gICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oY29u
dGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNldENv
b2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0K
IAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y29va2llc0VuYWJsZWQoTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVy
bCkKK2Jvb2wgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYgdXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChjb250
ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxl
ZChzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVn
aWVzV2luQ0U6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJp
bmcgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVy
biBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBh
cnR5LCB1cmwpOwogfQogCi1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpnZXRSYXdDb29r
aWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBQbGF0Zm9y
bVN0cmF0ZWdpZXNXaW5DRTo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVj
dG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nv
b2tpZXMoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKKyAgICByZXR1cm4g
V2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tp
ZXMpOwogfQogCi12b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpkZWxldGVDb29raWUoTmV0
d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBj
b29raWVOYW1lKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6ZGVsZXRlQ29va2llKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0gICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKGNvbnRl
eHQsIHVybCwgY29va2llTmFtZSk7CisgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHNlc3Npb24s
IHVybCwgY29va2llTmFtZSk7CiB9CiAKIHZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OnJl
ZnJlc2hQbHVnaW5zKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQv
UGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmgJKHJldmlzaW9uIDEz
ODQwNykKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJh
dGVnaWVzV2luQ0UuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTIgKzUxLDEyIEBAIHByaXZhdGU6
CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKICAgICB2aXJ0dWFsIHZvaWQgbm90
aWZ5Q29va2llc0NoYW5nZWQoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKFdl
YkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJv
bURPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0
dWFsIGJvb2wgY29va2llc0VuYWJsZWQoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAg
dmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoV2ViQ29yZTo6TmV0
d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBX
ZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoV2ViQ29yZTo6
TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNG
b3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwg
dm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJM
JiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0
IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpL
VVJMJik7CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdmlydHVh
bCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBXZWJDb3Jl
OjpEYXRhYmFzZVN0cmF0ZWd5CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9u
Lgo=
</data>
<flag name="commit-queue"
          id="197912"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180608</attachid>
            <date>2012-12-22 14:04:34 -0800</date>
            <delta_ts>2012-12-22 16:10:28 -0800</delta_ts>
            <desc>patch for EWS</desc>
            <filename>StorageSession.txt</filename>
            <type>text/plain</type>
            <size>181032</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzg0MTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjAyOCw2ICsyMDI4LDcgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRUUFZhbGlkYXRpb24u
Y3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcAogICAgIHBsYXRmb3JtL25l
dHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwCisgICAgcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29u
dGVudFR5cGUuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm90ZWN0aW9uU3BhY2UuY3BwCiAg
ICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5jcHAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtNTc2MCw2ICs1NzYwLDcgQEAgd2ViY29y
ZV9wbGF0Zm9ybV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Byb3h5U2VydmVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29y
a1N0YXRlTm90aWZpZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05l
dHdvcmtTdGF0ZU5vdGlmaWVyLmggXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
TmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9u
IDEzODQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAg
LTEwNjEsNiArMTA2MSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRU
UFZhbGlkYXRpb24uY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwIFwK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCBcCisgICAgcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHViLmNwcCBcCiAgICAgcGxhdGZv
cm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsv
UHJvdGVjdGlvblNwYWNlLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5j
cHAgXApAQCAtMjI3Myw2ICsyMjc0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0vbmV0
d29yay9IVFRQVmFsaWRhdGlvbi5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBTdGF0dXND
b2Rlcy5oIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL01JTUVTbmlmZmluZy5oIFwKKyAgICBwbGF0
Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIFwKICAgICBwbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtpbmdDb250ZXh0LmggXAogICAgIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
YXRlTm90aWZpZXIuaCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50VHlwZS5o
IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMzg0MTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjA3LDcgKzIwNyw3IEBA
IF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yRDFFdgogX19aTjdXZWJDb3JlMTJjYWNoZVN0b3Jh
Z2VFdgogX19aTjdXZWJDb3JlMTJjcmVhdGVNYXJrdXBFUEtOU180Tm9kZUVOU18xM0VDaGlsZHJl
bk9ubHlFUE4zV1RGNlZlY3RvcklQUzBfTG0wRUVFTlNfMTNFQWJzb2x1dGVVUkxzRVBOUzVfSU5T
XzEzUXVhbGlmaWVkTmFtZUVMbTBFRUUKIF9fWk43V2ViQ29yZTEyY3JlYXRlTWFya3VwRVBLTlNf
NVJhbmdlRVBOM1dURjZWZWN0b3JJUE5TXzROb2RlRUxtMEVFRU5TXzIzRUFubm90YXRlRm9ySW50
ZXJjaGFuZ2VFYk5TXzEzRUFic29sdXRlVVJMc0UKLV9fWk43V2ViQ29yZTEyZGVsZXRlQ29va2ll
RVBOU18xN05ldHdvcmtpbmdDb250ZXh0RVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdFCitfX1pO
N1dlYkNvcmUxMmRlbGV0ZUNvb2tpZUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNf
NEtVUkxFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMmdjQ29udHJvbGxlckV2CiBfX1pO
N1dlYkNvcmUxMmljb25EYXRhYmFzZUV2CiBfX1pON1dlYkNvcmUxMnRvVWludDhBcnJheUVOM0pT
QzdKU1ZhbHVlRQpAQCAtMjM2LDEwICsyMzYsMTAgQEAgX19aTjdXZWJDb3JlMTNSZXNvdXJjZUVy
cm9yQzFFUDdOU0Vycm9yCiBfX1pON1dlYkNvcmUxM1Jlc291cmNlRXJyb3JDMUVQOV9fQ0ZFcnJv
cgogX19aTjdXZWJDb3JlMTNTdHlsZWRFbGVtZW50MjJzZXRJbmxpbmVTdHlsZVByb3BlcnR5RU5T
XzEzQ1NTUHJvcGVydHlJREVSS04zV1RGNlN0cmluZ0ViCiBfX1pON1dlYkNvcmUxM1N0eWxlZEVs
ZW1lbnQyMnNldElubGluZVN0eWxlUHJvcGVydHlFTlNfMTNDU1NQcm9wZXJ0eUlERWROU18xN0NT
U1ByaW1pdGl2ZVZhbHVlOVVuaXRUeXBlc0ViCi1fX1pON1dlYkNvcmUxM2Nvb2tpZXNGb3JET01F
UE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VSTEVTNF8KK19fWk43V2ViQ29yZTEzY29v
a2llc0ZvckRPTUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfNEtVUkxFUzVfCiBf
X1pON1dlYkNvcmUxM2NyZWF0ZVdyYXBwZXJFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUds
b2JhbE9iamVjdEVQTlNfNE5vZGVFCiBfX1pON1dlYkNvcmUxM2RpcmVjdG9yeU5hbWVFUktOM1dU
RjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxM2dldFJhd0Nvb2tpZXNFUE5TXzE3TmV0d29ya2luZ0Nv
bnRleHRFUktOU180S1VSTEVTNF9STjNXVEY2VmVjdG9ySU5TXzZDb29raWVFTG0wRUVFCitfX1pO
N1dlYkNvcmUxM2dldFJhd0Nvb2tpZXNFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05T
XzRLVVJMRVM1X1JOM1dURjZWZWN0b3JJTlNfNkNvb2tpZUVMbTBFRUUKIF9fWk43V2ViQ29yZTEz
dG9BcnJheUJ1ZmZlckVOM0pTQzdKU1ZhbHVlRQogX19aTjdXZWJDb3JlMTN0b0hUTUxFbGVtZW50
RVBOU18yMUZvcm1Bc3NvY2lhdGVkRWxlbWVudEUKIF9fWk43V2ViQ29yZTEzdG9KU0RPTVdpbmRv
d0VOM0pTQzdKU1ZhbHVlRQpAQCAtMjU0LDYgKzI1NCwxMCBAQCBfX1pON1dlYkNvcmUxNERvY3Vt
ZW50TG9hZGVyMTNhdHRhY2hUb0ZyCiBfX1pON1dlYkNvcmUxNERvY3VtZW50TG9hZGVyMTVkZXRh
Y2hGcm9tRnJhbWVFdgogX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjE4YWRkQXJjaGl2ZVJl
c291cmNlRU4zV1RGMTBQYXNzUmVmUHRySU5TXzE1QXJjaGl2ZVJlc291cmNlRUVFCiBfX1pON1dl
YkNvcmUxNFJlc291cmNlTG9hZGVyMzJkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUVS
S05TXzIzQXV0aGVudGljYXRpb25DaGFsbGVuZ2VFCitfX1pON1dlYkNvcmUxNGNvb2tpZXNFbmFi
bGVkRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU180S1VSTEVTNV8KK19fWk43V2Vi
Q29yZTE3c2V0Q29va2llc0Zyb21ET01FUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05T
XzRLVVJMRVM1X1JLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMjFOZXR3b3JrU3RvcmFnZVNl
c3Npb24yMWRlZmF1bHRTdG9yYWdlU2Vzc2lvbkV2CitfX1pON1dlYkNvcmUyMU5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjI1c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbkV2CiBfX1pON1dlYkNvcmUyMVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTExZGVzZXJpYWxpemVFUE4zSlNDOUV4ZWNTdGF0ZUVQTlMxXzE0
SlNHbG9iYWxPYmplY3RFUE4zV1RGNlZlY3RvcklOUzZfNlJlZlB0cklOU18xMU1lc3NhZ2VQb3J0
RUVFTG0xRUVFTlNfMjJTZXJpYWxpemF0aW9uRXJyb3JNb2RlRQogX19aTjdXZWJDb3JlMjFTZXJp
YWxpemVkU2NyaXB0VmFsdWU2Y3JlYXRlRVBOM0pTQzlFeGVjU3RhdGVFTlMxXzdKU1ZhbHVlRVBO
M1dURjZWZWN0b3JJTlM1XzZSZWZQdHJJTlNfMTFNZXNzYWdlUG9ydEVFRUxtMUVFRVBOUzZfSU5T
N19JTlM1XzExQXJyYXlCdWZmZXJFRUVMbTFFRUVOU18yMlNlcmlhbGl6YXRpb25FcnJvck1vZGVF
CiBfX1pON1dlYkNvcmUyMVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTZjcmVhdGVFUktOM1dURjZTdHJp
bmdFCkBAIC0yODQsNyArMjg4LDYgQEAgX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjlzZWxl
Y3RBbGxFdgogX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbkMxRVBOU181RnJhbWVFCiBfX1pO
N1dlYkNvcmUxNExvYWRlclN0cmF0ZWd5MjFyZXNvdXJjZUxvYWRTY2hlZHVsZXJFdgogX19aTjdX
ZWJDb3JlMTRQbHVnaW5Eb2N1bWVudDEwcGx1Z2luTm9kZUV2Ci1fX1pON1dlYkNvcmUxNGNvb2tp
ZXNFbmFibGVkRVBOU18xN05ldHdvcmtpbmdDb250ZXh0RVJLTlNfNEtVUkxFUzRfCiBfX1pOSzdX
ZWJDb3JlNUZyYW1lMjV0cmFja2VkUmVwYWludFJlY3RzQXNUZXh0RXYKIF9fWk43V2ViQ29yZTlG
cmFtZVZpZXcxN3NldFRyYWNrc1JlcGFpbnRzRWIKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMHJl
c2V0VHJhY2tlZFJlcGFpbnRzRXYKQEAgLTQ4OCw3ICs0OTEsNyBAQCBfX1pON1dlYkNvcmUxNlZp
c2libGVTZWxlY3Rpb25DMUVSS05TXzE1CiBfX1pON1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb25D
MUVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRWIKIF9fWk43V2ViQ29yZTE2Y3JlYXRlRnVsbE1hcmt1
cEVQS05TXzROb2RlRQogX19aTjdXZWJDb3JlMTZjcmVhdGVGdWxsTWFya3VwRVBLTlNfNVJhbmdl
RQotX19aTjdXZWJDb3JlMTZkZWxldGVBbGxDb29raWVzRVBOU18xN05ldHdvcmtpbmdDb250ZXh0
RQorX19aTjdXZWJDb3JlMTZkZWxldGVBbGxDb29raWVzRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNl
c3Npb25FCiBfX1pON1dlYkNvcmUxNmVuY2xvc2luZ0ludFJlY3RFUktOU185RmxvYXRSZWN0RQog
X19aTjdXZWJDb3JlMTZpc0VuZE9mUGFyYWdyYXBoRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25FTlNf
MjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCiBfX1pON1dlYkNvcmUxNmlzVXNlclZpc2li
bGVVUkxFUDhOU1N0cmluZwpAQCAtNTExLDcgKzUxNCw2IEBAIF9fWk43V2ViQ29yZTE3U3VicmVz
b3VyY2VMb2FkZXI2Y3JlYXRlRVAKIF9fWk43V2ViQ29yZTE3Vmlld3BvcnRBcmd1bWVudHMxOWRl
cHJlY2F0ZWRUYXJnZXREUElFCiBfX1pON1dlYkNvcmUxN2NhY2hlRE9NU3RydWN0dXJlRVBOU18x
N0pTRE9NR2xvYmFsT2JqZWN0RVBOM0pTQzlTdHJ1Y3R1cmVFUEtOUzJfOUNsYXNzSW5mb0UKIF9f
Wk43V2ViQ29yZTE3b3BlblRlbXBvcmFyeUZpbGVFUktOM1dURjZTdHJpbmdFUmkKLV9fWk43V2Vi
Q29yZTE3c2V0Q29va2llc0Zyb21ET01FUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VS
TEVTNF9SS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE3dXNlclZpc2libGVTdHJpbmdFUDVO
U1VSTAogX19aTjdXZWJDb3JlMThET01XaW5kb3dFeHRlbnNpb25DMUVQTlNfNUZyYW1lRVBOU18x
NURPTVdyYXBwZXJXb3JsZEUKIF9fWk43V2ViQ29yZTE4SFRNTENvbnRlbnRFbGVtZW50NmNyZWF0
ZUVQTlNfOERvY3VtZW50RQpAQCAtNTk1LDYgKzU5Nyw3IEBAIF9fWk43V2ViQ29yZTIwcHJvdG9j
b2xJc0phdmFTY3JpcHRFUktOM1cKIF9fWk43V2ViQ29yZTIwU3BhY2VTcGxpdFN0cmluZ0RhdGFE
MUV2CiBfX1pON1dlYkNvcmUyMUJhY2tGb3J3YXJkQ29udHJvbGxlcjExaXRlbUF0SW5kZXhFaQog
X19aTjdXZWJDb3JlMjFNZW1vcnlQcmVzc3VyZUhhbmRsZXI3aW5zdGFsbEV2CitfX1pON1dlYkNv
cmUyMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbjI4Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbkVS
S04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTIxUGxhdGZvcm1LZXlib2FyZEV2ZW50MjRkaXNh
bWJpZ3VhdGVLZXlEb3duRXZlbnRFTlNfMTNQbGF0Zm9ybUV2ZW50NFR5cGVFYgogX19aTjdXZWJD
b3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIxOXN0YXJ0UmVzb3VyY2VMb2FkZXJFUE5TXzE0UmVz
b3VyY2VMb2FkZXJFCiBfX1pON1dlYkNvcmUyMVJlc291cmNlTG9hZFNjaGVkdWxlcjIwc2VydmVQ
ZW5kaW5nUmVxdWVzdHNFTlNfMjBSZXNvdXJjZUxvYWRQcmlvcml0eUUKQEAgLTY1MCw3ICs2NTMs
NyBAQCBfX1pON1dlYkNvcmUyM2NyZWF0ZUZyYWdtZW50RnJvbU5vZGVzRVBOCiBfX1pON1dlYkNv
cmUyM2RhdGFGb3JVUkxDb21wb25lbnRUeXBlRVA1TlNVUkxsCiBfX1pON1dlYkNvcmUyM2RlY29k
ZUhvc3ROYW1lV2l0aFJhbmdlRVA4TlNTdHJpbmc4X05TUmFuZ2UKIF9fWk43V2ViQ29yZTIzZW5j
b2RlSG9zdE5hbWVXaXRoUmFuZ2VFUDhOU1N0cmluZzhfTlNSYW5nZQotX19aTjdXZWJDb3JlMjNn
ZXRIb3N0bmFtZXNXaXRoQ29va2llc0VQTlNfMTdOZXR3b3JraW5nQ29udGV4dEVSTjNXVEY3SGFz
aFNldElOUzJfNlN0cmluZ0VOUzJfMTBTdHJpbmdIYXNoRU5TMl8xMEhhc2hUcmFpdHNJUzRfRUVF
RQorX19aTjdXZWJDb3JlMjNnZXRIb3N0bmFtZXNXaXRoQ29va2llc0VSS05TXzIxTmV0d29ya1N0
b3JhZ2VTZXNzaW9uRVJOM1dURjdIYXNoU2V0SU5TM182U3RyaW5nRU5TM18xMFN0cmluZ0hhc2hF
TlMzXzEwSGFzaFRyYWl0c0lTNV9FRUVFCiBfX1pON1dlYkNvcmUyNEJpbmFyeVByb3BlcnR5TGlz
dFdyaXRlcjE3d3JpdGVQcm9wZXJ0eUxpc3RFdgogX19aTjdXZWJDb3JlMjRDYWNoZWRSZXNvdXJj
ZUhhbmRsZUJhc2UxMXNldFJlc291cmNlRVBOU18xNENhY2hlZFJlc291cmNlRQogX19aTjdXZWJD
b3JlMjRDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXIxMGZpcnN0Q2hpbGRFdgpAQCAtNjY5LDcgKzY3
Miw3IEBAIF9fWk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyQzIKIF9fWk43V2Vi
Q29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2VydmVyRDJFdgogX19aTjdXZWJDb3JlMjRjcmVhdGVG
cmFnbWVudEZyb21NYXJrdXBFUE5TXzhEb2N1bWVudEVSS04zV1RGNlN0cmluZ0VTNV9OU18yN0Zy
YWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbkUKIF9fWk43V2ViQ29yZTI0ZGVjb2RlVVJMRXNjYXBl
U2VxdWVuY2VzRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMjRkZWxldGVDb29raWVzRm9y
SG9zdG5hbWVFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOM1dURjZTdHJpbmdFCitfX1pON1dl
YkNvcmUyNGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNz
aW9uRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMjRmaWxlU3lzdGVtUmVwcmVzZW50YXRp
b25FUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyNG5vdGlmeUhpc3RvcnlJdGVtQ2hhbmdl
ZEUKIF9fWk43V2ViQ29yZTI1SGlzdG9yeVByb3BlcnR5TGlzdFdyaXRlcjExcmVsZWFzZURhdGFF
dgpAQCAtNjk2LDEwICs2OTksOSBAQCBfX1pON1dlYkNvcmUyN0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvCiBfX1pON1dlYkNvcmUyN0RldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jazE0c2V0T3Jp
ZW50YXRpb25FTjNXVEYxMFBhc3NSZWZQdHJJTlNfMjFEZXZpY2VPcmllbnRhdGlvbkRhdGFFRUUK
IF9fWk43V2ViQ29yZTI3RGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrQzFFdgogX19aTjdXZWJD
b3JlMjdzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXNFdgotX19aTjdXZWJDb3JlMjZkZWZhdWx0
Q0ZIVFRQQ29va2llU3RvcmFnZUV2CiBfX1pON1dlYkNvcmUyOGVuY29kZVdpdGhVUkxFc2NhcGVT
ZXF1ZW5jZXNFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyOHJlbW92ZUxhbmd1YWdlQ2hh
bmdlT2JzZXJ2ZXJFUHYKLV9fWk43V2ViQ29yZTI5Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWVFUE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUktOU180S1VSTEVTNF8KK19fWk43V2ViQ29yZTI5
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWVFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lv
bkVSS05TXzRLVVJMRVM1XwogX19aTjdXZWJDb3JlMjlpc0NoYXJhY3RlclNtYXJ0UmVwbGFjZUV4
ZW1wdEVpYgogX19aTjdXZWJDb3JlMzBob3N0TmFtZU5lZWRzRGVjb2RpbmdXaXRoUmFuZ2VFUDhO
U1N0cmluZzhfTlNSYW5nZQogX19aTjdXZWJDb3JlMzBob3N0TmFtZU5lZWRzRW5jb2RpbmdXaXRo
UmFuZ2VFUDhOU1N0cmluZzhfTlNSYW5nZQpAQCAtMTMzMCw2ICsxMzMyLDcgQEAgX19aTks3V2Vi
Q29yZTIwUmVzb3VyY2VSZXNwb25zZUJhc2U2aXNIVAogX19aTks3V2ViQ29yZTIwUmVzb3VyY2VS
ZXNwb25zZUJhc2U4bWltZVR5cGVFdgogX19aTks3V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9s
bGVyMTJmb3J3YXJkQ291bnRFdgogX19aTks3V2ViQ29yZTIxQmFja0ZvcndhcmRDb250cm9sbGVy
OWJhY2tDb3VudEV2CitfX1pOSzdXZWJDb3JlMjFOZXR3b3JrU3RvcmFnZVNlc3Npb24xM2Nvb2tp
ZVN0b3JhZ2VFdgogX19aTks3V2ViQ29yZTIxUmVuZGVyTGF5ZXJDb21wb3NpdG9yMTFzY3JvbGxM
YXllckV2CiBfX1pOSzdXZWJDb3JlMjFSZW5kZXJMYXllckNvbXBvc2l0b3IxNXJvb3RSZW5kZXJM
YXllckV2CiBfX1pOSzdXZWJDb3JlMjFVc2VyQ29udGVudFVSTFBhdHRlcm43bWF0Y2hlc0VSS05T
XzRLVVJMRQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC00MzY3LDYgKzQzNjcsNyBA
QAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0YXRlTm90aWZpZXIuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmgnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmNwcCcsCkBAIC00Mzg2LDcg
KzQzODcsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL25ldHdvcmsvY2YvQXV0aGVudGljYXRp
b25DRi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZO
ZXQuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VD
Rk5ldC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0NyZWRlbnRpYWxTdG9y
YWdlQ0ZOZXQuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0ROU0NGTmV0
LmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29yay9jZi9Eb3dubG9hZEJ1bmRsZS5o
JywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
CShyZXZpc2lvbiAxMzg0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJD
b3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzI2MjEsNiArMzI2MjEsMTAgQEAKIAkJCQkJ
PgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3Jt
XG5ldHdvcmtcTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJ
CQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXE5ldHdvcmtp
bmdDb250ZXh0LmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBAIC0zMjg0NCwxMCArMzI4NDgsNiBA
QAogCQkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KIAkJCQkJPC9GaWxlPgogCQkJCQk8RmlsZQot
CQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXGNmXENvb2tpZVN0b3JhZ2VD
Rk5ldC5oIgotCQkJCQkJPgotCQkJCQk8L0ZpbGU+Ci0JCQkJCTxGaWxlCiAJCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2ZcQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAi
CiAJCQkJCQk+CiAJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KQEAgLTMyOTQwLDYgKzMyOTQwLDEw
IEBACiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xjZlxOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAi
CisJCQkJCQk+CisJCQkJCTwvRmlsZT4KKwkJCQkJPEZpbGUKIAkJCQkJCVJlbGF0aXZlUGF0aD0i
Li5ccGxhdGZvcm1cbmV0d29ya1xjZlxQcm94eVNlcnZlckNGTmV0LmNwcCIKIAkJCQkJCT4KIAkJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDM3LDcgKzIwMzcsNiBAQAogCQk3RUU2ODQ2MTEyRDI2RTM4MDBFNzk0MTUgLyogQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDdFRTY4NDRFMTJEMjZFMzgwMEU3OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTdFRTY4NDYyMTJEMjZFMzgwMEU3OTQxNSAvKiBDb29raWVKYXJDRk5ldC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ0RjEyRDI2RTM4
MDBFNzk0MTUgLyogQ29va2llSmFyQ0ZOZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2MzEyRDI2RTM4
MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDUwMTJEMjZFMzgwMEU3OTQxNSAvKiBDb29r
aWVTdG9yYWdlQ0ZOZXQuY3BwICovOyB9OwotCQk3RUU2ODQ2NDEyRDI2RTM4MDBFNzk0MTUgLyog
Q29va2llU3RvcmFnZUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0VF
Njg0NjUxMkQyNkUzODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NTIxMkQyNkUz
ODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2
NjEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1MzEyRDI2RTM4MDBFNzk0
MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5jcHAgKi87IH07CiAJCTdFRTY4NDY3MTJEMjZFMzgw
MEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ1NDEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURh
dGFTdHJlYW1DRk5ldC5oICovOyB9OwpAQCAtNjA5NSw2ICs2MDk0LDggQEAKIAkJRTEzNEY1QUIx
MkVFMzQzRjAwNEVDNThEIC8qIEludFJlY3RIYXNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTM0RjVBQTEyRUUzNDNGMDA0RUM1OEQgLyogSW50UmVj
dEhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlFMTM5ODY2MzE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTM5ODY2MTE1NDc4NDc0MDAx
RTNGNjUgLyogU3R5bGVSZXNvbHZlci5jcHAgKi87IH07CiAJCUUxMzk4NjY0MTU0Nzg0NzQwMDFF
M0Y2NSAvKiBTdHlsZVJlc29sdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFMTM5ODY2MjE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5o
ICovOyB9OworCQlFMTNFRjM0NDE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNz
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTNF
RjM0MjE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJRTEzRUYzNDkxNjg1MEM0
NzAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxM0VGMzQ3MTY4NTBDNDcwMDM0Qzgz
RiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgKi87IH07CiAJCUUxM0YwMUYxMTI3
MEUxOTAwMERGQkE3MSAvKiBDb29raWVTdG9yYWdlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEzRjAxRjAxMjcwRTE5MDAwREZCQTcxIC8qIENv
b2tpZVN0b3JhZ2VNYWMubW0gKi87IH07CiAJCUUxNDI0QzhBMTY0QjNCNEUwMEYzMkQ0MCAvKiBQ
bGF0Zm9ybUNvb2tpZUphci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTE0MjRDODkxNjRCM0I0RTAwRjMyRDQwIC8qIFBsYXRmb3JtQ29va2llSmFyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTE0MjRD
OTAxNjRCNDYwQjAwRjMyRDQwIC8qIENvb2tpZUphck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNDI0QzhGMTY0QjQ2MEIwMEYzMkQ0MCAvKiBD
b29raWVKYXJNYWMubW0gKi87IH07CkBAIC05MzcwLDcgKzkzNzEsNiBAQAogCQk3RUU2ODQ0RTEy
RDI2RTM4MDBFNzk0MTUgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NEYxMkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZUph
ckNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvb2tpZUph
ckNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTAxMkQyNkUz
ODAwRTc5NDE1IC8qIENvb2tpZVN0b3JhZ2VDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBDb29raWVTdG9yYWdlQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwotCQk3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNG
TmV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tpZVN0b3JhZ2VDRk5l
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1MjEyRDI2RTM4MDBFNzk0
MTUgLyogQ3JlZGVudGlhbFN0b3JhZ2VDRk5ldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBDcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0VFNjg0NTMxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9ybURhdGFT
dHJlYW1DRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDU0MTJE
MjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEZvcm1EYXRhU3RyZWFtQ0ZOZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEzNTc2LDYgKzEzNTc2LDggQEAKIAkJRTEzNEY1QUExMkVFMzQzRjAwNEVD
NThEIC8qIEludFJlY3RIYXNoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
dFJlY3RIYXNoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxMzk4NjYxMTU0Nzg0
NzQwMDFFM0Y2NSAvKiBTdHlsZVJlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN0eWxlUmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMTM5ODY2MjE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZVJlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUUxM0VGMzQyMTY4NEVDRjQwMDM0QzgzRiAvKiBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxM0VGMzQ3MTY4NTBD
NDcwMDM0QzgzRiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxM0YwMUVBMTI3MEUxMEQwMERGQkE3MSAv
KiBDb29raWVTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvb2tp
ZVN0b3JhZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEzRjAxRjAxMjcwRTE5
MDAwREZCQTcxIC8qIENvb2tpZVN0b3JhZ2VNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBDb29raWVTdG9yYWdlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFMTQyNEM4OTE2NEIzQjRFMDBGMzJENDAgLyogUGxhdGZvcm1Db29raWVKYXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGxhdGZvcm1Db29raWVKYXIuaDsg
cGF0aCA9IG5ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE1ODMzLDYgKzE1ODM1LDcgQEAKIAkJCQkzN0REQ0Q5MjEzODQ0RkQ1MDAwOEI3
OTMgLyogTUlNRUhlYWRlci5jcHAgKi8sCiAJCQkJMzdERENEOTMxMzg0NEZENTAwMDhCNzkzIC8q
IE1JTUVIZWFkZXIuaCAqLywKIAkJCQk2MjhEMjE0QjEyMTMxRUQxMDA1NURDRkMgLyogTmV0d29y
a2luZ0NvbnRleHQuaCAqLywKKwkJCQlFMTNFRjM0MjE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLmggKi8sCiAJCQkJMUE3RkE2MUEwRERBM0JCRTAwMjhGOEE1IC8qIE5l
dHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCAqLywKIAkJCQkxQTdGQTYxODBEREEzQjNBMDAyOEY4QTUg
LyogTmV0d29ya1N0YXRlTm90aWZpZXIuaCAqLywKIAkJCQk0NDc5NTgwMjE2NDNCNDdCMDAxRTBB
N0YgLyogUGFyc2VkQ29udGVudFR5cGUuY3BwICovLApAQCAtMjA0MDMsMTMgKzIwNDA2LDEzIEBA
CiAJCQkJN0VFNjg0NEUxMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LmggKi8sCiAJCQkJN0VFNjg0NEYxMkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZUphckNGTmV0LmNw
cCAqLywKIAkJCQk3RUU2ODQ1MDEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0
LmNwcCAqLywKLQkJCQk3RUU2ODQ1MTEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNG
TmV0LmggKi8sCiAJCQkJN0VFNjg0NTIxMkQyNkUzODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9y
YWdlQ0ZOZXQuY3BwICovLAogCQkJCUIyRjM0RkU4MEU4MkY4MjcwMEY2MjdDRCAvKiBETlNDRk5l
dC5jcHAgKi8sCiAJCQkJN0VFNjg0NTMxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFt
Q0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU0MTJEMjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0
cmVhbUNGTmV0LmggKi8sCiAJCQkJN0VFNjg0NTUxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1
bkxvb3BDRi5jcHAgKi8sCiAJCQkJN0VFNjg0NTYxMkQyNkUzODAwRTc5NDE1IC8qIExvYWRlclJ1
bkxvb3BDRi5oICovLAorCQkJCUUxM0VGMzQ3MTY4NTBDNDcwMDM0QzgzRiAvKiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb25DRk5ldC5jcHAgKi8sCiAJCQkJMUFGOEUxQzExMjU2NzNFMDAwMjMwRkY3IC8q
IFByb3h5U2VydmVyQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDU3MTJEMjZFMzgwMEU3OTQxNSAv
KiBSZXNvdXJjZUVycm9yLmggKi8sCiAJCQkJN0VFNjg0NTgxMkQyNkUzODAwRTc5NDE1IC8qIFJl
c291cmNlRXJyb3JDRi5jcHAgKi8sCkBAIC0yMjg5NCw3ICsyMjg5Nyw2IEBACiAJCQkJRDhCNjE1
MkYxMDMyNDk1MTAwQzg1NTRBIC8qIENvb2tpZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzM5QjVC
NjMxMzFEQUEzMjAwRjQ4RDAyIC8qIENvb2tpZXNTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzNEMDIxMkQxMzFEQjM3QjAwNDA5MUE4IC8qIENvb2tpZVN0b3JhZ2UuaCBpbiBIZWFkZXJz
ICovLAotCQkJCTdFRTY4NDY0MTJEMjZFMzgwMEU3OTQxNSAvKiBDb29raWVTdG9yYWdlQ0ZOZXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUZFNkZENDg4MEY2NzZFNTcwMDA5Mjg3MyAvKiBDb29yZGlu
YXRlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRTZEMDQwQTE5ODlDQTAwN0ZCOEM1IC8qIENv
dW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCOTc5MEU4MjA2OTIwMEIyNTk2NSAvKiBD
b3VudGVyQ29udGVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNTk4Miw2ICsyNTk4NCw3IEBACiAJ
CQkJRjM3QTU2MjMxNjc5Q0Y3QjAwQzU3MDQ2IC8qIEhlYXBHcmFwaFNlcmlhbGl6ZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjg4OTBBMTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCODg5MEYxNjdEMzAxNjAwMTBDREE1
IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTEzRUYz
NDQxNjg0RUNGNDAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0yOTEwMCw2ICsyOTEwMyw3IEBACiAJCQkJMEZCODg5MEIxNjdEMkZBMTAwMTBDREE1
IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCODg5
MEUxNjdEMzAxNjAwMTBDREE1IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkyMDlCNDU2QjE2Nzk2QTdFMDBFNTRFNEUgLyogSlNDcnlwdG9DdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTEzRUYzNDkxNjg1MEM0NzAwMzRDODNGIC8qIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Nvb2tpZUphci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nvb2tpZUphci5jcHAJKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Db29raWVKYXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiTmV0
d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybUNvb2tpZUphci5oIgogCiAjaWYg
VVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCkBAIC00Myw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4dChjb25z
dCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CisgICAgLy8gRklYTUU6IFJldHVybmluZyAwIG1lYW5z
IGZhbGxpbmcgYmFjayB0byBkZWZhdWx0IGNvbnRleHQuIFRoYXQncyBub3QgYSBjaG9pY2UgdGhh
dCBpcyBhcHByb3ByaWF0ZSB0byBkbyBhdCBydW50aW1lCiAgICAgaWYgKCFkb2N1bWVudCkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CkBA
IC01NCw1NyArNTYsNjggQEAgc3RhdGljIE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29u
dAogICAgIHJldHVybiBsb2FkZXItPm5ldHdvcmtpbmdDb250ZXh0KCk7CiB9CiAKKyNpZiBQTEFU
Rk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCitpbmxpbmUgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzdG9yYWdlU2Vzc2lvbihjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQgPSBuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCk7CisgICAg
cmV0dXJuIGNvbnRleHQgPyBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpIDogTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKK30KKyNkZWZpbmUgU0VTU0lPTihk
b2N1bWVudCkgc3RvcmFnZVNlc3Npb24oZG9jdW1lbnQpCisjZWxzZQorI2RlZmluZSBTRVNTSU9O
KGRvY3VtZW50KSBOZXR3b3JrU3RvcmFnZVNlc3Npb24obmV0d29ya2luZ0NvbnRleHQoZG9jdW1l
bnQpKQorI2VuZGlmCisKIFN0cmluZyBjb29raWVzKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgS1VSTCYgdXJsKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAgIHJl
dHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmNvb2tpZXNGb3JE
T00obmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgdXJsKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNT
dHJhdGVneSgpLT5jb29raWVzRm9yRE9NKFNFU1NJT04oZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsKICNlbHNlCi0gICAgcmV0dXJuIGNvb2tpZXNGb3JE
T00obmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNv
b2tpZXMoKSwgdXJsKTsKKyAgICByZXR1cm4gY29va2llc0ZvckRPTShTRVNTSU9OKGRvY3VtZW50
KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVybCk7CiAjZW5kaWYKIH0KIAog
dm9pZCBzZXRDb29raWVzKERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGNvb2tpZVN0cmluZykKIHsKICNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykK
LSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPnNldENvb2tpZXNG
cm9tRE9NKG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlG
b3JDb29raWVzKCksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMo
KS0+Y29va2llc1N0cmF0ZWd5KCktPnNldENvb2tpZXNGcm9tRE9NKFNFU1NJT04oZG9jdW1lbnQp
LCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBjb29raWVTdHJpbmcpOwog
I2Vsc2UKLSAgICBzZXRDb29raWVzRnJvbURPTShuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCks
IGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZVN0cmluZyk7Cisg
ICAgc2V0Q29va2llc0Zyb21ET00oU0VTU0lPTihkb2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBh
cnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZVN0cmluZyk7CiAjZW5kaWYKIH0KIAogYm9vbCBj
b29raWVzRW5hYmxlZChjb25zdCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAjaWYgVVNFKFBMQVRG
T1JNX1NUUkFURUdJRVMpCi0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVz
U3RyYXRlZ3koKS0+Y29va2llc0VuYWJsZWQobmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBk
b2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgZG9jdW1lbnQtPmNvb2tpZVVSTCgpKTsK
KyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5jb29r
aWVzRW5hYmxlZChTRVNTSU9OKGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29r
aWVzKCksIGRvY3VtZW50LT5jb29raWVVUkwoKSk7CiAjZWxzZQotICAgIHJldHVybiBjb29raWVz
RW5hYmxlZChuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCBkb2N1bWVudC0+Y29va2llVVJMKCkpOworICAgIHJldHVybiBjb29raWVz
RW5hYmxlZChTRVNTSU9OKGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVz
KCksIGRvY3VtZW50LT5jb29raWVVUkwoKSk7CiAjZW5kaWYKIH0KIAogU3RyaW5nIGNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgS1VS
TCYgdXJsKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAgIHJldHVybiBwbGF0
Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFy
dHlGb3JDb29raWVzKCksIHVybCk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5j
b29raWVzU3RyYXRlZ3koKS0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU0VTU0lPTihk
b2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpOwogI2Vsc2UK
LSAgICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUobmV0d29ya2luZ0NvbnRl
eHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsKKyAg
ICByZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoU0VTU0lPTihkb2N1bWVudCks
IGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpOwogI2VuZGlmCiB9CiAKIGJv
b2wgZ2V0UmF3Q29va2llcyhjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVy
bCwgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMpCiB7CiAjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJ
RVMpCi0gICAgcmV0dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+
Z2V0UmF3Q29va2llcyhuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCksIGRvY3VtZW50LT5maXJz
dFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOworICAgIHJldHVybiBwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmdldFJhd0Nvb2tpZXMoU0VTU0lPTihkb2N1
bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOwog
I2Vsc2UKLSAgICByZXR1cm4gZ2V0UmF3Q29va2llcyhuZXR3b3JraW5nQ29udGV4dChkb2N1bWVu
dCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tpZXMpOworICAg
IHJldHVybiBnZXRSYXdDb29raWVzKFNFU1NJT04oZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBjb29raWVzKTsKICNlbmRpZgogfQogCiB2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb29raWVOYW1lKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAg
IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+ZGVsZXRlQ29va2llKG5l
dHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmRlbGV0ZUNvb2tpZShTRVNTSU9OKGRv
Y3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKICNlbHNlCi0gICAgZGVsZXRlQ29va2llKG5ldHdv
cmtpbmdDb250ZXh0KGRvY3VtZW50KSwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBkZWxldGVDb29r
aWUoU0VTU0lPTihkb2N1bWVudCksIHVybCwgY29va2llTmFtZSk7CiAjZW5kaWYKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxMzg0
MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlSG9z
dC5oIgogI2luY2x1ZGUgIkFzeW5jRmlsZVN0cmVhbS5oIgorI2luY2x1ZGUgIkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAkocmV2aXNpb24gMTM4NDExKQorKysgU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJDYWNoZVBvbGljeS5oIgogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJQdXJnZVByaW9yaXR5LmgiCisjaW5jbHVkZSAi
UmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFByaW9yaXR5LmgiCiAjaW5j
bHVkZSAiUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0
LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db29raWVzU3RyYXRlZ3kuaAkocmV2
aXNpb24gMTM4NDExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDMwICszMywyMiBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotI2lmIFBMQVRGT1JNKE1B
QykgfHwgVVNFKENGTkVUV09SSykKLXR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0
b3JhZ2UqICBDRkhUVFBDb29raWVTdG9yYWdlUmVmOwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogY2xhc3MgS1VSTDsKLWNsYXNzIE5ldHdvcmtpbmdDb250ZXh0OworY2xhc3MgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uOwogc3RydWN0IENvb2tpZTsKIAogY2xhc3MgQ29va2llc1N0cmF0
ZWd5IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQoKSA9
IDA7CiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBS
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gZGVmYXVsdENvb2tpZVN0b3JhZ2UoKSA9
IDA7Ci0jZW5kaWYKLQotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2lu
Z0NvbnRleHQqLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmlu
ZykgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4
dCosIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmKSA9IDA7Ci0gICAgdmlydHVh
bCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOwotICAgIHZpcnR1YWwg
Ym9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYsIFZlY3RvcjxDb29raWU+JikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3Ry
aW5nJiBjb29raWVOYW1lKSA9IDA7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgY29v
a2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYpID0gMDsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJikgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXRS
YXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmLCBWZWN0b3I8Q29va2llPiYpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgfkNvb2tpZXNTdHJhdGVneSgpIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAkocmV2aXNpb24gMTM4
NDExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5k
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiRmlsZVN5
c3RlbS5oIgogI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1
ZXN0LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBOZXR3b3JrU3RvcmFnZVNlc3Np
b25faAorI2RlZmluZSBOZXR3b3JrU3RvcmFnZVNlc3Npb25faAorCisjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCisjaWYgUExBVEZP
Uk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQordHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTFN0
b3JhZ2VTZXNzaW9uKiBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmOwordHlwZWRlZiBzdHJ1Y3QgT3Bh
cXVlQ0ZIVFRQQ29va2llU3RvcmFnZSogIENGSFRUUENvb2tpZVN0b3JhZ2VSZWY7CisjZW5kaWYK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBOZXR3b3JraW5nQ29udGV4dDsKKworY2xh
c3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShOZXR3
b3JrU3RvcmFnZVNlc3Npb24pOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsK
KyAgICBzdGF0aWMgUGFzc093blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+IGNyZWF0ZURlZmF1
bHRTZXNzaW9uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckJhc2UpOworICAgIHN0YXRpYyBQYXNz
T3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gY3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bihjb25zdCBTdHJpbmcmIGlkZW50aWZpZXJCYXNlKTsKKworICAgIHN0YXRpYyB2b2lkIHN3aXRj
aFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKKworI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVU
V09SSykKKyAgICAvLyBNYXkgYmUgbnVsbCwgaW4gd2hpY2ggY2FzZSBhIEZvdW5kYXRpb24gZGVm
YXVsdCBzaG91bGQgYmUgdXNlZC4KKyAgICBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHBsYXRmb3Jt
U2Vzc2lvbigpIHsgcmV0dXJuIG1fcGxhdGZvcm1TZXNzaW9uLmdldCgpOyB9CisgICAgUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UoKSBjb25zdDsKKyAgICBi
b29sIGlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1faXNQcml2YXRl
OyB9CisjZWxzZQorICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihOZXR3b3JraW5nQ29udGV4dCop
OworICAgIH5OZXR3b3JrU3RvcmFnZVNlc3Npb24oKTsKKyAgICBOZXR3b3JraW5nQ29udGV4dCog
Y29udGV4dCgpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisjaWYgUExBVEZPUk0oTUFDKSB8
fCBVU0UoQ0ZORVRXT1JLKQorICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbihDRlVSTFN0b3JhZ2VT
ZXNzaW9uUmVmIHBsYXRmb3JtU2Vzc2lvbik7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKCk7
CisgICAgUmV0YWluUHRyPENGVVJMU3RvcmFnZVNlc3Npb25SZWY+IG1fcGxhdGZvcm1TZXNzaW9u
OworICAgIGJvb2wgbV9pc1ByaXZhdGU7CisjZWxzZQorICAgIFJlZlB0cjxOZXR3b3JraW5nQ29u
dGV4dD4gbV9jb250ZXh0OworI2VuZGlmCit9OworCisjaWYgUExBVEZPUk0oV0lOKQorLy8gTmVl
ZGVkIGZvciBXZWJLaXQxIEFQSSBvbmx5Lgordm9pZCBvdmVycmlkZUNvb2tpZVN0b3JhZ2UoQ0ZI
VFRQQ29va2llU3RvcmFnZVJlZik7CitDRkhUVFBDb29raWVTdG9yYWdlUmVmIG92ZXJyaWRlbkNv
b2tpZVN0b3JhZ2UoKTsKKyNlbmRpZgorCit9CisKKyNlbmRpZiAvLyBOZXR3b3JrU3RvcmFnZVNl
c3Npb25faApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25TdHViLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvblN0dWIuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb25TdHVi
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKKworI2luY2x1
ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitOZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbihOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCkKKyAgICA6IG1fY29udGV4dChj
b250ZXh0KQoreworfQorCitOZXR3b3JrU3RvcmFnZVNlc3Npb246On5OZXR3b3JrU3RvcmFnZVNl
c3Npb24oKQoreworfQorCitOZXR3b3JraW5nQ29udGV4dCogTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Ojpjb250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOworfQorCitQ
YXNzT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpj
cmVhdGVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKGNvbnN0IFN0cmluZyYpCit7CisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK05ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKQor
eworICAgIERFRklORV9TVEFUSUNfTE9DQUwoTmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBzZXNzaW9u
LCAoMCkpOworICAgIHJldHVybiBzZXNzaW9uOworfQorCit2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpCit7Cit9CisKK30KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgJ
KHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0
d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsOSBAQAogI2lmbmRl
ZiBOZXR3b3JraW5nQ29udGV4dF9oCiAjZGVmaW5lIE5ldHdvcmtpbmdDb250ZXh0X2gKIAorI2lu
Y2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQogI2lu
Y2x1ZGUgIlNjaGVkdWxlUGFpci5oIgpAQCAtNDAsMTAgKzQyLDYgQEAgY2xhc3MgV2ViQ29va2ll
SmFyOwogT0JKQ19DTEFTUyBOU09wZXJhdGlvblF1ZXVlOwogI2VuZGlmCiAKLSNpZiBQTEFURk9S
TShNQUMpIHx8IFVTRShDRk5FVFdPUkspCi10eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGVVJMU3Rv
cmFnZVNlc3Npb24qIENGVVJMU3RvcmFnZVNlc3Npb25SZWY7Ci0jZW5kaWYKLQogI2lmIFBMQVRG
T1JNKFFUKQogUVRfQkVHSU5fTkFNRVNQQUNFCiBjbGFzcyBRT2JqZWN0OwpAQCAtNjgsNiArNjYs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAKICNpZiBQTEFURk9STShDSFJPTUlVTSkKKyAgICAvLyBGSVhNRTogV3JhcCBXZWJD
b29raWVKYXIgaW50byBhIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiB0byBtYWtlIHRoZSBjb2RlIGNy
b3NzLXBsYXRmb3JtLgogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUph
cigpIGNvbnN0ID0gMDsKICNlbmRpZgogCkBAIC04MCwxMSArNzksMTIgQEAgcHVibGljOgogI2Vu
ZGlmCiAKICNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBi
b29sIGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIENGVVJM
U3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0
dWFsIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCA9IDA7CiAj
ZW5kaWYKIAogI2lmIFBMQVRGT1JNKFFUKQorICAgIC8vIEZJWE1FOiBXcmFwIFFOZXR3b3JrQWNj
ZXNzTWFuYWdlciBpbnRvIGEgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIHRvIG1ha2UgdGhlIGNvZGUg
Y3Jvc3MtcGxhdGZvcm0uCiAgICAgdmlydHVhbCBRT2JqZWN0KiBvcmlnaW5hdGluZ09iamVjdCgp
IGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFFOZXR3b3JrQWNjZXNzTWFuYWdlciogbmV0d29ya0Fj
Y2Vzc01hbmFnZXIoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBib29sIG1pbWVTbmlmZmluZ0Vu
YWJsZWQoKSBjb25zdCA9IDA7CkBAIC05OCw2ICs5OCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAj
aWYgVVNFKFNPVVApCisgICAgLy8gRklYTUU6IFdyYXAgU291cFNlc3Npb24gaW50byBhIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiB0byBtYWtlIHRoZSBjb2RlIGNyb3NzLXBsYXRmb3JtLgogICAgIHZp
cnR1YWwgU291cFNlc3Npb24qIHNvdXBTZXNzaW9uKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
dWludDY0X3QgaW5pdGlhdGluZ1BhZ2VJRCgpIGNvbnN0ID0gMDsKICNlbmRpZgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QbGF0Zm9ybUNvb2tpZUphci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIu
aAkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Q
bGF0Zm9ybUNvb2tpZUphci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxOSArMzQsMTkgQEAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgS1VSTDsKLWNsYXNzIE5ldHdvcmtpbmdDb250ZXh0
OworY2xhc3MgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogc3RydWN0IENvb2tpZTsKIAogLy8gSWYg
bmV0d29ya2luZyBjb250ZXh0IGlzIG51bGwsIGRlZmF1bHQgY29va2llIHN0b3JhZ2UgaXMgdXNl
ZC4KLVN0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpOwotdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3Jr
aW5nQ29udGV4dCosIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBjb25zdCBT
dHJpbmcmKTsKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJik7Ci1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJik7Ci1ib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiwgVmVjdG9yPENvb2tpZT4mKTsKLXZvaWQg
ZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmlu
ZyYpOwotdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCosIEhh
c2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKTsKLXZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1l
KE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSk7Ci12b2lkIGRlbGV0
ZUFsbENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqKTsKK1N0cmluZyBjb29raWVzRm9yRE9NKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmKTsKK3ZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYp
OworYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJik7CitTdHJpbmcgY29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpOworYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBW
ZWN0b3I8Q29va2llPiYpOwordm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOwordm9pZCBnZXRIb3N0bmFtZXNX
aXRoQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBIYXNoU2V0PFN0cmluZz4m
IGhvc3RuYW1lcyk7Cit2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKTsKK3ZvaWQgZGVsZXRlQWxs
Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mKTsKIAogfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcAko
cmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1
ZGUgIkJsb2JSZWdpc3RyeS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlICJOZXR3
b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5j
bHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxhbGdvcml0aG0+CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCShyZXZpc2lvbiAxMzg0
MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI2LDEzICsyNiwxMyBAQAogI2lmbmRlZiBSZXNvdXJjZUhhbmRs
ZV9oCiAjZGVmaW5lIFJlc291cmNlSGFuZGxlX2gKIAotI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DbGllbnQuaCIKICNpbmNsdWRl
ICJIVFRQSGVhZGVyTWFwLmgiCi0jaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogI2lmIFVT
RShTT1VQKQordHlwZWRlZiBzdHJ1Y3QgX0dUbHNDZXJ0aWZpY2F0ZSBHVGxzQ2VydGlmaWNhdGU7
CiB0eXBlZGVmIHN0cnVjdCBfU291cFNlc3Npb24gU291cFNlc3Npb247CiB0eXBlZGVmIHN0cnVj
dCBfU291cFJlcXVlc3QgU291cFJlcXVlc3Q7CiAjZW5kaWYKQEAgLTc4LDYgKzc4LDcgQEAgY2xh
c3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7CiBjbGFzcyBDcmVkZW50aWFsOwogY2xhc3MgRnJh
bWU7CiBjbGFzcyBLVVJMOworY2xhc3MgTmV0d29ya2luZ0NvbnRleHQ7CiBjbGFzcyBQcm90ZWN0
aW9uU3BhY2U7CiBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgUmVzb3VyY2VIYW5kbGVDbGll
bnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxl
SW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaAkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgUmVzb3VyY2VIYW5kbGVJbnRlcm5hbF9o
CiAjZGVmaW5lIFJlc291cmNlSGFuZGxlSW50ZXJuYWxfaAogCisjaW5jbHVkZSAiTmV0d29ya2lu
Z0NvbnRleHQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNGTmV0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUph
ckNGTmV0LmNwcAkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDkgKzI5
LDggQEAKICNpZiBVU0UoQ0ZORVRXT1JLKQogCiAjaW5jbHVkZSAiQ29va2llLmgiCi0jaW5jbHVk
ZSAiQ29va2llU3RvcmFnZUNGTmV0LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgotI2luY2x1ZGUgIk5l
dHdvcmtpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJTb2Z0TGlua2luZy5oIgogI2lu
Y2x1ZGUgPENGTmV0d29yay9DRkhUVFBDb29raWVzUHJpdi5oPgpAQCAtOTUsMTUgKzk0LDEyIEBA
IHN0YXRpYyBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gZmlsdGVyQ29va2kKICAgICByZXR1cm4gZmls
dGVyZWRDb29raWVzOwogfQogCi12b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgdmFsdWUpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewogICAgIC8vIDxyZGFyOi8vcHJvYmxlbS81
NjMyODgzPiBDRkhUVFBDb29raWVTdG9yYWdlIHN0b3JlcyBhbiBlbXB0eSBjb29raWUsIHdoaWNo
IHdvdWxkIGJlIHNlbnQgYXMgIkNvb2tpZTogPSIuCiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+
IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29u
dGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVT
dG9yYWdlKTsKLQogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsQ0YoQWRvcHRDRiwgdXJsLmNy
ZWF0ZUNGVVJMKCkpOwogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gZmlyc3RQYXJ0eUZvckNvb2tp
ZXNDRihBZG9wdENGLCBmaXJzdFBhcnR5LmNyZWF0ZUNGVVJMKCkpOwogCkBAIC0xMTksNTQgKzEx
NSw0MyBAQCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0CiAgICAgUmV0
YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVDcmVhdGVX
aXRoUmVzcG9uc2VIZWFkZXJGaWVsZHMoa0NGQWxsb2NhdG9yRGVmYXVsdCwKICAgICAgICAgaGVh
ZGVyRmllbGRzQ0YuZ2V0KCksIHVybENGLmdldCgpKSk7CiAKLSAgICBDRkhUVFBDb29raWVTdG9y
YWdlU2V0Q29va2llcyhjb29raWVTdG9yYWdlLmdldCgpLCBmaWx0ZXJDb29raWVzKGNvb2tpZXND
Ri5nZXQoKSkuZ2V0KCksIHVybENGLmdldCgpLCBmaXJzdFBhcnR5Rm9yQ29va2llc0NGLmdldCgp
KTsKKyAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llcyhzZXNzaW9uLmNvb2tpZVN0b3Jh
Z2UoKS5nZXQoKSwgZmlsdGVyQ29va2llcyhjb29raWVzQ0YuZ2V0KCkpLmdldCgpLCB1cmxDRi5n
ZXQoKSwgZmlyc3RQYXJ0eUZvckNvb2tpZXNDRi5nZXQoKSk7CiB9CiAKLVN0cmluZyBjb29raWVz
Rm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiwgY29uc3QgS1VS
TCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIFJldGFpblB0
cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJl
bnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3Jh
Z2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7Ci0KICAgICBSZXRhaW5QdHI8Q0ZVUkxS
ZWY+IHVybENGKEFkb3B0Q0YsIHVybC5jcmVhdGVDRlVSTCgpKTsKIAogICAgIGJvb2wgc2VjdXJl
ID0gdXJsLnByb3RvY29sSXMoImh0dHBzIik7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNv
b2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkwoY29v
a2llU3RvcmFnZS5nZXQoKSwgdXJsQ0YuZ2V0KCksIHNlY3VyZSkpOworICAgIFJldGFpblB0cjxD
RkFycmF5UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlDb29r
aWVzRm9yVVJMKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCB1cmxDRi5nZXQoKSwgc2Vj
dXJlKSk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaGVhZGVyQ0YoQWRvcHRDRiwg
Q0ZIVFRQQ29va2llQ29weVJlcXVlc3RIZWFkZXJGaWVsZHMoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
ZmlsdGVyQ29va2llcyhjb29raWVzQ0YuZ2V0KCkpLmdldCgpKSk7CiAgICAgcmV0dXJuIChDRlN0
cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShoZWFkZXJDRi5nZXQoKSwgc19jb29raWVDRik7
CiB9CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29u
dGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVy
bCkKK1N0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBL
VVJMJiB1cmwpCiB7Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tp
ZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkg
OiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVTdG9yYWdl
KTsKLQogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsQ0YoQWRvcHRDRiwgdXJsLmNyZWF0ZUNG
VVJMKCkpOwogCiAgICAgYm9vbCBzZWN1cmUgPSB1cmwucHJvdG9jb2xJcygiaHR0cHMiKTsKLSAg
ICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29va2llc0NGKEFkb3B0Q0YsIENGSFRUUENvb2tpZVN0
b3JhZ2VDb3B5Q29va2llc0ZvclVSTChjb29raWVTdG9yYWdlLmdldCgpLCB1cmxDRi5nZXQoKSwg
c2VjdXJlKSk7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBD
RkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdl
KCkuZ2V0KCksIHVybENGLmdldCgpLCBzZWN1cmUpKTsKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9u
YXJ5UmVmPiBoZWFkZXJDRihBZG9wdENGLCBDRkhUVFBDb29raWVDb3B5UmVxdWVzdEhlYWRlckZp
ZWxkcyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjb29raWVzQ0YuZ2V0KCkpKTsKICAgICByZXR1cm4g
KENGU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGhlYWRlckNGLmdldCgpLCBzX2Nvb2tp
ZUNGKTsKIH0KIAotYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4dCogY29udGV4
dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCitib29s
IGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8pCiB7Ci0gICAgUmV0
YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8g
Y3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2ll
U3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsKLQotICAgIENGSFRUUENvb2tp
ZVN0b3JhZ2VBY2NlcHRQb2xpY3kgcG9saWN5ID0gQ0ZIVFRQQ29va2llU3RvcmFnZUdldENvb2tp
ZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpKTsKKyAgICBDRkhUVFBDb29raWVTdG9y
YWdlQWNjZXB0UG9saWN5IHBvbGljeSA9IENGSFRUUENvb2tpZVN0b3JhZ2VHZXRDb29raWVBY2Nl
cHRQb2xpY3koc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCkpOwogICAgIHJldHVybiBwb2xp
Y3kgPT0gQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50
RG9tYWluIHx8IHBvbGljeSA9PSBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5QWx3YXlz
OwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+
JiByYXdDb29raWVzKQorYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVy
bCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmF3Q29va2llcy5jbGVhcigp
OwotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0g
Y29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENG
SFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7CiAKICAgICBS
ZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybENGKEFkb3B0Q0YsIHVybC5jcmVhdGVDRlVSTCgpKTsKIAog
ICAgIGJvb2wgc2VuZFNlY3VyZUNvb2tpZXMgPSB1cmwucHJvdG9jb2xJcygiaHR0cHMiKTsKLSAg
ICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29va2llc0NGKEFkb3B0Q0YsIENGSFRUUENvb2tpZVN0
b3JhZ2VDb3B5Q29va2llc0ZvclVSTChjb29raWVTdG9yYWdlLmdldCgpLCB1cmxDRi5nZXQoKSwg
c2VuZFNlY3VyZUNvb2tpZXMpKTsKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29va2llc0NG
KEFkb3B0Q0YsIENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2llc0ZvclVSTChzZXNzaW9uLmNv
b2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsQ0YuZ2V0KCksIHNlbmRTZWN1cmVDb29raWVzKSk7CiAK
ICAgICBDRkluZGV4IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KGNvb2tpZXNDRi5nZXQoKSk7CiAg
ICAgcmF3Q29va2llcy5yZXNlcnZlQ2FwYWNpdHkoY291bnQpOwpAQCAtMTkwLDEwICsxNzUsOSBA
QCBib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIG5hbWUpCiB7Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+
IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29u
dGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVT
dG9yYWdlKTsKKyAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3Rv
cmFnZSA9IHNlc3Npb24uY29va2llU3RvcmFnZSgpOwogCiAgICAgUmV0YWluUHRyPENGVVJMUmVm
PiB1cmxDRihBZG9wdENGLCB1cmwuY3JlYXRlQ0ZVUkwoKSk7CiAKQEAgLTIxMCwxMiArMTk0LDkg
QEAgdm9pZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbgogICAgIH0KIH0KIAot
dm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
SGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCit2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVz
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgSGFzaFNldDxTdHJpbmc+JiBo
b3N0bmFtZXMpCiB7Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tp
ZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkg
OiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVTdG9yYWdl
KTsKLQotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQ
Q29va2llU3RvcmFnZUNvcHlDb29raWVzKGNvb2tpZVN0b3JhZ2UuZ2V0KCkpKTsKKyAgICBSZXRh
aW5QdHI8Q0ZBcnJheVJlZj4gY29va2llc0NGKEFkb3B0Q0YsIENGSFRUUENvb2tpZVN0b3JhZ2VD
b3B5Q29va2llcyhzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSkpOwogICAgIGlmICghY29v
a2llc0NGKQogICAgICAgICByZXR1cm47CiAKQEAgLTIyNywxMCArMjA4LDkgQEAgdm9pZCBnZXRI
b3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQwogICAgIH0KIH0KIAotdm9pZCBkZWxldGVD
b29raWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmlu
ZyYgaG9zdG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7Ci0gICAg
UmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0
ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29v
a2llU3RvcmFnZSgpOwotICAgIEFTU0VSVChjb29raWVTdG9yYWdlKTsKKyAgICBSZXRhaW5QdHI8
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IHNlc3Npb24uY29va2llU3Rv
cmFnZSgpOwogCiAgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBD
RkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXMoY29va2llU3RvcmFnZS5nZXQoKSkpOwogICAg
IGlmICghY29va2llc0NGKQpAQCAtMjQ1LDEyICsyMjUsOSBAQCB2b2lkIGRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZShOZXR3b3JraW5nCiAgICAgfQogfQogCi12b2lkIGRlbGV0ZUFsbENvb2tpZXMo
TmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCit2b2lkIGRlbGV0ZUFsbENvb2tpZXMoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQogewotICAgIFJldGFpblB0cjxDRkhUVFBD
b29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBD
b29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAg
ICBBU1NFUlQoY29va2llU3RvcmFnZSk7Ci0KLSAgICBDRkhUVFBDb29raWVTdG9yYWdlRGVsZXRl
QWxsQ29va2llcyhjb29raWVTdG9yYWdlLmdldCgpKTsKKyAgICBDRkhUVFBDb29raWVTdG9yYWdl
RGVsZXRlQWxsQ29va2llcyhzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAJKHJldmlzaW9uIDEz
ODQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFn
ZUNGTmV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsOSArMjYsNyBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2UuaCIKIAotI2luY2x1ZGUgIkNvb2tpZVN0
b3JhZ2VDRk5ldC5oIgotCi0jaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJO
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogCiAj
aWYgUExBVEZPUk0oTUFDKQpAQCAtNDgsNTYgKzQ2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAjaWYgUExBVEZPUk0oV0lOKQogCi1zdGF0aWMgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWY+JiBjb29raWVTdG9yYWdlT3ZlcnJpZGUoKQotewotICAgIERFRklORV9TVEFUSUNfTE9D
QUwoUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+LCBjb29raWVTdG9yYWdlLCAoKSk7
Ci0gICAgcmV0dXJuIGNvb2tpZVN0b3JhZ2U7Ci19Ci0KLSNlbmRpZgotCi1SZXRhaW5QdHI8Q0ZI
VFRQQ29va2llU3RvcmFnZVJlZj4gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQpCi17Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIGlmIChSZXRhaW5Q
dHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4mIG92ZXJyaWRlID0gY29va2llU3RvcmFnZU92ZXJy
aWRlKCkpCi0gICAgICAgIHJldHVybiBvdmVycmlkZTsKLSNlbmRpZgotCi0gICAgaWYgKENGVVJM
U3RvcmFnZVNlc3Npb25SZWYgc2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkpCi0g
ICAgICAgIHJldHVybiBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4oQWRvcHRDRiwg
d2tDb3B5SFRUUENvb2tpZVN0b3JhZ2Uoc2Vzc2lvbikpOwotCi0jaWYgVVNFKENGTkVUV09SSykK
LSAgICByZXR1cm4gd2tHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UoKTsKLSNlbHNlCi0gICAg
Ly8gV2hlbiB1c2luZyBOU1VSTENvbm5lY3Rpb24sIHdlIGFsc28gdXNlIGl0cyBzaGFyZWQgY29v
a2llIHN0b3JhZ2UuCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCkKLXsKLSNpZiBQ
TEFURk9STShXSU4pCi0gICAgaWYgKFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiYg
b3ZlcnJpZGUgPSBjb29raWVTdG9yYWdlT3ZlcnJpZGUoKSkKLSAgICAgICAgcmV0dXJuIG92ZXJy
aWRlOwotI2VuZGlmCi0KLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNT
dHJhdGVneSgpLT5kZWZhdWx0Q29va2llU3RvcmFnZSgpOwotfQotCi0jaWYgUExBVEZPUk0oV0lO
KQotCi12b2lkIG92ZXJyaWRlQ29va2llU3RvcmFnZShDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNv
b2tpZVN0b3JhZ2UpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAvLyBGSVhN
RTogV2h5IGRvbid0IHdlIHJldGFpbiBpdD8gVGhlIG9ubHkgY2FsbGVyIGlzIGFuIEFQSSBtZXRo
b2QgdGhhdCB0YWtlcyBjb29raWUgc3RvcmFnZSBhcyBhIHJhdyBhcmd1bWVudC4KLSAgICBjb29r
aWVTdG9yYWdlT3ZlcnJpZGUoKS5hZG9wdENGKGNvb2tpZVN0b3JhZ2UpOwotfQotCi1DRkhUVFBD
b29raWVTdG9yYWdlUmVmIG92ZXJyaWRlbkNvb2tpZVN0b3JhZ2UoKQotewotICAgIHJldHVybiBj
b29raWVTdG9yYWdlT3ZlcnJpZGUoKS5nZXQoKTsKLX0KLQogc3RhdGljIHZvaWQgbm90aWZ5Q29v
a2llc0NoYW5nZWRPbk1haW5UaHJlYWQodm9pZCopCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKQEAgLTEzMCw3ICs3OCw3IEBAIHZvaWQgc3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2Vz
KCkKICAgICBDRlJ1bkxvb3BSZWYgcnVuTG9vcCA9IGNvb2tpZVN0b3JhZ2VPYnNlcnZlclJ1bkxv
b3AoKTsKICAgICBBU1NFUlQocnVuTG9vcCk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2ll
U3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCk7
CisgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3Jh
Z2UoKTsKICAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7CiAKICAgICBDRkhUVFBDb29raWVTdG9y
YWdlU2NoZWR1bGVXaXRoUnVuTG9vcChjb29raWVTdG9yYWdlLmdldCgpLCBydW5Mb29wLCBrQ0ZS
dW5Mb29wQ29tbW9uTW9kZXMpOwpAQCAtMTQ0LDcgKzkyLDcgQEAgdm9pZCBzdG9wT2JzZXJ2aW5n
Q29va2llQ2hhbmdlcygpCiAgICAgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3AgPSBjb29raWVTdG9yYWdl
T2JzZXJ2ZXJSdW5Mb29wKCk7CiAgICAgQVNTRVJUKHJ1bkxvb3ApOwogCi0gICAgUmV0YWluUHRy
PENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBkZWZhdWx0Q0ZIVFRQQ29v
a2llU3RvcmFnZSgpOworICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29r
aWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24o
KS5jb29raWVTdG9yYWdlKCk7CiAgICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwogCiAgICAgQ0ZI
VFRQQ29va2llU3RvcmFnZVJlbW92ZU9ic2VydmVyKGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHJ1bkxv
b3AsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSwgbm90aWZ5Q29va2llc0NoYW5nZWQsIDApOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tp
ZVN0b3JhZ2VDRk5ldC5oCShyZXZpc2lvbiAxMzg0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0g
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaWZuZGVmIENvb2tpZVN0b3JhZ2VDRk5ldF9oCi0jZGVm
aW5lIENvb2tpZVN0b3JhZ2VDRk5ldF9oCi0KLSNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0K
LXR5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0b3JhZ2UqICBDRkhUVFBDb29raWVT
dG9yYWdlUmVmOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIE5ldHdvcmtpbmdDb250
ZXh0OwotCi1SZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY3VycmVudENGSFRUUENv
b2tpZVN0b3JhZ2UoTmV0d29ya2luZ0NvbnRleHQqKTsgLy8gV2lsbCBiZSBudWxsIHdoZW4gdXNp
bmcgc2hhcmVkIE5TSFRUUENvb2tpZVN0b3JhZ2UuCi1SZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3Rv
cmFnZVJlZj4gZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsgLy8gRG9lc24ndCB0YWtlIGN1
cnJlbnQgc2Vzc2lvbiBpbnRvIGFjY291bnQuCi0KLSNpZiBQTEFURk9STShXSU4pCi0vLyBOZWVk
ZWQgZm9yIFdlYktpdDEgQVBJIG9ubHkuCi12b2lkIG92ZXJyaWRlQ29va2llU3RvcmFnZShDRkhU
VFBDb29raWVTdG9yYWdlUmVmKTsKLUNGSFRUUENvb2tpZVN0b3JhZ2VSZWYgb3ZlcnJpZGVuQ29v
a2llU3RvcmFnZSgpOwotI2VuZGlmCi0KLX0KLQotI2VuZGlmIC8vIENvb2tpZVN0b3JhZ2VDRk5l
dF9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9y
YWdlU2Vzc2lvbkNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ0ZOZXQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNlc3Npb24uaCIK
KworI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KKworI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRlICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNl
LmgiCisjZWxzZQorI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1J
bnRlcmZhY2UuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK05ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uKENGVVJMU3RvcmFnZVNlc3Npb25SZWYg
cGxhdGZvcm1TZXNzaW9uKQorICAgIDogbV9wbGF0Zm9ybVNlc3Npb24ocGxhdGZvcm1TZXNzaW9u
KQorICAgICwgbV9pc1ByaXZhdGUoZmFsc2UpCit7Cit9CisKK3N0YXRpYyBPd25QdHI8TmV0d29y
a1N0b3JhZ2VTZXNzaW9uPiYgZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE93blB0cjxO
ZXR3b3JrU3RvcmFnZVNlc3Npb24+LCBzZXNzaW9uLCAoKSk7CisgICAgcmV0dXJuIHNlc3Npb247
Cit9CisKK3ZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNz
aW9uKCkKK3sKKyAgICAvLyBTZXQgYSBwcml2YXRlIHNlc3Npb24gZm9yIHRlc3RpbmcgdG8gYXZv
aWQgaW50ZXJmZXJpbmcgd2l0aCBnbG9iYWwgY29va2llcy4gVGhpcyBzaG91bGQgYmUgZGlmZmVy
ZW50IGZyb20gcHJpdmF0ZSBicm93c2luZyBzZXNzaW9uLgorICAgIC8vIEZJWE1FOiBJdCBsb29r
cyBsaWtlIGNyZWF0aW5nIGEgbmV3IHNlc3Npb24gd2l0aCB0aGUgc2FtZSBpZGVudGlmaWVyIG1h
eSBiZSBqdXN0IGNyZWF0aW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBzYW1lIHN0b3JhZ2UuIFNlZSA8
cmRhcjovL3Byb2JsZW0vMTE1NzE0NTA+IGFuZCA8cmRhcjovL3Byb2JsZW0vMTIzODQzODA+Lgor
I2lmIFBMQVRGT1JNKE1BQykKKyAgICBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkgPSBh
ZG9wdFB0cihuZXcgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKHdrQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VT
ZXNzaW9uKENGU1RSKCJQcml2YXRlIFdlYktpdCBTZXNzaW9uIikpKSk7CisjZWxzZQorICAgIGRl
ZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSA9IGFkb3B0UHRyKG5ldyBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24od2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oQ0ZTVFIoIlByaXZhdGUgV2Vi
S2l0IFNlc3Npb24iKSwgZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLT5wbGF0Zm9ybVNl
c3Npb24oKSkpKTsKKyNlbmRpZgorfQorCisjaWYgUExBVEZPUk0oV0lOKQorc3RhdGljIFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiYgY29va2llU3RvcmFnZU92ZXJyaWRlKCkKK3sK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVm
PiwgY29va2llU3RvcmFnZSwgKCkpOworICAgIHJldHVybiBjb29raWVTdG9yYWdlOworfQorCit2
b2lkIG92ZXJyaWRlQ29va2llU3RvcmFnZShDRkhUVFBDb29raWVTdG9yYWdlUmVmIGNvb2tpZVN0
b3JhZ2UpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAvLyBGSVhNRTogV2h5
IGRvbid0IHdlIHJldGFpbiBpdD8gVGhlIG9ubHkgY2FsbGVyIGlzIGFuIEFQSSBtZXRob2QgdGhh
dCB0YWtlcyBjb29raWUgc3RvcmFnZSBhcyBhIHJhdyBhcmd1bWVudC4KKyAgICBjb29raWVTdG9y
YWdlT3ZlcnJpZGUoKS5hZG9wdENGKGNvb2tpZVN0b3JhZ2UpOworfQorCitDRkhUVFBDb29raWVT
dG9yYWdlUmVmIG92ZXJyaWRlbkNvb2tpZVN0b3JhZ2UoKQoreworICAgIHJldHVybiBjb29raWVT
dG9yYWdlT3ZlcnJpZGUoKS5nZXQoKTsKK30KKyNlbmRpZgorCitOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkKK3sKKyAg
ICBpZiAoIWRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSkKKyAgICAgICAgZGVmYXVsdE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbigpID0gYWRvcHRQdHIobmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
bigwKSk7CisgICAgcmV0dXJuICpkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCk7Cit9CisK
K1Bhc3NPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyQmFz
ZSkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmSWRlbnRpZmllciA9IFN0cmluZyhp
ZGVudGlmaWVyQmFzZSArICIuUHJpdmF0ZUJyb3dzaW5nIikuY3JlYXRlQ0ZTdHJpbmcoKTsKKwor
I2lmIFBMQVRGT1JNKE1BQykKKyAgICBPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBzZXNz
aW9uID0gYWRvcHRQdHIobmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbih3a0NyZWF0ZVByaXZhdGVT
dG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCkpKSk7CisjZWxzZQorICAgIE93blB0cjxO
ZXR3b3JrU3RvcmFnZVNlc3Npb24+IHNlc3Npb24gPSBhZG9wdFB0cihuZXcgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKHdrQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKGNmSWRlbnRpZmllci5nZXQo
KSwgZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpLT5wbGF0Zm9ybVNlc3Npb24oKSkpKTsK
KyNlbmRpZgorICAgIHNlc3Npb24tPm1faXNQcml2YXRlID0gdHJ1ZTsKKworICAgIHJldHVybiBz
ZXNzaW9uLnJlbGVhc2UoKTsKK30KKworUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29va2llU3RvcmFnZSgpIGNvbnN0Cit7CisjaWYgUExB
VEZPUk0oV0lOKQorICAgIGlmIChSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4mIG92
ZXJyaWRlID0gY29va2llU3RvcmFnZU92ZXJyaWRlKCkpCisgICAgICAgIHJldHVybiBvdmVycmlk
ZTsKKyNlbmRpZgorCisgICAgaWYgKG1fcGxhdGZvcm1TZXNzaW9uKQorICAgICAgICByZXR1cm4g
UmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+KEFkb3B0Q0YsIHdrQ29weUhUVFBDb29r
aWVTdG9yYWdlKG1fcGxhdGZvcm1TZXNzaW9uLmdldCgpKSk7CisKKyNpZiBVU0UoQ0ZORVRXT1JL
KQorICAgIHJldHVybiB3a0dldERlZmF1bHRIVFRQQ29va2llU3RvcmFnZSgpOworI2Vsc2UKKyAg
ICAvLyBXaGVuIHVzaW5nIE5TVVJMQ29ubmVjdGlvbiwgd2UgYWxzbyB1c2UgaXRzIHNoYXJlZCBj
b29raWUgc3RvcmFnZS4KKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorCit9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRk5ldC5jcHAJKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ0YuaCIKICNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgotI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2VDRk5l
dC5oIgogI2luY2x1ZGUgIkNyZWRlbnRpYWxTdG9yYWdlLmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJGb3JtRGF0YVN0cmVhbUNGTmV0LmgiCkBAIC0zOCw2
ICszNyw3IEBACiAjaW5jbHVkZSAiTG9hZGVyUnVuTG9vcENGLmgiCiAjaW5jbHVkZSAiTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5n
Q29udGV4dC5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKQEAgLTM5OSw3
ICszOTksNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRSZWxheFRoaXJkUGFydHlDb29raWVQCiB7CiAg
ICAgLy8gSWYgYSBVUkwgYWxyZWFkeSBoYXMgY29va2llcywgdGhlbiB3ZSdsbCByZWxheCB0aGUg
M3JkIHBhcnR5IGNvb2tpZSBwb2xpY3kgYW5kIGFjY2VwdCBuZXcgY29va2llcy4KIAotICAgIFJl
dGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjZkNvb2tpZVN0b3JhZ2UgPSBjdXJyZW50
Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KTsKKyAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2ll
U3RvcmFnZVJlZj4gY2ZDb29raWVTdG9yYWdlID0gY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5j
b29raWVTdG9yYWdlKCk7CiAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeSBjb29r
aWVBY2NlcHRQb2xpY3kgPSBDRkhUVFBDb29raWVTdG9yYWdlR2V0Q29va2llQWNjZXB0UG9saWN5
KGNmQ29va2llU3RvcmFnZS5nZXQoKSk7CiAKICAgICBpZiAoY29va2llQWNjZXB0UG9saWN5ICE9
IENGSFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFp
bikKQEAgLTUwNiw3ICs1MDYsNyBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFydChOZXR3b3Jr
aW5nQ29uCiAgICAgaWYgKCFjb250ZXh0LT5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGQtPm1fc3RvcmFnZVNlc3Npb24gPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigp
OworICAgIGQtPm1fc3RvcmFnZVNlc3Npb24gPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLnBs
YXRmb3JtU2Vzc2lvbigpOwogCiAgICAgYm9vbCBzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZSA9
ICFjbGllbnQoKSB8fCBjbGllbnQoKS0+c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UodGhpcyk7
CiAKQEAgLTc0MSw3ICs3NDEsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjpsb2FkUmVzb3VyY2VT
eW5jaHJvCiAKICAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGhhbmRsZSA9IGFkb3B0UmVmKG5l
dyBSZXNvdXJjZUhhbmRsZShyZXF1ZXN0LCBjbGllbnQuZ2V0KCksIGZhbHNlIC8qZGVmZXJzTG9h
ZGluZyovLCB0cnVlIC8qc2hvdWxkQ29udGVudFNuaWZmKi8pKTsKIAotICAgIGhhbmRsZS0+ZC0+
bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCk7CisgICAgaGFuZGxl
LT5kLT5tX3N0b3JhZ2VTZXNzaW9uID0gY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5wbGF0Zm9y
bVNlc3Npb24oKTsKIAogICAgIGlmIChoYW5kbGUtPmQtPm1fc2NoZWR1bGVkRmFpbHVyZVR5cGUg
IT0gTm9GYWlsdXJlKSB7CiAgICAgICAgIGVycm9yID0gY29udGV4dC0+YmxvY2tlZEVycm9yKHJl
cXVlc3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9D
b29raWVKYXJDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jaHJvbWl1bS9Db29raWVKYXJDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDEzODQx
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFy
Q2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw1NSArNDEsNTUgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi12b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikKK3ZvaWQgc2V0Q29va2llc0Zyb21ET00oY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
Rm9yQ29va2llcywgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cikKIHsK
LSAgICBpZiAoIWNvbnRleHQpCisgICAgaWYgKCFzZXNzaW9uLmNvbnRleHQoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVKYXIgPSBjb250ZXh0LT5j
b29raWVKYXIoKTsKKyAgICBXZWJLaXQ6OldlYkNvb2tpZUphciogY29va2llSmFyID0gc2Vzc2lv
bi5jb250ZXh0KCktPmNvb2tpZUphcigpOwogICAgIGlmIChjb29raWVKYXIpCiAgICAgICAgIGNv
b2tpZUphci0+c2V0Q29va2llKHVybCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvb2tpZVN0cik7
CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5n
IGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgS1VSTCYgdXJsKQogewotICAgIGlm
ICghY29udGV4dCkKKyAgICBpZiAoIXNlc3Npb24uY29udGV4dCgpKQogICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAgICAgU3RyaW5nIHJlc3VsdDsKLSAgICBXZWJLaXQ6OldlYkNvb2tpZUphciog
Y29va2llSmFyID0gY29udGV4dC0+Y29va2llSmFyKCk7CisgICAgV2ViS2l0OjpXZWJDb29raWVK
YXIqIGNvb2tpZUphciA9IHNlc3Npb24uY29udGV4dCgpLT5jb29raWVKYXIoKTsKICAgICBpZiAo
Y29va2llSmFyKQogICAgICAgICByZXN1bHQgPSBjb29raWVKYXItPmNvb2tpZXModXJsLCBmaXJz
dFBhcnR5Rm9yQ29va2llcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotU3RyaW5nIGNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtVUkwmIHVy
bCkKIHsKLSAgICBpZiAoIWNvbnRleHQpCisgICAgaWYgKCFzZXNzaW9uLmNvbnRleHQoKSkKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIFN0cmluZyByZXN1bHQ7Ci0gICAgV2ViS2l0OjpX
ZWJDb29raWVKYXIqIGNvb2tpZUphciA9IGNvbnRleHQtPmNvb2tpZUphcigpOworICAgIFdlYktp
dDo6V2ViQ29va2llSmFyKiBjb29raWVKYXIgPSBzZXNzaW9uLmNvbnRleHQoKS0+Y29va2llSmFy
KCk7CiAgICAgaWYgKGNvb2tpZUphcikKICAgICAgICAgcmVzdWx0ID0gY29va2llSmFyLT5jb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSh1cmwsIGZpcnN0UGFydHlGb3JDb29raWVzKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1ib29sIGNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBjb29raWVVUkwsIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHlGb3JDb29raWVzKQorYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGNvb2tpZVVSTCwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eUZvckNvb2tpZXMpCiB7CiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKLSAgICBpZiAoIWNv
bnRleHQpCisgICAgaWYgKCFzZXNzaW9uLmNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKLSAgICBXZWJLaXQ6OldlYkNvb2tpZUphciogY29va2llSmFyID0gY29udGV4dC0+Y29va2ll
SmFyKCk7CisgICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9IHNlc3Npb24uY29u
dGV4dCgpLT5jb29raWVKYXIoKTsKICAgICBpZiAoY29va2llSmFyKQogICAgICAgICByZXN1bHQg
PSBjb29raWVKYXItPmNvb2tpZXNFbmFibGVkKGNvb2tpZVVSTCwgZmlyc3RQYXJ0eUZvckNvb2tp
ZXMpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWJvb2wgZ2V0UmF3Q29va2llcyhOZXR3b3Jr
aW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNv
bnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIGdldFJhd0Nv
b2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBm
aXJzdFBhcnR5Rm9yQ29va2llcywgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3
Q29va2llcykKIHsKICAgICByYXdDb29raWVzLmNsZWFyKCk7Ci0gICAgaWYgKCFjb250ZXh0KQor
ICAgIGlmICghc2Vzc2lvbi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBX
ZWJLaXQ6OldlYlZlY3RvcjxXZWJLaXQ6OldlYkNvb2tpZT4gd2ViQ29va2llczsKLSAgICBXZWJL
aXQ6OldlYkNvb2tpZUphciogY29va2llSmFyID0gY29udGV4dC0+Y29va2llSmFyKCk7CisgICAg
V2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9IHNlc3Npb24uY29udGV4dCgpLT5jb29r
aWVKYXIoKTsKICAgICBpZiAoY29va2llSmFyKQogICAgICAgICBjb29raWVKYXItPnJhd0Nvb2tp
ZXModXJsLCBmaXJzdFBhcnR5Rm9yQ29va2llcywgd2ViQ29va2llcyk7CiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IHdlYkNvb2tpZXMuc2l6ZSgpOyArK2kpIHsKQEAgLTEwMCwyNiArMTAw
LDI2IEBAIGJvb2wgZ2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY28KICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdm9pZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBkZWxl
dGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKLSAgICBpZiAoIWNvbnRleHQpCisg
ICAgaWYgKCFzZXNzaW9uLmNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFdlYktpdDo6
V2ViQ29va2llSmFyKiBjb29raWVKYXIgPSBjb250ZXh0LT5jb29raWVKYXIoKTsKKyAgICBXZWJL
aXQ6OldlYkNvb2tpZUphciogY29va2llSmFyID0gc2Vzc2lvbi5jb250ZXh0KCktPmNvb2tpZUph
cigpOwogICAgIGlmIChjb29raWVKYXIpCiAgICAgICAgIGNvb2tpZUphci0+ZGVsZXRlQ29va2ll
KHVybCwgY29va2llTmFtZSk7CiB9CiAKLXZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0
d29ya2luZ0NvbnRleHQqIC8qY29udGV4dCovLCBIYXNoU2V0PFN0cmluZz4mIC8qaG9zdG5hbWVz
Ki8pCit2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIEhhc2hTZXQ8U3RyaW5nPiYgLypob3N0bmFtZXMqLykKIHsKICAgICAvLyBGSVhNRTog
Tm90IHlldCBpbXBsZW1lbnRlZAogfQogCi12b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShO
ZXR3b3JraW5nQ29udGV4dCogLypjb250ZXh0Ki8sIGNvbnN0IFN0cmluZyYgLypob3N0bmFtZSov
KQordm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgU3RyaW5nJiAvKmhvc3RuYW1lKi8pCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5
ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250
ZXh0KiAvKmNvbnRleHQqLykKK3ZvaWQgZGVsZXRlQWxsQ29va2llcyhjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL1Jlc291cmNlSGFu
ZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2No
cm9taXVtL1Jlc291cmNlSGFuZGxlLmNwcAkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9SZXNvdXJjZUhhbmRsZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDkgKzMxLDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VIYW5kbGUuaCIKIAorI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCisj
aW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgogI2luY2x1ZGUgIlJlc291
cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKICNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJXcmFwcGVkUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5j
bHVkZSAiV3JhcHBlZFJlc291cmNlUmVzcG9uc2UuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJDdXJsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAJKHJldmlz
aW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29r
aWVKYXJDdXJsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNTAgKzI3LDUwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogc3RhdGljIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGNvb2tpZUphcjsK
IAotdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IEtVUkwm
LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit2b2lkIHNldENvb2tpZXNG
cm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgY29va2llSmFyLnNldCh1cmwu
c3RyaW5nKCksIHZhbHVlKTsKIH0KIAotU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2luZ0Nv
bnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JE
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwm
IHVybCkKIHsKICAgICByZXR1cm4gY29va2llSmFyLmdldCh1cmwuc3RyaW5nKCkpOwogfQogCi1T
dHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCitTdHJp
bmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKIHsKICAg
ICAvLyBGSVhNRTogaW5jbHVkZSBIdHRwT25seSBjb29raWUuCiAgICAgcmV0dXJuIGNvb2tpZUph
ci5nZXQodXJsLnN0cmluZygpKTsKIH0KIAotYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5n
Q29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwm
IC8qdXJsKi8pCitib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQogewog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVy
bCovLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2llcyhjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29u
c3QgS1VSTCYgLyp1cmwqLywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgLy8g
RklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAgICAg
cmV0dXJuIGZhbHNlOyAvLyByZXR1cm4gdHJ1ZSB3aGVuIGltcGxlbWVudGVkCiB9CiAKLXZvaWQg
ZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmlu
ZyYpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBLVVJMJiwgY29uc3QgU3RyaW5nJikKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1l
bnRlZAogfQogCi12b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0
KiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCit2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29r
aWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5h
bWVzKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVs
ZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgU3RyaW5nJiBo
b3N0bmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAgLy8gRklYTUU6IE5v
dCB5ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtpbmdD
b250ZXh0KikKK3ZvaWQgZGVsZXRlQWxsQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3Vy
Y2VIYW5kbGVDdXJsLmNwcAkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogCiAjaW5jbHVk
ZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5o
IgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlTWFuYWdlci5oIgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5t
bQkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvQ29va2llSmFyTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSw4IEBACiAjaW1w
b3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkNvb2tpZS5oIgogI2ltcG9ydCAiQ29v
a2llU3RvcmFnZS5oIgotI2ltcG9ydCAiQ29va2llU3RvcmFnZUNGTmV0LmgiCiAjaW1wb3J0ICJL
VVJMLmgiCi0jaW1wb3J0ICJOZXR3b3JraW5nQ29udGV4dC5oIgorI2ltcG9ydCAiTmV0d29ya1N0
b3JhZ2VTZXNzaW9uLmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKQEAgLTYyLDMxICs2MSwyOSBAQCBzdGF0aWMgUmV0YWluUHRyPE5T
QXJyYXk+IGZpbHRlckNvb2tpZXMoCiAgICAgcmV0dXJuIGZpbHRlcmVkQ29va2llczsKIH0KIAot
U3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtV
UkwmLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1cmwpCiB7
CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRU
UENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwot
ICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hUVFBDb29raWVzRm9yVVJMKGNvb2tpZVN0b3JhZ2Uu
Z2V0KCksIHVybCk7CisgICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXNGb3JVUkwo
c2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHVybCk7CiAgICAgcmV0dXJuIFtbTlNIVFRQ
Q29va2llIHJlcXVlc3RIZWFkZXJGaWVsZHNXaXRoQ29va2llczpmaWx0ZXJDb29raWVzKGNvb2tp
ZXMpLmdldCgpXSBvYmplY3RGb3JLZXk6QCJDb29raWUiXTsKIAogICAgIEVORF9CTE9DS19PQkpD
X0VYQ0VQVElPTlM7CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCi1TdHJpbmcgY29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtV
UkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQogewogICAgIEJFR0lO
X0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9y
YWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9y
YWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBOU0FycmF5
ICpjb29raWVzID0gd2tIVFRQQ29va2llc0ZvclVSTChjb29raWVTdG9yYWdlLmdldCgpLCB1cmwp
OworICAgIE5TQXJyYXkgKmNvb2tpZXMgPSB3a0hUVFBDb29raWVzRm9yVVJMKHNlc3Npb24uY29v
a2llU3RvcmFnZSgpLmdldCgpLCB1cmwpOwogICAgIHJldHVybiBbW05TSFRUUENvb2tpZSByZXF1
ZXN0SGVhZGVyRmllbGRzV2l0aENvb2tpZXM6Y29va2llc10gb2JqZWN0Rm9yS2V5OkAiQ29va2ll
Il07CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIHJldHVybiBTdHJpbmco
KTsKIH0KIAotdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4
dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IGNvb2tpZVN0cikKK3ZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgY29va2llU3RyKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBU
SU9OUzsKIApAQCAtMTAzLDMxICsxMDAsMjggQEAgdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3
b3JraW5nQ29udGV4dAogICAgIFJldGFpblB0cjxOU0FycmF5PiBmaWx0ZXJlZENvb2tpZXMgPSBm
aWx0ZXJDb29raWVzKFtOU0hUVFBDb29raWUgY29va2llc1dpdGhSZXNwb25zZUhlYWRlckZpZWxk
czpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0OmNvb2tpZVN0cmluZyBmb3JLZXk6
QCJTZXQtQ29va2llIl0gZm9yVVJMOmNvb2tpZVVSTF0pOwogICAgIEFTU0VSVChbZmlsdGVyZWRD
b29raWVzLmdldCgpIGNvdW50XSA8PSAxKTsKIAotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVT
dG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVT
dG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICB3a1Nl
dEhUVFBDb29raWVzRm9yVVJMKGNvb2tpZVN0b3JhZ2UuZ2V0KCksIGZpbHRlcmVkQ29va2llcy5n
ZXQoKSwgY29va2llVVJMLCBmaXJzdFBhcnR5KTsKKyAgICB3a1NldEhUVFBDb29raWVzRm9yVVJM
KHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCBmaWx0ZXJlZENvb2tpZXMuZ2V0KCksIGNv
b2tpZVVSTCwgZmlyc3RQYXJ0eSk7CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwog
fQogCi1ib29sIGNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKK2Jvb2wgY29va2ll
c0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJM
JiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKIHsKICAgICBCRUdJTl9CTE9D
S19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJl
Zj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShj
b250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCk7Ci0gICAgTlNIVFRQQ29va2ll
QWNjZXB0UG9saWN5IGNvb2tpZUFjY2VwdFBvbGljeSA9IHN0YXRpY19jYXN0PE5TSFRUUENvb2tp
ZUFjY2VwdFBvbGljeT4od2tHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2Uu
Z2V0KCkpKTsKKyAgICBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kgY29va2llQWNjZXB0UG9saWN5
ID0gc3RhdGljX2Nhc3Q8TlNIVFRQQ29va2llQWNjZXB0UG9saWN5Pih3a0dldEhUVFBDb29raWVB
Y2NlcHRQb2xpY3koc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCkpKTsKICAgICByZXR1cm4g
Y29va2llQWNjZXB0UG9saWN5ID09IE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeUFsd2F5cyB8fCBj
b29raWVBY2NlcHRQb2xpY3kgPT0gTlNIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWlu
RG9jdW1lbnREb21haW47CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsLCBWZWN0
b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25z
dCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewogICAgIHJhd0Nvb2tp
ZXMuY2xlYXIoKTsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBSZXRh
aW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBj
dXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVT
dG9yYWdlKCk7Ci0gICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXNGb3JVUkwoY29v
a2llU3RvcmFnZS5nZXQoKSwgdXJsKTsKKyAgICBOU0FycmF5ICpjb29raWVzID0gd2tIVFRQQ29v
a2llc0ZvclVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJsKTsKICAgICBOU1VJ
bnRlZ2VyIGNvdW50ID0gW2Nvb2tpZXMgY291bnRdOwogICAgIHJhd0Nvb2tpZXMucmVzZXJ2ZUNh
cGFjaXR5KGNvdW50KTsKICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBjb3VudDsgKytp
KSB7CkBAIC0xNDEsMTIgKzEzNSwxMiBAQCBib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0Nv
bnRleHQqIGNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKE5ldHdv
cmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29v
a2llTmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7CiAg
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCiAgICAgTlNVUkwgKmNvb2tpZVVSTCA9
IHVybDsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFn
ZSA9IGNvbnRleHQgPyBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1
bHRDRkhUVFBDb29raWVTdG9yYWdlKCk7CisgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKTsKICAgICBOU0Fy
cmF5ICpjb29raWVzID0gd2tIVFRQQ29va2llc0ZvclVSTChjb29raWVTdG9yYWdlLmdldCgpLCBj
b29raWVVUkwpOwogCiAgICAgTlNTdHJpbmcgKmNvb2tpZU5hbWVTdHJpbmcgPSBjb29raWVOYW1l
OwpAQCAtMTYxLDEyICsxNTUsMTEgQEAgdm9pZCBkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbgogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiB9CiAKLXZvaWQgZ2V0SG9z
dG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIEhhc2hTZXQ8U3Ry
aW5nPiYgaG9zdG5hbWVzKQordm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQog
ewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIFJldGFpblB0cjxDRkhU
VFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhU
VFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsK
LSAgICBOU0FycmF5ICpjb29raWVzID0gd2tIVFRQQ29va2llcyhjb29raWVTdG9yYWdlLmdldCgp
KTsKKyAgICBOU0FycmF5ICpjb29raWVzID0gd2tIVFRQQ29va2llcyhzZXNzaW9uLmNvb2tpZVN0
b3JhZ2UoKS5nZXQoKSk7CiAgICAgCiAgICAgZm9yIChOU0hUVFBDb29raWUqIGNvb2tpZSBpbiBj
b29raWVzKQogICAgICAgICBob3N0bmFtZXMuYWRkKFtjb29raWUgZG9tYWluXSk7CkBAIC0xNzQs
MTEgKzE2NywxMSBAQCB2b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtpbmdDCiAg
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAotdm9pZCBkZWxldGVDb29raWVzRm9y
SG9zdG5hbWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgaG9zdG5h
bWUpCit2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2Uo
Y29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOworICAgIFJldGFpblB0cjxD
RkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gc2Vzc2lvbi5jb29raWVTdG9y
YWdlKCk7CiAgICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXMoY29va2llU3RvcmFn
ZS5nZXQoKSk7CiAgICAgaWYgKCFjb29raWVzKQogICAgICAgICByZXR1cm47CkBAIC0xOTEsMTAg
KzE4NCw5IEBAIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtpbmcKICAgICBF
TkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCi12b2lkIGRlbGV0ZUFsbENvb2tpZXMoTmV0
d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCit2b2lkIGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQogewotICAgIFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29r
aWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICB3
a0RlbGV0ZUFsbEhUVFBDb29raWVzKGNvb2tpZVN0b3JhZ2UuZ2V0KCkpOworICAgIHdrRGVsZXRl
QWxsSFRUUENvb2tpZXMoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCkpOwogfQogCiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVTdG9yYWdlTWFj
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nv
b2tpZVN0b3JhZ2VNYWMubW0JKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZVN0b3JhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTI1LDcgKzI1LDYgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNvb2tpZVN0
b3JhZ2UuaCIKLSNpbmNsdWRlICJDb29raWVTdG9yYWdlQ0ZOZXQuaCIKIAogI2ltcG9ydCAiUmVz
b3VyY2VIYW5kbGUuaCIKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0JKHJldmlzaW9uIDEzODQxMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2IEBACiAjaW1wb3J0ICJCbG9iUmVnaXN0
cnkuaCIKICNpbXBvcnQgIkJsb2NrRXhjZXB0aW9ucy5oIgogI2ltcG9ydCAiQ29va2llU3RvcmFn
ZS5oIgotI2ltcG9ydCAiQ29va2llU3RvcmFnZUNGTmV0LmgiCiAjaW1wb3J0ICJDcmVkZW50aWFs
U3RvcmFnZS5oIgogI2ltcG9ydCAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbXBvcnQgIkVt
cHR5UHJvdG9jb2xEZWZpbml0aW9ucy5oIgpAQCAtNDIsNiArNDEsNyBAQAogI2ltcG9ydCAiRnJh
bWVMb2FkZXIuaCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1JTUVUeXBlUmVnaXN0
cnkuaCIKKyNpbXBvcnQgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW1wb3J0ICJQYWdlLmgiCiAj
aW1wb3J0ICJSZXNvdXJjZUVycm9yLmgiCiAjaW1wb3J0ICJSZXNvdXJjZVJlc3BvbnNlLmgiCkBA
IC0xNDcsNyArMTQ3LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2ll
UAogewogICAgIC8vIElmIGEgVVJMIGFscmVhZHkgaGFzIGNvb2tpZXMsIHRoZW4gd2UnbGwgcmVs
YXggdGhlIDNyZCBwYXJ0eSBjb29raWUgcG9saWN5IGFuZCBhY2NlcHQgbmV3IGNvb2tpZXMuCiAK
LSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY2ZDb29raWVTdG9yYWdlID0g
Y3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCk7CisgICAgUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+IGNmQ29va2llU3RvcmFnZSA9IGNvbnRleHQtPnN0b3JhZ2VTZXNz
aW9uKCkuY29va2llU3RvcmFnZSgpOwogICAgIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSBjb29r
aWVBY2NlcHRQb2xpY3kgPSBzdGF0aWNfY2FzdDxOU0hUVFBDb29raWVBY2NlcHRQb2xpY3k+KHdr
R2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShjZkNvb2tpZVN0b3JhZ2UuZ2V0KCkpKTsKIAogICAg
IGlmIChjb29raWVBY2NlcHRQb2xpY3kgIT0gTlNIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZy
b21NYWluRG9jdW1lbnREb21haW4pCkBAIC0yMzAsNyArMjMwLDcgQEAgYm9vbCBSZXNvdXJjZUhh
bmRsZTo6c3RhcnQoTmV0d29ya2luZ0NvbgogICAgIGlmICghY29udGV4dC0+aXNWYWxpZCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBkLT5tX3N0b3JhZ2VTZXNzaW9uID0gY29udGV4
dC0+c3RvcmFnZVNlc3Npb24oKTsKKyAgICBkLT5tX3N0b3JhZ2VTZXNzaW9uID0gY29udGV4dC0+
c3RvcmFnZVNlc3Npb24oKS5wbGF0Zm9ybVNlc3Npb24oKTsKIAogICAgIEFTU0VSVCghZC0+bV9w
cm94eSk7CiAgICAgZC0+bV9wcm94eS5hZG9wdE5TKHdrQ3JlYXRlTlNVUkxDb25uZWN0aW9uRGVs
ZWdhdGVQcm94eSgpKTsKQEAgLTM5Niw3ICszOTYsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjps
b2FkUmVzb3VyY2VTeW5jaHJvCiAKICAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGhhbmRsZSA9
IGFkb3B0UmVmKG5ldyBSZXNvdXJjZUhhbmRsZShyZXF1ZXN0LCBjbGllbnQuZ2V0KCksIGZhbHNl
IC8qZGVmZXJzTG9hZGluZyovLCB0cnVlIC8qc2hvdWxkQ29udGVudFNuaWZmKi8pKTsKIAotICAg
IGhhbmRsZS0+ZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCk7
CisgICAgaGFuZGxlLT5kLT5tX3N0b3JhZ2VTZXNzaW9uID0gY29udGV4dC0+c3RvcmFnZVNlc3Np
b24oKS5wbGF0Zm9ybVNlc3Npb24oKTsKIAogICAgIGlmIChjb250ZXh0ICYmIGhhbmRsZS0+ZC0+
bV9zY2hlZHVsZWRGYWlsdXJlVHlwZSAhPSBOb0ZhaWx1cmUpIHsKICAgICAgICAgZXJyb3IgPSBj
b250ZXh0LT5ibG9ja2VkRXJyb3IocmVxdWVzdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3F0L0Nvb2tpZUphclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L0Nvb2tpZUphclF0LmNwcAkocmV2aXNpb24gMTM4NDEx
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Db29raWVKYXJRdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDE1ICs0NiwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IHN0YXRpYyBTaGFyZWRDb29raWVKYXJRdCogc19zaGFyZWRDb29raWVKYXJRdCA9IDA7CiAKLXZv
aWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3Zv
aWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
dmFsdWUpCiB7Ci0gICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IGNvbnRleHQgPyBjb250ZXh0
LT5uZXR3b3JrQWNjZXNzTWFuYWdlcigpLT5jb29raWVKYXIoKSA6IFNoYXJlZENvb2tpZUphclF0
OjpzaGFyZWQoKTsKKyAgICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gc2Vzc2lvbi5jb250ZXh0
KCkgPyBzZXNzaW9uLmNvbnRleHQoKS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFy
KCkgOiBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgaWYgKCFqYXIpCiAgICAgICAg
IHJldHVybjsKIAogICAgIFFVcmwgdXJsRm9yQ29va2llcyh1cmwpOwogICAgIFFVcmwgZmlyc3RQ
YXJ0eVVybChmaXJzdFBhcnR5KTsKLSAgICBpZiAoIXRoaXJkUGFydHlDb29raWVQb2xpY3lQZXJt
aXRzKGNvbnRleHQsIHVybEZvckNvb2tpZXMsIGZpcnN0UGFydHlVcmwpKQorICAgIGlmICghdGhp
cmRQYXJ0eUNvb2tpZVBvbGljeVBlcm1pdHMoc2Vzc2lvbi5jb250ZXh0KCksIHVybEZvckNvb2tp
ZXMsIGZpcnN0UGFydHlVcmwpKQogICAgICAgICByZXR1cm47CiAKICAgICBRTGlzdDxRTmV0d29y
a0Nvb2tpZT4gY29va2llcyA9IFFOZXR3b3JrQ29va2llOjpwYXJzZUNvb2tpZXMoUVN0cmluZyh2
YWx1ZSkudG9MYXRpbjEoKSk7CkBAIC02OSwxNSArNjksMTUgQEAgdm9pZCBzZXRDb29raWVzRnJv
bURPTShOZXR3b3JraW5nQ29udGV4dAogICAgIGphci0+c2V0Q29va2llc0Zyb21VcmwoY29va2ll
cywgdXJsRm9yQ29va2llcyk7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdD
b250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwp
CitTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Np
b24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBRTmV0
d29ya0Nvb2tpZUphciogamFyID0gY29udGV4dCA/IGNvbnRleHQtPm5ldHdvcmtBY2Nlc3NNYW5h
Z2VyKCktPmNvb2tpZUphcigpIDogU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOworICAgIFFO
ZXR3b3JrQ29va2llSmFyKiBqYXIgPSBzZXNzaW9uLmNvbnRleHQoKSA/IHNlc3Npb24uY29udGV4
dCgpLT5uZXR3b3JrQWNjZXNzTWFuYWdlcigpLT5jb29raWVKYXIoKSA6IFNoYXJlZENvb2tpZUph
clF0OjpzaGFyZWQoKTsKICAgICBpZiAoIWphcikKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
CiAgICAgUVVybCB1cmxGb3JDb29raWVzKHVybCk7CiAgICAgUVVybCBmaXJzdFBhcnR5VXJsKGZp
cnN0UGFydHkpOwotICAgIGlmICghdGhpcmRQYXJ0eUNvb2tpZVBvbGljeVBlcm1pdHMoY29udGV4
dCwgdXJsRm9yQ29va2llcywgZmlyc3RQYXJ0eVVybCkpCisgICAgaWYgKCF0aGlyZFBhcnR5Q29v
a2llUG9saWN5UGVybWl0cyhzZXNzaW9uLmNvbnRleHQoKSwgdXJsRm9yQ29va2llcywgZmlyc3RQ
YXJ0eVVybCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIFFMaXN0PFFOZXR3b3Jr
Q29va2llPiBjb29raWVzID0gamFyLT5jb29raWVzRm9yVXJsKHVybEZvckNvb2tpZXMpOwpAQCAt
OTQsOSArOTQsOSBAQCBTdHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogCiAg
ICAgcmV0dXJuIHJlc3VsdENvb2tpZXMuam9pbihRTGF0aW4xU3RyaW5nKCI7ICIpKTsKIH0KIAot
U3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQorU3Ry
aW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVy
bCkKIHsKLSAgICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gY29udGV4dCA/IGNvbnRleHQtPm5l
dHdvcmtBY2Nlc3NNYW5hZ2VyKCktPmNvb2tpZUphcigpIDogU2hhcmVkQ29va2llSmFyUXQ6OnNo
YXJlZCgpOworICAgIFFOZXR3b3JrQ29va2llSmFyKiBqYXIgPSBzZXNzaW9uLmNvbnRleHQoKSA/
IHNlc3Npb24uY29udGV4dCgpLT5uZXR3b3JrQWNjZXNzTWFuYWdlcigpLT5jb29raWVKYXIoKSA6
IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKICAgICBpZiAoIWphcikKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogCkBAIC0xMTEsNDMgKzExMSw0MyBAQCBTdHJpbmcgY29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoTmV0CiAgICAgcmV0dXJuIHJlc3VsdENvb2tpZXMuam9pbihRTGF0
aW4xU3RyaW5nKCI7ICIpKTsKIH0KIAotYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29u
dGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8q
dXJsKi8pCitib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8p
CiB7Ci0gICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IGNvbnRleHQgPyBjb250ZXh0LT5uZXR3
b3JrQWNjZXNzTWFuYWdlcigpLT5jb29raWVKYXIoKSA6IFNoYXJlZENvb2tpZUphclF0OjpzaGFy
ZWQoKTsKKyAgICBRTmV0d29ya0Nvb2tpZUphciogamFyID0gc2Vzc2lvbi5jb250ZXh0KCkgPyBz
ZXNzaW9uLmNvbnRleHQoKS0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBT
aGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgcmV0dXJuICEhamFyOwogfQogCi1ib29s
IGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8q
Zmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovLCBWZWN0b3I8Q29va2llPiYgcmF3Q29v
a2llcykKK2Jvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovLCBW
ZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBs
ZW1lbnRlZAogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKICAgICByZXR1cm4gZmFsc2U7IC8vIHJl
dHVybiB0cnVlIHdoZW4gaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxldGVDb29raWUoTmV0d29y
a2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKK3ZvaWQgZGVsZXRlQ29v
a2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJp
bmcmKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZ2V0
SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIEhhc2hTZXQ8
U3RyaW5nPiYgaG9zdG5hbWVzKQordm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVz
KQogewotICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgIWNvbnRleHQpOyAvLyBOb3QgeWV0IGlt
cGxlbWVudGVkIGZvciBjb29raWUgamFycyBvdGhlciB0aGFuIHRoZSBzaGFyZWQgb25lLgorICAg
IEFTU0VSVF9VTlVTRUQoc2Vzc2lvbiwgIXNlc3Npb24uY29udGV4dCgpKTsgLy8gTm90IHlldCBp
bXBsZW1lbnRlZCBmb3IgY29va2llIGphcnMgb3RoZXIgdGhhbiB0aGUgc2hhcmVkIG9uZS4KICAg
ICBTaGFyZWRDb29raWVKYXJRdCogamFyID0gU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOwog
ICAgIGlmIChqYXIpCiAgICAgICAgIGphci0+Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoaG9zdG5h
bWVzKTsKIH0KIAotdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZXNG
b3JIb3N0bmFtZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IFN0
cmluZyYgaG9zdG5hbWUpCiB7Ci0gICAgQVNTRVJUX1VOVVNFRChjb250ZXh0LCAhY29udGV4dCk7
IC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9yIGNvb2tpZSBqYXJzIG90aGVyIHRoYW4gdGhlIHNo
YXJlZCBvbmUuCisgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uLCAhc2Vzc2lvbi5jb250ZXh0KCkp
OyAvLyBOb3QgeWV0IGltcGxlbWVudGVkIGZvciBjb29raWUgamFycyBvdGhlciB0aGFuIHRoZSBz
aGFyZWQgb25lLgogICAgIFNoYXJlZENvb2tpZUphclF0KiBqYXIgPSBTaGFyZWRDb29raWVKYXJR
dDo6c2hhcmVkKCk7CiAgICAgaWYgKGphcikKICAgICAgICAgamFyLT5kZWxldGVDb29raWVzRm9y
SG9zdG5hbWUoaG9zdG5hbWUpOwogfQogCi12b2lkIGRlbGV0ZUFsbENvb2tpZXMoTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQpCit2b2lkIGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQogewotICAgIEFTU0VSVF9VTlVTRUQoY29udGV4dCwgIWNv
bnRleHQpOyAvLyBOb3QgeWV0IGltcGxlbWVudGVkIGZvciBjb29raWUgamFycyBvdGhlciB0aGFu
IHRoZSBzaGFyZWQgb25lLgorICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbiwgIXNlc3Npb24uY29u
dGV4dCgpKTsgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBmb3IgY29va2llIGphcnMgb3RoZXIgdGhh
biB0aGUgc2hhcmVkIG9uZS4KICAgICBTaGFyZWRDb29raWVKYXJRdCogamFyID0gU2hhcmVkQ29v
a2llSmFyUXQ6OnNoYXJlZCgpOwogICAgIGlmIChqYXIpCiAgICAgICAgIGphci0+ZGVsZXRlQWxs
Q29va2llcygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0
d29ya1JlcGx5SGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAJKHJldmlzaW9uIDEzODQxMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjaW5jbHVkZSAiQmxvYkRh
dGEuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0
cnkuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlc291cmNl
SGFuZGxlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZUhhbmRsZUludGVybmFsLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvQ29va2llSmFyU291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwCShyZXZpc2lvbiAxMzg0
MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ29va2llSmFyU291
cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDkgKzMyLDExIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotc3RhdGljIFNvdXBDb29raWVKYXIqIGNvb2tpZUphckZvckNvbnRleHQoTmV0d29y
a2luZ0NvbnRleHQqIGNvbnRleHQpCitzdGF0aWMgU291cENvb2tpZUphciogY29va2llSmFyRm9y
U2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24pCiB7Ci0gICAgcmV0
dXJuIFNPVVBfQ09PS0lFX0pBUihzb3VwX3Nlc3Npb25fZ2V0X2ZlYXR1cmUoY29udGV4dC0+c291
cFNlc3Npb24oKSwgU09VUF9UWVBFX0NPT0tJRV9KQVIpKTsKKyAgICBpZiAoIXNlc3Npb24uY29u
dGV4dCgpKQorICAgICAgICByZXR1cm4gc291cENvb2tpZUphcigpOworICAgIHJldHVybiBTT1VQ
X0NPT0tJRV9KQVIoc291cF9zZXNzaW9uX2dldF9mZWF0dXJlKHNlc3Npb24uY29udGV4dCgpLT5z
b3VwU2Vzc2lvbigpLCBTT1VQX1RZUEVfQ09PS0lFX0pBUikpOwogfQogCiBzdGF0aWMgR1JlZlB0
cjxTb3VwQ29va2llSmFyPiYgZGVmYXVsdENvb2tpZUphcigpCkBAIC03Myw5ICs3NSw5IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBodHRwT25seUNvb2tpZUV4aXN0cygKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKK3ZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgU291cENvb2tpZUphciogamFyID0gY29udGV4dCA/IGNv
b2tpZUphckZvckNvbnRleHQoY29udGV4dCkgOiBzb3VwQ29va2llSmFyKCk7CisgICAgU291cENv
b2tpZUphciogamFyID0gY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKICAgICBpZiAoIWph
cikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMDcsOSArMTA5LDkgQEAgdm9pZCBzZXRDb29raWVz
RnJvbURPTShOZXR3b3JraW5nQ29udGV4dAogICAgIHNvdXBfY29va2llc19mcmVlKGV4aXN0aW5n
Q29va2llcyk7CiB9CiAKLXN0YXRpYyBTdHJpbmcgY29va2llc0ZvckNvbnRleHQoTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBmb3JIVFRQSGVhZGVyKQor
c3RhdGljIFN0cmluZyBjb29raWVzRm9yU2Vzc2lvbihjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBmb3JIVFRQSGVhZGVyKQogewotICAg
IFNvdXBDb29raWVKYXIqIGphciA9IGNvbnRleHQgPyBjb29raWVKYXJGb3JDb250ZXh0KGNvbnRl
eHQpIDogc291cENvb2tpZUphcigpOworICAgIFNvdXBDb29raWVKYXIqIGphciA9IGNvb2tpZUph
ckZvclNlc3Npb24oc2Vzc2lvbik7CiAgICAgaWYgKCFqYXIpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKIApAQCAtMTE4LDI1ICsxMjAsMjUgQEAgc3RhdGljIFN0cmluZyBjb29raWVzRm9yQ29u
dGV4dChOZXR3b3JraQogICAgIHJldHVybiBTdHJpbmc6OmZyb21VVEY4KGNvb2tpZXMuZ2V0KCkp
OwogfQogCi1TdHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
Y29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwm
IHVybCkKIHsKLSAgICByZXR1cm4gY29va2llc0ZvckNvbnRleHQoY29udGV4dCwgdXJsLCBmYWxz
ZSk7CisgICAgcmV0dXJuIGNvb2tpZXNGb3JTZXNzaW9uKHNlc3Npb24sIHVybCwgZmFsc2UpOwog
fQogCi1TdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwp
CitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VS
TCYgdXJsKQogewotICAgIHJldHVybiBjb29raWVzRm9yQ29udGV4dChjb250ZXh0LCB1cmwsIHRy
dWUpOworICAgIHJldHVybiBjb29raWVzRm9yU2Vzc2lvbihzZXNzaW9uLCB1cmwsIHRydWUpOwog
fQogCi1ib29sIGNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKK2Jvb2wgY29va2ll
c0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJM
JiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKIHsKLSAgICByZXR1cm4gISFj
b29raWVKYXJGb3JDb250ZXh0KGNvbnRleHQpOworICAgIHJldHVybiAhIWNvb2tpZUphckZvclNl
c3Npb24oc2Vzc2lvbik7CiB9CiAKLWJvb2wgZ2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCwg
VmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywg
Y29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKICAgICByYXdD
b29raWVzLmNsZWFyKCk7Ci0gICAgU291cENvb2tpZUphciogamFyID0gY29udGV4dCA/IGNvb2tp
ZUphckZvckNvbnRleHQoY29udGV4dCkgOiBzb3VwQ29va2llSmFyKCk7CisgICAgU291cENvb2tp
ZUphciogamFyID0gY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKICAgICBpZiAoIWphcikK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0xNTcsOSArMTU5LDkgQEAgYm9vbCBnZXRSYXdD
b29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjbwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lk
IGRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJs
LCBjb25zdCBTdHJpbmcmIG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1l
KQogewotICAgIFNvdXBDb29raWVKYXIqIGphciA9IGNvbnRleHQgPyBjb29raWVKYXJGb3JDb250
ZXh0KGNvbnRleHQpIDogc291cENvb2tpZUphcigpOworICAgIFNvdXBDb29raWVKYXIqIGphciA9
IGNvb2tpZUphckZvclNlc3Npb24oc2Vzc2lvbik7CiAgICAgaWYgKCFqYXIpCiAgICAgICAgIHJl
dHVybjsKIApAQCAtMTc4LDkgKzE4MCw5IEBAIHZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtpbmdD
b250ZXh0KiBjb24KICAgICB9CiB9CiAKLXZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0
d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQordm9p
ZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQogewotICAgIFNvdXBDb29raWVKYXIq
IGNvb2tpZUphciA9IGNvbnRleHQgPyBjb29raWVKYXJGb3JDb250ZXh0KGNvbnRleHQpIDogc291
cENvb2tpZUphcigpOworICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphciA9IGNvb2tpZUphckZv
clNlc3Npb24oc2Vzc2lvbik7CiAgICAgR093blB0cjxHU0xpc3Q+IGNvb2tpZXMoc291cF9jb29r
aWVfamFyX2FsbF9jb29raWVzKGNvb2tpZUphcikpOwogICAgIGZvciAoR1NMaXN0KiBpdGVtID0g
Y29va2llcy5nZXQoKTsgaXRlbTsgaXRlbSA9IGdfc2xpc3RfbmV4dChpdGVtKSkgewogICAgICAg
ICBHT3duUHRyPFNvdXBDb29raWU+IGNvb2tpZShzdGF0aWNfY2FzdDxTb3VwQ29va2llKj4oaXRl
bS0+ZGF0YSkpOwpAQCAtMTkwLDEwICsxOTIsMTAgQEAgdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29v
a2llcyhOZXR3b3JraW5nQwogICAgIH0KIH0KIAotdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5h
bWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit2
b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7CiAgICAgQ1N0cmluZyBob3N0TmFt
ZVN0cmluZyA9IGhvc3RuYW1lLnV0ZjgoKTsKLSAgICBTb3VwQ29va2llSmFyKiBjb29raWVKYXIg
PSBjb250ZXh0ID8gY29va2llSmFyRm9yQ29udGV4dChjb250ZXh0KSA6IHNvdXBDb29raWVKYXIo
KTsKKyAgICBTb3VwQ29va2llSmFyKiBjb29raWVKYXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNl
c3Npb24pOwogICAgIEdPd25QdHI8R1NMaXN0PiBjb29raWVzKHNvdXBfY29va2llX2phcl9hbGxf
Y29va2llcyhjb29raWVKYXIpKTsKICAgICBmb3IgKEdTTGlzdCogaXRlbSA9IGNvb2tpZXMuZ2V0
KCk7IGl0ZW07IGl0ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAgICAgICAgU291cENvb2tp
ZSogY29va2llID0gc3RhdGljX2Nhc3Q8U291cENvb2tpZSo+KGl0ZW0tPmRhdGEpOwpAQCAtMjAz
LDkgKzIwNSw5IEBAIHZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtpbmcKICAg
ICB9CiB9CiAKLXZvaWQgZGVsZXRlQWxsQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4
dCkKK3ZvaWQgZGVsZXRlQWxsQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24pCiB7Ci0gICAgU291cENvb2tpZUphciogY29va2llSmFyID0gY29udGV4dCA/IGNvb2tp
ZUphckZvckNvbnRleHQoY29udGV4dCkgOiBzb3VwQ29va2llSmFyKCk7CisgICAgU291cENvb2tp
ZUphciogY29va2llSmFyID0gY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKICAgICBHT3du
UHRyPEdTTGlzdD4gY29va2llcyhzb3VwX2Nvb2tpZV9qYXJfYWxsX2Nvb2tpZXMoY29va2llSmFy
KSk7CiAgICAgZm9yIChHU0xpc3QqIGl0ZW0gPSBjb29raWVzLmdldCgpOyBpdGVtOyBpdGVtID0g
Z19zbGlzdF9uZXh0KGl0ZW0pKSB7CiAgICAgICAgIFNvdXBDb29raWUqIGNvb2tpZSA9IHN0YXRp
Y19jYXN0PFNvdXBDb29raWUqPihpdGVtLT5kYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAJKHJldmlzaW9uIDEzODQxMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9ETlNTb3VwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiR093blB0clNvdXAuaCIK
ICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VI
YW5kbGVTb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAkocmV2aXNpb24gMTM4NDExKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJMb2NhbGl6ZWRTdHJp
bmdzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnku
aCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vQ29va2ll
SmFyV2luLmNwcAkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay93aW4vQ29va2llSmFyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgs
NyBAQAogCiAjaW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUg
Ik5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNs
dWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVkZSA8V2luaW5ldC5oPgpAQCAtMzUsNyArMzYsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya2lu
Z0NvbnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZh
bHVlKQordm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewog
ICAgIC8vIEZJWE1FOiBEZWFsIHdpdGggZmlyc3RQYXJ0eSBhcmd1bWVudC4KICAgICBTdHJpbmcg
c3RyID0gdXJsLnN0cmluZygpOwpAQCAtNDMsNyArNDQsNyBAQCB2b2lkIHNldENvb2tpZXNGcm9t
RE9NKE5ldHdvcmtpbmdDb250ZXh0CiAgICAgSW50ZXJuZXRTZXRDb29raWUoc3RyLmNoYXJhY3Rl
cnNXaXRoTnVsbFRlcm1pbmF0aW9uKCksIDAsIHZhbC5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5h
dGlvbigpKTsKIH0KIAotU3RyaW5nIGNvb2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqLCBj
b25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKIHsK
ICAgICAvLyBGSVhNRTogRGVhbCB3aXRoIGZpcnN0UGFydHkgYXJndW1lbnQuCiAKQEAgLTY0LDQw
ICs2NSw0MCBAQCBTdHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCosCiAgICAg
cmV0dXJuIFN0cmluZzo6YWRvcHQoYnVmZmVyKTsKIH0KIAotU3RyaW5nIGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgLy8gRklYTUU6IGluY2x1ZGUg
SHR0cE9ubHkgY29va2llCi0gICAgcmV0dXJuIGNvb2tpZXNGb3JET00oY29udGV4dCwgZmlyc3RQ
YXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gY29va2llc0ZvckRPTShzZXNzaW9uLmNvbnRleHQoKSwg
Zmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29u
dGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8q
dXJsKi8pCitib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8p
CiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgZ2V0UmF3Q29va2llcyhOZXR3b3JraW5n
Q29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwm
IC8qdXJsKi8sIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBnZXRSYXdDb29raWVz
KGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJz
dFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8sIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVz
KQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiAgICAgcmF3Q29va2llcy5j
bGVhcigpOwogICAgIHJldHVybiBmYWxzZTsgLy8gcmV0dXJuIHRydWUgd2hlbiBpbXBsZW1lbnRl
ZAogfQogCi12b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmKQordm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpCiB7CiAgICAgLy8gRklYTUU6IE5v
dCB5ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhOZXR3
b3JraW5nQ29udGV4dCosIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQordm9pZCBnZXRIb3N0
bmFtZXNXaXRoQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBIYXNoU2V0PFN0
cmluZz4mIGhvc3RuYW1lcykKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAog
fQogCi12b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShOZXR3b3JraW5nQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewogICAg
IC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZvaWQgZGVsZXRlQWxsQ29va2ll
cyhOZXR3b3JraW5nQ29udGV4dCopCit2b2lkIGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJikKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAog
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VIYW5k
bGVXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
d2luL1Jlc291cmNlSGFuZGxlV2luLmNwcAkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay93aW4vUmVzb3VyY2VIYW5kbGVXaW4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiRGF0YVVSTC5oIgogI2luY2x1ZGUg
IkhUVFBQYXJzZXJzLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUg
Ik5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDEzODQxMSkKKysr
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0LDE2ICsxNDQsOSBAQCB2b2lkIE5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzZXRTCiAgICAgbV9zZXJpYWxMb2FkaW5nRW5hYmxlZCA9
IGVuYWJsZWQ7CiB9CiAKLXN0YXRpYyBSZW1vdGVOZXR3b3JraW5nQ29udGV4dCogbmV0d29ya2lu
Z0NvbnRleHQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQorc3RhdGljIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQog
ewotICAgIC8vIFRoaXMgbmV0d29ya2luZyBjb250ZXh0IGlzIG9ubHkgbmVlZGVkIHRvIGdldCBz
dG9yYWdlIHNlc3Npb24gZnJvbS4KLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkgewot
ICAgICAgICBzdGF0aWMgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQgPSBSZW1vdGVO
ZXR3b3JraW5nQ29udGV4dDo6Y3JlYXRlKGZhbHNlLCBmYWxzZSwgdHJ1ZSkubGVha1JlZigpOwot
ICAgICAgICByZXR1cm4gY29udGV4dDsKLSAgICB9IGVsc2UgewotICAgICAgICBzdGF0aWMgUmVt
b3RlTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQgPSBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6
Y3JlYXRlKGZhbHNlLCBmYWxzZSwgZmFsc2UpLmxlYWtSZWYoKTsKLSAgICAgICAgcmV0dXJuIGNv
bnRleHQ7Ci0gICAgfQorICAgIHJldHVybiBwcml2YXRlQnJvd3NpbmdFbmFibGVkID8gUmVtb3Rl
TmV0d29ya2luZ0NvbnRleHQ6OnByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSA6IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxvYWQoYm9vbCBwcml2YXRlQnJvd3NpbmdF
bmFibGVkLCB1aW50NjRfdCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QpCkBAIC0xNjQsMzIgKzE1NywzMiBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpzdGFyCiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNG
b3JET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJiB1cmwsIFN0cmluZyYgcmVzdWx0KQogewotICAgIHJlc3VsdCA9IFdlYkNv
cmU6OmNvb2tpZXNGb3JET00obmV0d29ya2luZ0NvbnRleHQocHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCksIGZpcnN0UGFydHksIHVybCk7CisgICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llc0ZvckRP
TShzdG9yYWdlU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJs
KTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zy
b21ET00oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewotICAgIFdl
YkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKG5ldHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CisgICAgV2ViQ29yZTo6
c2V0Q29va2llc0Zyb21ET00oc3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCks
IGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Y29va2llc0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFi
bGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGJvb2wmIHJlc3Vs
dCkKIHsKLSAgICByZXN1bHQgPSBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChuZXR3b3JraW5nQ29u
dGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXN1
bHQgPSBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzdG9yYWdlU2Vzc2lvbihwcml2YXRlQnJvd3Np
bmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoYm9vbCBwcml2YXRl
QnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmws
IFN0cmluZyYgcmVzdWx0KQogewotICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKG5ldHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJsZWQp
LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBm
aXJzdFBhcnR5LCB1cmwpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpnZXRSYXdDb29raWVzKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmVzdWx0KQogewot
ICAgIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMobmV0d29ya2luZ0NvbnRleHQocHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCksIGZpcnN0UGFydHksIHVybCwgcmVzdWx0KTsKKyAgICBXZWJDb3JlOjpnZXRS
YXdDb29raWVzKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBh
cnR5LCB1cmwsIHJlc3VsdCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OmRlbGV0ZUNvb2tpZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIFdlYkNvcmU6OmRlbGV0ZUNv
b2tpZShuZXR3b3JraW5nQ29udGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgdXJsLCBjb29r
aWVOYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc3RvcmFnZVNlc3Npb24ocHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCksIHVybCwgY29va2llTmFtZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQ
cm9jZXNzTWFpbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWluTWFjLm1tCShyZXZpc2lvbiAxMzg0MTEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWluTWFjLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0ICJDb21tYW5kTGluZS5o
IgogI2ltcG9ydCAiRW52aXJvbm1lbnRVdGlsaXRpZXMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9j
ZXNzLmgiCisjaW1wb3J0ICJXZWJTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPFdlYkNvcmUv
UnVuTG9vcC5oPgogI2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+Ci0jaW1wb3J0IDxX
ZWJTeXN0ZW1JbnRlcmZhY2UuaD4KICNpbXBvcnQgPG1hY2gvbWFjaF9lcnJvci5oPgogI2ltcG9y
dCA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW1wb3J0IDxzZXJ2ZXJzL2Jvb3Rz
dHJhcC5oPgpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5l
dHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDEzODQxMSkKKysr
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
dm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CiAgICAgc3RhdGljIHZvaWQgZGVz
dHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKIAorICAgIHN0YXRpYyBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsgLy8gQ2FuIG9ubHkg
YmUgY2FsbGVkIHdoZW4gdGhlIHNlc3Npb24gZXhpc3RzLgorCiBwcml2YXRlOgogICAgIFJlbW90
ZU5ldHdvcmtpbmdDb250ZXh0KGJvb2wgbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MsIGJvb2wgbG9j
YWxGaWxlQ29udGVudFNuaWZmaW5nRW5hYmxlZCwgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVk
KTsKIApAQCAtNDksOCArNTEsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIG5lZWRz
U2l0ZVNwZWNpZmljUXVpcmtzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGxv
Y2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VT
ZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBOU09wZXJhdGlvblF1ZXVlICpz
Y2hlZHVsZWRPcGVyYXRpb25RdWV1ZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JikgY29uc3QgT1ZFUlJJREU7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0J
KHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9S
ZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsMTIg
QEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0
aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbjsK
K3N0YXRpYyBPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiYgcHJpdmF0ZUJyb3dzaW5nU3Rv
cmFnZVNlc3Npb24oKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiwgc2Vzc2lvbiwgKCkp
OworICAgIHJldHVybiBzZXNzaW9uOworfQogCiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6UmVt
b3RlTmV0d29ya2luZ0NvbnRleHQoYm9vbCBuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcywgYm9vbCBs
b2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkLCBib29sIHByaXZhdGVCcm93c2luZ0VuYWJs
ZWQpCiAgICAgOiBtX25lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKG5lZWRzU2l0ZVNwZWNpZmljUXVp
cmtzKQpAQCAtNjMsMTkgKzY4LDIwIEBAIGJvb2wgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6Omxv
Y2FsRmlsZUMKICAgICByZXR1cm4gbV9sb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkOwog
fQogCi1ib29sIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjppblByaXZhdGVCcm93c2luZ01vZGUo
KSBjb25zdAorTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6
c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGVCcm93c2luZ0Vu
YWJsZWQ7CisgICAgaWYgKG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkgeworICAgICAgICBBU1NF
UlQocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSk7CisgICAgICAgIHJldHVybiAqcHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKTsKKyAgICB9CisKKyAgICByZXR1cm4gTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0KIAotQ0ZVUkxTdG9y
YWdlU2Vzc2lvblJlZiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBj
b25zdAorTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6cHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7Ci0gICAgaWYgKGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgp
KSB7Ci0gICAgICAgIEFTU0VSVChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbik7Ci0gICAg
ICAgIHJldHVybiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbjsKLSAgICB9Ci0gICAgLy8g
RklYTUUgKE5ldHdvcmtQcm9jZXNzKTogUmV0dXJuIGEgZGVmYXVsdCBzZXNzaW9uIHRoYXQncyB1
c2VkIGZvciB0ZXN0aW5nLgotICAgIHJldHVybiAwOworICAgIEFTU0VSVChwcml2YXRlQnJvd3Np
bmdTdG9yYWdlU2Vzc2lvbigpKTsKKyAgICByZXR1cm4gKnByaXZhdGVCcm93c2luZ1N0b3JhZ2VT
ZXNzaW9uKCk7CiB9CiAKIE5TT3BlcmF0aW9uUXVldWUgKlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0
OjpzY2hlZHVsZWRPcGVyYXRpb25RdWV1ZSgpIGNvbnN0CkBAIC0xMDgsMjMgKzExNCwxOCBAQCB2
b2lkIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRQcml2YXRlCiAKIHZvaWQgUmVtb3RlTmV0
d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewotICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNz
aW9uKQorICAgIGlmIChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBBU1NFUlQoIXByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRp
ZmllckJhc2UoKS5pc051bGwoKSk7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50
aWZpZXIgPSBTdHJpbmcocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFz
ZSgpICsgIi5Qcml2YXRlQnJvd3NpbmciKS5jcmVhdGVDRlN0cmluZygpOwogCi0gICAgcHJpdmF0
ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24gPSBXS0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihj
ZklkZW50aWZpZXIuZ2V0KCkpOworICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkg
PSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24ocHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpKTsKIH0KIAogdm9pZCBS
ZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQog
ewotICAgIGlmICghcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pCi0gICAgICAgIHJldHVy
bjsKLQotICAgIENGUmVsZWFzZShwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbik7Ci0gICAg
cHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24gPSAwOworICAgIHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uKCkgPSBudWxscHRyOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlck1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Q
cm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlck1hYy5tbQkocmV2aXNpb24gMTM4NDEx
KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9D
dXN0b21Qcm90b2NvbE1hbmFnZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vz
cy5oIgogI2ltcG9ydCA8V2ViQ29yZS9LVVJMLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNl
RXJyb3IuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5j
aGVyRWZsLmNwcAkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Miw3ICsyMiw5IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUHJvY2Vz
c0V4ZWN1dGFibGVQYXRoLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvTmV0d29ya2luZ0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxl
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9j
ZXNzTGF1bmNoZXJHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9MYXVuY2hlci9ndGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcAkocmV2aXNpb24gMTM4NDExKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJH
dGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw5IEBACiAKICNpbmNsdWRlICJDb25u
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmls
ZVN5c3RlbS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya2luZ0NvbnRleHQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29w
Lmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTA0Myw3ICsxMDQzLDYgQEAKIAkJRTFCNzg0NzMxNjNGMjUzRTAwMDdCNjkyIC8qIFJl
bW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTFCNzg0NzIxNjNGMjUzRTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtp
bmdDb250ZXh0Lm1tICovOyB9OwogCQlFMUNDMUI5MDEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJ
bmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUND
MUI4RTEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvLmggKi87IH07CiAJCUUxQ0MxQjkxMTJE
N0VBREYwMDYyNTgzOCAvKiBQcmludEluZm9NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUNDMUI4RjEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJ
bmZvTWFjLm1tICovOyB9OwotCQlFMUQyMjk3MTE2NTJEQzUyMDBCQUE0QkQgLyogV2ViUGxhdGZv
cm1TdHJhdGVnaWVzTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTFEMjI5NkUxNjUyREI5QzAwQkFBNEJEIC8qIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
c01hYy5tbSAqLzsgfTsKIAkJRTFFREZEQTYxNjI4ODY4RTAwMzlFQ0RBIC8qIE1haW5NYWNQcm9j
ZXNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
NkZBMzEwMTFFMzkyMUUwMERCMTM3MSAvKiBNYWluTWFjUHJvY2Vzcy5jcHAgKi87IH07CiAJCUUx
RURGREE3MTYyODg2OTYwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRURGRDlCMTYy
ODdEMEIwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbSAqLzsgfTsKIAkJ
RTFFREZEQTgxNjI4ODY5OTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYWMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVERkRBMjE2Mjg4
MzhDMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01hYy5tbSAqLzsgfTsKQEAgLTIzNDQs
NyArMjM0Myw2IEBACiAJCUUxQjc4NDcyMTYzRjI1M0UwMDA3QjY5MiAvKiBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJl
bW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
MUNDMUI4RTEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFByaW50SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlFMUNDMUI4RjEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvTWFjLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUHJpbnRJbmZvTWFjLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlFMUQyMjk2RTE2NTJEQjlDMDBCQUE0QkQgLyogV2ViUGxhdGZv
cm1TdHJhdGVnaWVzTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFMUVERkQ5ODE2Mjg3QkQxMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01haW4u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzc01h
aW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFFREZEOUIxNjI4N0QwQjAwMzlF
Q0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYWluTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzc01haW5NYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRURGRDlEMTYyODdGMTkwMDM5RUNEQSAvKiBTaGFy
ZWRXb3JrZXJQcm9jZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJl
ZFdvcmtlclByb2Nlc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM3MzMsNyAr
MzczMSw2IEBACiAJCQkJQkMxMTFBREYxMTJGNUJDMjAwMzM3QkFCIC8qIFdlYkVycm9yc01hYy5t
bSAqLywKIAkJCQk5MzkxRjI4MzEyMUIzOEY1MDBFQkY3RTggLyogV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5oICovLAogCQkJCTkzOTFGMjg0MTIxQjM4RjUwMEVCRjdFOCAvKiBXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0Lm1tICovLAotCQkJCUUxRDIyOTZFMTY1MkRCOUMwMEJBQTRCRCAvKiBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXNNYWMubW0gKi8sCiAJCQkJQkNDNDNBQzYxMjdCOTlERTAwMzE3
RjE2IC8qIFdlYlBvcHVwTWVudU1hYy5tbSAqLywKIAkJCQlCQ0M1NzE1OTExNUFEQUVGMDAxQ0NB
RjkgLyogV2ViU3lzdGVtSW50ZXJmYWNlLmggKi8sCiAJCQkJQkNDNTcxNUExMTVBREFFRjAwMUND
QUY5IC8qIFdlYlN5c3RlbUludGVyZmFjZS5tbSAqLywKQEAgLTU5NzgsNyArNTk3NSw2IEBACiAJ
CQkJNTEyMTc0NjAxNjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTUxMjE3NDY0MTY0QzIxMzcwMDM3QTVDMSAvKiBXZWJSZXNvdXJjZUJ1
ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUYxQUM2QjE2NTE3NTlFMDBDMTdEN0YgLyog
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gaW4gU291cmNlcyAqLywKLQkJCQlFMUQyMjk3
MTE2NTJEQzUyMDBCQUE0QkQgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUFBM0Q3NUIxNjUxQjQ0RjAwODcxM0QwIC8qIFJlbW90ZUxheWVyVHJlZUhv
c3QubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQUEzRDc2MTE2NTFCN0QzMDA4NzEzRDAgLyogUmVt
b3RlTGF5ZXJUcmVlSG9zdE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MUZEMThCNTE2NTFGQkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBpbiBT
b3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3Bw
CShyZXZpc2lvbiAxMzg0MTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nl
c3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvTWVtb3J5U3RhdGlzdGljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQVhPYmplY3RD
YWNoZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Dcm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Gb250Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250Q2FjaGUuaD4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5j
cHAJKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2ll
cy9XZWJDb29raWVNYW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llU3RvcmFnZS5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0
Zm9ybUNvb2tpZUphci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTU1LDcgKzU2
LDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNXaXRoQwogewogICAgIEhh
c2hTZXQ8U3RyaW5nPiBob3N0bmFtZXM7CiAKLSAgICBXZWJDb3JlOjpnZXRIb3N0bmFtZXNXaXRo
Q29va2llcygwLCBob3N0bmFtZXMpOworICAgIFdlYkNvcmU6OmdldEhvc3RuYW1lc1dpdGhDb29r
aWVzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIGhvc3Ru
YW1lcyk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBob3N0bmFtZUxpc3Q7CiAgICAgY29weVRvVmVj
dG9yKGhvc3RuYW1lcywgaG9zdG5hbWVMaXN0KTsKQEAgLTY1LDEyICs2NiwxMiBAQCB2b2lkIFdl
YkNvb2tpZU1hbmFnZXI6OmdldEhvc3RuYW1lc1dpdGhDCiAKIHZvaWQgV2ViQ29va2llTWFuYWdl
cjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7Ci0g
ICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKDAsIGhvc3RuYW1lKTsKKyAgICBX
ZWJDb3JlOjpkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpk
ZWZhdWx0U3RvcmFnZVNlc3Npb24oKSwgaG9zdG5hbWUpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1h
bmFnZXI6OmRlbGV0ZUFsbENvb2tpZXMoKQogewotICAgIFdlYkNvcmU6OmRlbGV0ZUFsbENvb2tp
ZXMoMCk7CisgICAgV2ViQ29yZTo6ZGVsZXRlQWxsQ29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2Vy
OjpzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKQpJbmRleDogU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9Eb3dubG9hZHMvZWZsL0Rvd25sb2FkU291cEVycm9yc0VmbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvZWZsL0Rvd25sb2FkU291
cEVycm9yc0VmbC5jcHAJKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvRG93bmxvYWRzL2VmbC9Eb3dubG9hZFNvdXBFcnJvcnNFZmwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRG93bmxvYWRTb3VwRXJyb3JzLmgiCiAK
ICNpbmNsdWRlIDxXZWJDb3JlL0Vycm9yc0VmbC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VFcnJvci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvZ3RrL0Rvd25sb2FkU291cEVycm9yc0d0ay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvZ3RrL0Rv
d25sb2FkU291cEVycm9yc0d0ay5jcHAJKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL2d0ay9Eb3dubG9hZFNvdXBFcnJvcnNHdGsuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRG93bmxvYWRTb3VwRXJy
b3JzLmgiCiAKICNpbmNsdWRlIDxXZWJDb3JlL0Vycm9yc0d0ay5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VFcnJvci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL21hYy9Eb3du
bG9hZE1hYy5tbQkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9Eb3dubG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsy
Niw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIkRvd25sb2FkLmgiCiAKKyNpbXBv
cnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUv
QXV0aGVudGljYXRpb25NYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuY3BwCShyZXZpc2lvbiAxMzg0MTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiAr
NzcsMTAgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaD4KICNl
bmRpZgogCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgIldlYlN5c3RlbUludGVyZmFjZS5o
IgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIApAQCAtMzAzLDcgKzMwNyw4IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnN3aXRjaE5ldHdv
cmtMb2FkZXIKIHsKICNpZiAoUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKSkgJiYgIVBM
QVRGT1JNKFdJTikKICAgICAvLyBGSVhNRSAoTmV0d29ya1Byb2Nlc3MpOiBEbyB0aGlzIGluIG5l
dHdvcmsgcHJvY2VzcywgdG9vLgotICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN3aXRj
aFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKKyAgICBJbml0V2ViQ29yZVN5c3RlbUludGVyZmFjZSgp
OworICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigp
OwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTM4NDExKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVu
dENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3Mu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJldmlzaW9uIDEzODQx
MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0xvYWRlclN0cmF0ZWd5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BsYXRmb3JtQ29va2llSmFyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVBhc3Rl
Ym9hcmQuaD4KQEAgLTExMyw5MCArMTE0LDgzIEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
Ojpub3RpZnlDb29raWUKICAgICBXZWJDb29raWVNYW5hZ2VyOjpzaGFyZWQoKS5kaXNwYXRjaENv
b2tpZXNEaWRDaGFuZ2UoKTsKIH0KIAotI2lmIFBMQVRGT1JNKFdJTikgJiYgVVNFKENGTkVUV09S
SykKLVJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBXZWJQbGF0Zm9ybVN0cmF0ZWdp
ZXM6OmRlZmF1bHRDb29raWVTdG9yYWdlKCkKLXsKLSAgICByZXR1cm4gMDsKLX0KLSNlbmRpZgot
Ci1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdD
b250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwp
CitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsKQogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIFN0cmluZyBy
ZXN1bHQ7Ci0gICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rp
b24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET00oY29udGV4dCAmJiBjb250ZXh0LT5pblByaXZhdGVC
cm93c2luZ01vZGUoKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NOjpSZXBseShyZXN1bHQpLCAwKSkKKyAgICAg
ICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0
aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
Q29va2llc0ZvckRPTShzZXNzaW9uLmlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCBmaXJzdFBh
cnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tp
ZXNGb3JET006OlJlcGx5KHJlc3VsdCksIDApKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICNlbmRpZgogCi0gICAgcmV0dXJuIFdl
YkNvcmU6OmNvb2tpZXNGb3JET00oY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1
cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQog
Ci12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0Zyb21ET00oTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
Y29va2llU3RyaW5nKQogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdl
YlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChN
ZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9N
KGNvbnRleHQgJiYgY29udGV4dC0+aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCksIGZpcnN0UGFydHks
IHVybCwgY29va2llU3RyaW5nKSwgMCk7CisgICAgICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5l
dHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24uaXNQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKCksIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKSwgMCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKIAotICAgIFdlYkNvcmU6OnNldENvb2tpZXNG
cm9tRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBXZWJD
b3JlOjpzZXRDb29raWVzRnJvbURPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0
cmluZyk7CiB9CiAKLWJvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRW5hYmxlZChO
ZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsKQogewogI2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAg
aWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAg
IGJvb2wgcmVzdWx0OwotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtD
b25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZChjb250ZXh0ICYmIGNvbnRleHQtPmlu
UHJpdmF0ZUJyb3dzaW5nTW9kZSgpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkOjpSZXBseShyZXN1bHQpLCAw
KSkKKyAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigp
LT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Q29va2llc0VuYWJsZWQoc2Vzc2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24o
KSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzOjpDb29raWVzRW5hYmxlZDo6UmVwbHkocmVzdWx0KSwgMCkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogI2VuZGlmCiAKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsK
KyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwg
dXJsKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6
OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewog
I2lmIEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgp
LnVzZXNOZXR3b3JrUHJvY2VzcygpKSB7CiAgICAgICAgIFN0cmluZyByZXN1bHQ7Ci0gICAgICAg
IGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlv
bigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnRleHQgJiYgY29udGV4dC0+aW5Qcml2YXRl
QnJvd3NpbmdNb2RlKCksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWU6OlJlcGx5KHJl
c3VsdCksIDApKQorICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25u
ZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLmlz
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
OjpSZXBseShyZXN1bHQpLCAwKSkKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBXZWJDb3JlOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOwor
ICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9u
LCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1ib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0
UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wg
V2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJs
LCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKICNpZiBFTkFCTEUoTkVUV09SS19QUk9D
RVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0d29ya1Byb2Nlc3MoKSkg
ewotICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCkt
PmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpHZXRSYXdDb29raWVzKGNvbnRleHQgJiYgY29udGV4dC0+aW5Qcml2YXRlQnJvd3Np
bmdNb2RlKCksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6R2V0UmF3Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQorICAgICAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpH
ZXRSYXdDb29raWVzKHNlc3Npb24uaXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIGZpcnN0UGFy
dHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6R2V0UmF3
Q29va2llczo6UmVwbHkocmF3Q29va2llcyksIDApKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAjZW5kaWYKIAotICAgIHJldHVybiBXZWJD
b3JlOjpnZXRSYXdDb29raWVzKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7
CisgICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwg
dXJsLCByYXdDb29raWVzKTsKIH0KIAotdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0
ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVsZXRl
Q29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJP
Q0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkp
IHsKLSAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
RGVsZXRlQ29va2llKGNvbnRleHQgJiYgY29udGV4dC0+aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCks
IHVybCwgY29va2llTmFtZSksIDApOworICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3
b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOjpEZWxldGVDb29raWUoc2Vzc2lvbi5pc1ByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oKSwgdXJsLCBjb29raWVOYW1lKSwgMCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAjZW5kaWYKIAotICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShjb250ZXh0LCB1cmwsIGNvb2tp
ZU5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1cmwsIGNvb2tpZU5h
bWUpOwogfQogCiAvLyBEYXRhYmFzZVN0cmF0ZWd5CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1T
dHJhdGVnaWVzLmgJKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU3LDE1ICs1NywxMiBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0
cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkKCkgT1ZFUlJJREU7
Ci0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JLKQotICAgIHZpcnR1YWwgUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGRlZmF1bHRDb29raWVTdG9yYWdlKCkgT1ZFUlJJ
REU7Ci0jZW5kaWYKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKFdlYkNvcmU6Ok5l
dHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJv
bURPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRl
eHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJM
JikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxk
VmFsdWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBi
b29sIGdldFJhd0Nvb2tpZXMoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNv
cmU6OkNvb2tpZT4mKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKFdl
YkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0
cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwg
Y29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVk
KGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktV
UkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nv
b2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3Jl
OjpDb29raWU+JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwg
Y29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0
ZWd5CiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9X
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTAgKzM0LDggQEAgcHVibGljOgogICAgIH0K
IAogICAgIHN0YXRpYyB2b2lkIHNldFByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRp
ZmllckJhc2UoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIHZvaWQgc3dpdGNoVG9OZXdUZXN0
aW5nU2Vzc2lvbigpOwogICAgIHN0YXRpYyB2b2lkIGVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Np
b24oKTsKICAgICBzdGF0aWMgdm9pZCBkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwot
ICAgIHN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGRlZmF1bHRTdG9yYWdlU2Vzc2lvbigp
OwogICAgIHN0YXRpYyB2b2lkIHNldENvb2tpZUFjY2VwdFBvbGljeUZvckFsbENvbnRleHRzKEhU
VFBDb29raWVBY2NlcHRQb2xpY3kpOwogCiBwcml2YXRlOgpAQCAtNDgsOCArNDYsNyBAQCBwcml2
YXRlOgogCiAgICAgdmlydHVhbCBib29sIG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkgY29uc3Qg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJs
ZWQoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdN
b2RlKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVm
IHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCBXZWJDb3JlOjpTY2hlZHVsZVBhaXJIYXNoU2V0KiBzY2hlZHVsZWRSdW5Mb29w
UGFpcnMoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0IE9W
RVJSSURFOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5tbQkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjEsNyArMjEsNiBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgiCiAKLSNpbXBvcnQgPFdlYkNvcmUvQ29va2llU3Rv
cmFnZUNGTmV0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyQ2xpZW50Lmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgpA
QCAtMzIsOCArMzEsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCi1zdGF0aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBkZWZhdWx0Q0ZTdG9yYWdl
U2Vzc2lvbjsKLXN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uOworc3RhdGljIE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+JiBwcml2
YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChP
d25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiwgc2Vzc2lvbiwgKCkpOworICAgIHJldHVybiBz
ZXNzaW9uOworfQogCiBib29sIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6Om5lZWRzU2l0ZVNw
ZWNpZmljUXVpcmtzKCkgY29uc3QKIHsKQEAgLTY3LDI2ICs2OSwxNyBAQCB2b2lkIFdlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6OnNldFByaXZhCiAgICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNl
c3Npb25JZGVudGlmaWVyQmFzZSgpID0gaWRlbnRpZmllcjsKIH0KIAotdm9pZCBXZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0Ojpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkKLXsKLSAgICAvLyBT
ZXQgYSBwcml2YXRlIHNlc3Npb24gZm9yIHRlc3RpbmcgdG8gYXZvaWQgaW50ZXJmZXJpbmcgd2l0
aCBnbG9iYWwgY29va2llcy4gVGhpcyBzaG91bGQgYmUgZGlmZmVyZW50IGZyb20gcHJpdmF0ZSBi
cm93c2luZyBzZXNzaW9uLgotICAgIGlmIChkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbikKLSAgICAg
ICAgQ0ZSZWxlYXNlKGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uKTsKLSAgICBkZWZhdWx0Q0ZTdG9y
YWdlU2Vzc2lvbiA9IFdLQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU1RSKCJQcml2YXRl
IFdlYktpdCBTZXNzaW9uIikpOwotfQotCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6
OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewogICAgIC8vIEZJWE1FIChOZXR3b3Jr
UHJvY2Vzcyk6IERvbid0IGNyZWF0ZSBhbiB1bm5lY2Vzc2FyeSBzZXNzaW9uIHdoZW4gdXNpbmcg
bmV0d29yayBwcm9jZXNzLgogCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAo
cHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pCisgICAgaWYgKHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0cmluZyBiYXNlID0gcHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpID8gU3Ry
aW5nKFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0pIDogcHJpdmF0ZUJy
b3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpOwotICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gY2ZJZGVudGlmaWVyID0gU3RyaW5nKGJhc2UgKyAiLlByaXZhdGVCcm93c2luZyIp
LmNyZWF0ZUNGU3RyaW5nKCk7CisgICAgU3RyaW5nIGlkZW50aWZpZXJCYXNlID0gcHJpdmF0ZUJy
b3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpID8gU3RyaW5nKFtb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVuZGxlSWRlbnRpZmllcl0pIDogcHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpOwogCi0gICAgcHJpdmF0ZUJyb3dzaW5nU3Rv
cmFnZVNlc3Npb24gPSBXS0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIu
Z2V0KCkpOworICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkgPSBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oaWRlbnRpZmllckJhc2Up
OwogfQogCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJv
d3NpbmdTZXNzaW9uKCkKQEAgLTk0LDM5ICs4NywyOCBAQCB2b2lkIFdlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ6OmRlc3Ryb3lQCiAgICAgaWYgKCFwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lv
bikKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ0ZSZWxlYXNlKHByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uKTsKLSAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbiA9IDA7Ci19Ci0K
LUNGVVJMU3RvcmFnZVNlc3Npb25SZWYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVmYXVs
dFN0b3JhZ2VTZXNzaW9uKCkKLXsKLSAgICByZXR1cm4gZGVmYXVsdENGU3RvcmFnZVNlc3Npb247
Ci19Ci0KLWJvb2wgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6aW5Qcml2YXRlQnJvd3NpbmdN
b2RlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygp
ICYmIGZyYW1lKCktPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBw
cml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpID0gbnVsbHB0cjsKIH0KIAotQ0ZVUkxTdG9y
YWdlU2Vzc2lvblJlZiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigp
IGNvbnN0CitOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6
OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICBpZiAoaW5Qcml2YXRlQnJvd3NpbmdNb2Rl
KCkpIHsKLSAgICAgICAgQVNTRVJUKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKTsKLSAg
ICAgICAgcmV0dXJuIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uOworICAgIGJvb2wgaW5Q
cml2YXRlQnJvd3NpbmdNb2RlID0gZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpICYmIGZy
YW1lKCktPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBpZiAoaW5Q
cml2YXRlQnJvd3NpbmdNb2RlKSB7CisgICAgICAgIEFTU0VSVChwcml2YXRlQnJvd3NpbmdTdG9y
YWdlU2Vzc2lvbigpKTsKKyAgICAgICAgcmV0dXJuICpwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vz
c2lvbigpOwogICAgIH0KLSAgICByZXR1cm4gZGVmYXVsdENGU3RvcmFnZVNlc3Npb247CisgICAg
cmV0dXJuIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9
CiAKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5
Rm9yQWxsQ29udGV4dHMoSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCiB7CiAgICAgW1tO
U0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXSBzZXRDb29raWVBY2Nl
cHRQb2xpY3k6c3RhdGljX2Nhc3Q8TlNIVFRQQ29va2llQWNjZXB0UG9saWN5Pihwb2xpY3kpXTsK
IAotICAgIGlmIChSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFn
ZSA9IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCkpCisgICAgaWYgKFJldGFpblB0cjxDRkhU
VFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCkpCiAgICAgICAgIFdLU2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBwb2xpY3kpOwogCi0g
ICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKSB7Ci0gICAgICAgIFJldGFpblB0
cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBwcml2YXRlQnJvd3NpbmdDb29raWVTdG9yYWdlID0g
YWRvcHRDRihXS0NvcHlIVFRQQ29va2llU3RvcmFnZShwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vz
c2lvbikpOwotICAgICAgICBXS1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocHJpdmF0ZUJyb3dz
aW5nQ29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKKyAgICBpZiAocHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb24oKSkgeworICAgICAgICBXS1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
cHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKS0+Y29va2llU3RvcmFnZSgpLmdldCgpLCBw
b2xpY3kpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9tYWMvV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFjLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYlBsYXRmb3Jt
U3RyYXRlZ2llc01hYy5tbQkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFjLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgiCi0KLSNpbmNsdWRlICJX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJm
YWNlLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsK
LQotUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6ZGVmYXVsdENvb2tpZVN0b3JhZ2UoKQotewotICAgIGlmIChDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmIHNlc3Npb24gPSBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZWZhdWx0U3RvcmFnZVNl
c3Npb24oKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoV0tDb3B5SFRUUENvb2tpZVN0b3JhZ2Uo
c2Vzc2lvbikpOwotCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICByZXR1cm4gV0tHZXREZWZhdWx0
SFRUUENvb2tpZVN0b3JhZ2UoKTsKLSNlbHNlCi0gICAgLy8gV2hlbiB1c2luZyBOU1VSTENvbm5l
Y3Rpb24sIHdlIGFsc28gdXNlIGl0cyBzaGFyZWQgY29va2llIHN0b3JhZ2UuCi0gICAgcmV0dXJu
IDA7Ci0jZW5kaWYKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC93aW4vV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lvbiAxMzg0MTEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDggKzQ1LDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwogCiAjaWYgVVNFKENGTkVUV09SSykK
LSAgICB2aXJ0dWFsIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3Q7CisgICAg
dmlydHVhbCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkg
Y29uc3Q7CiAjZW5kaWYKIAogICAgIFN0cmluZyBtX3VzZXJBZ2VudDsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gMTM4
NDExKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSlNFbGVt
ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9KU1JhbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9N
YWluUmVzb3VyY2VMb2FkZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtpbmdDb250ZXh0
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob2RlVHJhdmVyc2FsLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbHVnaW5Eb2N1bWVudC5oPgpAQCAtMjQ4LDcg
KzI0OSw3IEBAIHZvaWQgV2ViRnJhbWU6OnN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ28KIAogI2lm
IEVOQUJMRShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVz
ZXNOZXR3b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCA9IG1fY29yZUZyYW1lLT5sb2FkZXIoKS0+bmV0d29ya2luZ0NvbnRleHQoKS0+aW5Qcml2YXRl
QnJvd3NpbmdNb2RlKCk7CisgICAgICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IG1f
Y29yZUZyYW1lLT5sb2FkZXIoKS0+bmV0d29ya2luZ0NvbnRleHQoKS0+c3RvcmFnZVNlc3Npb24o
KS5pc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsKICAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVk
KCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U3RhcnREb3dubG9hZChwcml2YXRlQnJvd3NpbmdF
bmFibGVkLCBwb2xpY3lEb3dubG9hZElELCByZXF1ZXN0KSwgMCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tCShyZXZpc2lvbiAxMzg0MTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ5
LDYgKzQ5LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9IVE1MQ29udmVydGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya2luZ0NvbnRleHQuaD4KICNpbXBvcnQgPFdlYkNv
cmUvUGFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KQEAgLTY3OCw3ICs2NzksNyBAQCBib29s
IFdlYlBhZ2U6OnBsYXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJMCiAgICAgTlNNdXRhYmxlVVJMUmVx
dWVzdCogcmVxdWVzdCA9IFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6
dXJsXTsKICAgICBbcmVxdWVzdCBzZXRWYWx1ZTooTlNTdHJpbmcqKXVzZXJBZ2VudCgpIGZvckhU
VFBIZWFkZXJGaWVsZDpAIlVzZXItQWdlbnQiXTsKICAgICBOU0NhY2hlZFVSTFJlc3BvbnNlICpj
YWNoZWRSZXNwb25zZTsKLSAgICBpZiAoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBzdG9yYWdlU2Vz
c2lvbiA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+bmV0d29ya2luZ0NvbnRl
eHQoKS0+c3RvcmFnZVNlc3Npb24oKSkKKyAgICBpZiAoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBz
dG9yYWdlU2Vzc2lvbiA9IGNvcmVQYWdlKCktPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+bmV0d29y
a2luZ0NvbnRleHQoKS0+c3RvcmFnZVNlc3Npb24oKS5wbGF0Zm9ybVNlc3Npb24oKSkKICAgICAg
ICAgY2FjaGVkUmVzcG9uc2UgPSBXS0NhY2hlZFJlc3BvbnNlRm9yUmVxdWVzdChzdG9yYWdlU2Vz
c2lvbiwgcmVxdWVzdCk7CiAgICAgZWxzZQogICAgICAgICBjYWNoZWRSZXNwb25zZSA9IFtbTlNV
UkxDYWNoZSBzaGFyZWRVUkxDYWNoZV0gY2FjaGVkUmVzcG9uc2VGb3JSZXF1ZXN0OnJlcXVlc3Rd
OwpAQCAtNjkyLDcgKzY5Myw3IEBAIHN0YXRpYyBOU0NhY2hlZFVSTFJlc3BvbnNlICpjYWNoZWRS
ZXNwb24KICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlVVJMUmVxdWVzdD4gcmVxdWVzdChBZG9wdE5T
LCBbW05TTXV0YWJsZVVSTFJlcXVlc3QgYWxsb2NdIGluaXRXaXRoVVJMOnVybF0pOwogICAgIFty
ZXF1ZXN0LmdldCgpIHNldFZhbHVlOihOU1N0cmluZyAqKXdlYlBhZ2UtPnVzZXJBZ2VudCgpIGZv
ckhUVFBIZWFkZXJGaWVsZDpAIlVzZXItQWdlbnQiXTsKIAotICAgIGlmIChDRlVSTFN0b3JhZ2VT
ZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uID0gd2ViUGFnZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1l
KCktPmxvYWRlcigpLT5uZXR3b3JraW5nQ29udGV4dCgpLT5zdG9yYWdlU2Vzc2lvbigpKQorICAg
IGlmIChDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uID0gd2ViUGFnZS0+Y29y
ZVBhZ2UoKS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5uZXR3b3JraW5nQ29udGV4dCgpLT5zdG9y
YWdlU2Vzc2lvbigpLnBsYXRmb3JtU2Vzc2lvbigpKQogICAgICAgICByZXR1cm4gV0tDYWNoZWRS
ZXNwb25zZUZvclJlcXVlc3Qoc3RvcmFnZVNlc3Npb24sIHJlcXVlc3QuZ2V0KCkpOwogCiAgICAg
cmV0dXJuIFtbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNoZV0gY2FjaGVkUmVzcG9uc2VGb3JSZXF1
ZXN0OnJlcXVlc3QuZ2V0KCldOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwv
V2ViUHJvY2Vzc01haW5FZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvZWZsL1dlYlByb2Nlc3NNYWluRWZsLmNwcAkocmV2aXNpb24gMTM4NDExKQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc01haW5FZmwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiw2ICszMiw4IEBACiAjaW5jbHVkZSAiV0tCYXNlLmgiCiAjaW5jbHVkZSA8
RWNvcmUuaD4KICNpbmNsdWRlIDxFZnJlZXQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JraW5nQ29udGV4dC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1J1bkxvb3AuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dlYlByb2Nlc3MuaD4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nlc3NNYWluR3RrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2d0ay9XZWJQcm9jZXNzTWFpbkd0ay5jcHAJ
KHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlBy
b2Nlc3NNYWluR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsOCBAQAogI2RlZmlu
ZSBMSUJTT1VQX1VTRV9VTlNUQUJMRV9SRVFVRVNUX0FQSQogCiAjaW5jbHVkZSAiV0tCYXNlLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvTmV0d29ya2luZ0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNl
SGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8V2ViS2l0
Mi9XZWJQcm9jZXNzLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9Q
bGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZs
L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHAJKHJldmlzaW9uIDEzODQx
MSkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2ll
c0VmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDM0ICs4NiwzNCBAQCB2b2lkIFBsYXRmb3Jt
U3RyYXRlZ2llc0VmbDo6bm90aWZ5Q29va2llCiB7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVN0cmF0
ZWdpZXNFZmw6OmNvb2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBQbGF0Zm9ybVN0cmF0
ZWdpZXNFZmw6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0
dXJuIFdlYkNvcmU6OmNvb2tpZXNGb3JET00oY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAg
ICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwp
OwogfQogCi12b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6c2V0Q29va2llc0Zyb21ET00oTmV0
d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIFBsYXRmb3JtU3RyYXRl
Z2llc0VmbDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0
cmluZyYgY29va2llU3RyaW5nKQogewotICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKGNv
bnRleHQsIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBXZWJDb3JlOjpzZXRD
b29raWVzRnJvbURPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CiB9
CiAKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjb29raWVzRW5hYmxlZChOZXR3b3JraW5n
Q29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJs
KQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChjb250ZXh0
LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChz
ZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVz
RWZsOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29u
dGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBs
YXRmb3JtU3RyYXRlZ2llc0VmbDo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNv
cmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZpcnN0UGFydHksIHVy
bCk7CiB9CiAKLWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpnZXRSYXdDb29raWVzKE5ldHdv
cmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdp
ZXNFZmw6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+
JiByYXdDb29raWVzKQogewotICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKGNvbnRl
eHQsIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7CisgICAgcmV0dXJuIFdlYkNvcmU6Omdl
dFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKIH0KIAot
dm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2
b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tp
ZU5hbWUpCiB7Ci0gICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKGNvbnRleHQsIHVybCwgY29va2ll
TmFtZSk7CisgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHNlc3Npb24sIHVybCwgY29va2llTmFt
ZSk7CiB9CiAKIHZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpyZWZyZXNoUGx1Z2lucygpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNF
ZmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0
Zm9ybVN0cmF0ZWdpZXNFZmwuaAkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dlYktpdC9l
ZmwvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzRWZsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDEyICs0NywxMiBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0
cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkKCk7Ci0gICAgdmly
dHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNv
bnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRl
eHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJM
JiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKFdlYkNv
cmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwg
Ym9vbCBnZXRSYXdDb29raWVzKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+Jik7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3JlOjpO
ZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsK
KyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1
YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJM
Jik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgYm9vbCBnZXRS
YXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdl
YkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2Vi
Q29yZTo6Q29va2llPiYpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0
IFN0cmluZyYpOwogCiAgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQogICAgIC8vIC0g
VXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmNwcAko
cmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxh
dGZvcm1TdHJhdGVnaWVzR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsMzQgKzgwLDM0IEBA
IHZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpub3RpZnlDb29raWUKIHsKIH0KIAotU3RyaW5n
IFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCog
Y29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5n
IFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVy
bCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShjb250ZXh0LCBmaXJzdFBh
cnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZp
cnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpzZXRDb29r
aWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQg
UGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7Ci0gICAgV2ViQ29yZTo6c2V0Q29v
a2llc0Zyb21ET00oY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOworICAg
IFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29v
a2llU3RyaW5nKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNvb2tpZXNFbmFi
bGVkKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJiB1cmwpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y29va2llc0VuYWJs
ZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNF
bmFibGVkKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNv
b2tpZXNFbmFibGVkKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLVN0cmluZyBQbGF0
Zm9ybVN0cmF0ZWdpZXNHdGs6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtp
bmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1
cmwpCitTdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwm
IGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAg
ICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwg
Zmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmdldFJh
d0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIFBs
YXRmb3JtU3RyYXRlZ2llc0d0azo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwg
VmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmdldFJh
d0Nvb2tpZXMoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKKyAgICByZXR1
cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nv
b2tpZXMpOwogfQogCi12b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6ZGVsZXRlQ29va2llKE5l
dHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
Y29va2llTmFtZSkKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpkZWxldGVDb29raWUoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgY29va2llTmFtZSkKIHsKLSAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoY29udGV4
dCwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc2Vzc2lvbiwg
dXJsLCBjb29raWVOYW1lKTsKIH0KIAogLy8gUGx1Z2luU3RyYXRlZ3kKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2ll
c0d0ay5oCShyZXZpc2lvbiAxMzg0MTEpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTIgKzQ2
LDEyIEBAIHByaXZhdGU6CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKICAgICB2
aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBj
b29raWVzRm9yRE9NKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRDb29raWVzRnJvbURPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdl
YkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJp
bmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoV2ViQ29yZTo6TmV0d29ya2lu
Z0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpLVVJMJik7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBib29sIGdldFJhd0Nv
b2tpZXMoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4m
KTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250
ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwg
U3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYp
OworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3
b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBib29sIGNvb2tp
ZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdl
YkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0
dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+
Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CiAK
ICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0
IGltcGxlbWVudGF0aW9uLgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDEzODQxMSkK
KysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUv
TW91c2VFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L1BsdWdpblZpZXdCYXNlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Byb3RlY3Rpb25TcGFjZS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291
cmNlSGFuZGxlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlTG9hZGVyLmg+CkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lvbiAxMzg0MTEpCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDEzICsyNyw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0KGZyYW1lKSk7CiAgICAgfQogCi0gICAgc3Rh
dGljIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZShj
b25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgdm9pZCBzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9u
KCk7CiAgICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwogICAg
IHN0YXRpYyB2b2lkIGRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7Ci0gICAgc3RhdGlj
IENGVVJMU3RvcmFnZVNlc3Npb25SZWYgZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7Ci0KLSAgICBz
dGF0aWMgdm9pZCBzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JUZXN0aW5nQ29udGV4dChOU0hUVFBD
b29raWVBY2NlcHRQb2xpY3kpOwogCiBwcml2YXRlOgogICAgIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQoV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQpAQCAtNDMsOCArMzgsNyBAQCBwcml2YXRlOgog
CiAgICAgdmlydHVhbCBib29sIG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkgY29uc3QgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCBib29sIGxvY2FsRmlsZUNvbnRlbnRTbmlmZmluZ0VuYWJsZWQoKSBj
b25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkg
Y29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3Jh
Z2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBXZWJDb3JlOjpTY2hlZHVsZVBhaXJIYXNoU2V0KiBzY2hlZHVsZWRSdW5Mb29wUGFpcnMo
KSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxv
Y2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0IE9WRVJSSURF
OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQkocmV2aXNpb24gMTM4NDExKQor
KysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjEsNiArMjEsNyBAQAogI2ltcG9ydCAiV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5oIgogCiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyQ2xp
ZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2ltcG9y
dCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNp
bXBvcnQgPFdlYkNvcmUvU2V0dGluZ3MuaD4KQEAgLTI4LDggKzI5LDExIEBACiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBkZWZhdWx0
Q0ZTdG9yYWdlU2Vzc2lvbjsKLXN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHByaXZhdGVC
cm93c2luZ1N0b3JhZ2VTZXNzaW9uOworc3RhdGljIE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Np
b24+JiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpCit7CisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiwgc2Vzc2lvbiwgKCkpOworICAg
IHJldHVybiBzZXNzaW9uOworfQogCiBib29sIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6Om5l
ZWRzU2l0ZVNwZWNpZmljUXVpcmtzKCkgY29uc3QKIHsKQEAgLTUxLDY5ICs1NSwyNyBAQCBSZXNv
dXJjZUVycm9yIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6CiAgICAgcmV0dXJuIGZyYW1lKCkt
PmxvYWRlcigpLT5jbGllbnQoKS0+YmxvY2tlZEVycm9yKHJlcXVlc3QpOwogfQogCi1zdGF0aWMg
U3RyaW5nJiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkKLXsK
LSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3Ry
aW5nLCBiYXNlLCAoKSk7Ci0gICAgcmV0dXJuIGJhc2U7Ci19Ci0KLXZvaWQgV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dDo6c2V0UHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVy
QmFzZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCi17Ci0gICAgcHJpdmF0ZUJyb3dzaW5nU3Rv
cmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpID0gaWRlbnRpZmllcjsKLX0KLQotdm9pZCBXZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCkKLXsKLSAg
ICAvLyBTZXQgYSBwcml2YXRlIHNlc3Npb24gZm9yIHRlc3RpbmcgdG8gYXZvaWQgaW50ZXJmZXJp
bmcgd2l0aCBnbG9iYWwgY29va2llcy4gVGhpcyBzaG91bGQgYmUgZGlmZmVyZW50IGZyb20gcHJp
dmF0ZSBicm93c2luZyBzZXNzaW9uLgotICAgIGlmIChkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbikK
LSAgICAgICAgQ0ZSZWxlYXNlKGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uKTsKLSAgICBkZWZhdWx0
Q0ZTdG9yYWdlU2Vzc2lvbiA9IFdLQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU1RSKCJQ
cml2YXRlIFdlYktpdCBTZXNzaW9uIikpOwotfQotCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0gICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKQorICAg
IGlmIChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBTdHJpbmcgYmFzZSA9IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmll
ckJhc2UoKS5pc051bGwoKSA/IFN0cmluZyhbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlk
ZW50aWZpZXJdKSA6IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2Uo
KTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmSWRlbnRpZmllciA9IFN0cmluZyhiYXNl
ICsgIi5Qcml2YXRlQnJvd3NpbmciKS5jcmVhdGVDRlN0cmluZygpOwotCi0gICAgcHJpdmF0ZUJy
b3dzaW5nU3RvcmFnZVNlc3Npb24gPSBXS0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihjZklk
ZW50aWZpZXIuZ2V0KCkpOworICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkgPSBO
ZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oW1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewotICAg
IGlmICghcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pCi0gICAgICAgIHJldHVybjsKLQot
ICAgIENGUmVsZWFzZShwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbik7Ci0gICAgcHJpdmF0
ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24gPSAwOwotfQotCi1DRlVSTFN0b3JhZ2VTZXNzaW9uUmVm
IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpCi17Ci0g
ICAgcmV0dXJuIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uOworICAgIHByaXZhdGVCcm93c2luZ1N0
b3JhZ2VTZXNzaW9uKCkgPSBudWxscHRyOwogfQogCi1ib29sIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpIGNvbnN0CitOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpICYmIGZyYW1lKCktPnNl
dHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKLX0KLQotQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0
Ci17Ci0gICAgaWYgKGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpKSB7Ci0gICAgICAgIEFTU0VSVChw
cml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbik7Ci0gICAgICAgIHJldHVybiBwcml2YXRlQnJv
d3NpbmdTdG9yYWdlU2Vzc2lvbjsKKyAgICBib29sIGluUHJpdmF0ZUJyb3dzaW5nTW9kZSA9IGZy
YW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLT5wcml2
YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgaWYgKGluUHJpdmF0ZUJyb3dzaW5nTW9kZSkgewor
ICAgICAgICBBU1NFUlQocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSk7CisgICAgICAg
IHJldHVybiAqcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKTsKICAgICB9Ci0gICAgcmV0
dXJuIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uOworICAgIHJldHVybiBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwogfQogCi12b2lkIFdlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZvclRlc3RpbmdDb250ZXh0KE5TSFRU
UENvb2tpZUFjY2VwdFBvbGljeSBwb2xpY3kpCi17Ci0gICAgQVNTRVJUKGRlZmF1bHRDRlN0b3Jh
Z2VTZXNzaW9uKTsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gZGVmYXVs
dENvb2tpZVN0b3JhZ2UgPSBhZG9wdENGKFdLQ29weUhUVFBDb29raWVTdG9yYWdlKGRlZmF1bHRD
RlN0b3JhZ2VTZXNzaW9uKSk7Ci0gICAgV0tTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGRlZmF1
bHRDb29raWVTdG9yYWdlLmdldCgpLCBwb2xpY3kpOwotfQpJbmRleDogU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJ
KHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlBsYXRmb3JtU3RyYXRlZ2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MywxMyArNTMsMTIgQEAg
cHJpdmF0ZToKIAogICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneQogICAgIHZpcnR1YWwg
dm9pZCBub3RpZnlDb29raWVzQ2hhbmdlZCgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGRlZmF1bHRDb29raWVTdG9yYWdlKCkgT1ZFUlJJ
REU7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShXZWJDb3JlOjpOZXR3b3JraW5n
Q29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OktVUkwmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oV2Vi
Q29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCBib29sIGNvb2tpZXNFbmFibGVkKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJS
SURFOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFdl
YkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBnZXRS
YXdDb29raWVzKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29r
aWU+JikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3JlOjpO
ZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29v
a2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0
cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJp
bmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2ll
PiYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29y
ZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0
cmluZyYpIE9WRVJSSURFOwogCiAgICAgLy8gV2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQogICAg
IC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMu
bW0JKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5tbQkod29ya2luZyBjb3B5KQpAQCAtODcsNDcgKzg3LDM0
IEBAIHZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpub3RpZnlDb29raWUKIHsKIH0KIAotUmV0
YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6ZGVm
YXVsdENvb2tpZVN0b3JhZ2UoKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2ll
c0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwm
IGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBpZiAoQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZiBzZXNzaW9uID0gV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVmYXVsdFN0b3Jh
Z2VTZXNzaW9uKCkpCi0gICAgICAgIHJldHVybiBhZG9wdENGKFdLQ29weUhUVFBDb29raWVTdG9y
YWdlKHNlc3Npb24pKTsKLQotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgcmV0dXJuIFdLR2V0RGVm
YXVsdEhUVFBDb29raWVTdG9yYWdlKCk7Ci0jZWxzZQotICAgIC8vIFdoZW4gdXNpbmcgTlNVUkxD
b25uZWN0aW9uLCB3ZSBhbHNvIHVzZSBpdHMgc2hhcmVkIGNvb2tpZSBzdG9yYWdlLgotICAgIHJl
dHVybiAwOwotI2VuZGlmCi19Ci0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tp
ZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IEtVUkwmIHVybCkKLXsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRP
TShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVz
Rm9yRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNv
b2tpZVN0cmluZykKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURP
TShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7Ci0g
ICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCBj
b29raWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZp
cnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29sIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJu
IFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAg
cmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7
CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBy
ZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29udGV4dCwgZmly
c3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJh
d0Nvb2tpZXMpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHks
IGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7Ci0gICAgcmV0
dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCByYXdD
b29raWVzKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBmaXJz
dFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6ZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVz
OjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKLSAgICBXZWJDb3JlOjpk
ZWxldGVDb29raWUoY29udGV4dCwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxl
dGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0KIAogdm9pZCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OnJlZnJlc2hQbHVnaW5zKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzks
OCArMzksOSBAQAogI2ltcG9ydCAiV2ViS2l0VmVyc2lvbkNoZWNrcy5oIgogI2ltcG9ydCAiV2Vi
TlNEaWN0aW9uYXJ5RXh0cmFzLmgiCiAjaW1wb3J0ICJXZWJOU1VSTEV4dHJhcy5oIgorI2ltcG9y
dCAiV2ViU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2VDRk5ldC5oPgorI2lt
cG9ydCA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaD4KICNpbXBvcnQgPFdlYkNvcmUv
UmVzb3VyY2VIYW5kbGUuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtMTI4Niwx
MiArMTI4NywxMyBAQCArICh2b2lkKV9zZXRJQkNyZWF0b3JJRDooTlNTdHJpbmcgKilzdHJpCiAK
ICsgKHZvaWQpX3N3aXRjaE5ldHdvcmtMb2FkZXJUb05ld1Rlc3RpbmdTZXNzaW9uCiB7Ci0gICAg
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOwor
ICAgIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKCk7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7CiB9CiAKICsgKHZvaWQpX3NldEN1cnJl
bnROZXR3b3JrTG9hZGVyU2Vzc2lvbkNvb2tpZUFjY2VwdFBvbGljeTooTlNIVFRQQ29va2llQWNj
ZXB0UG9saWN5KXBvbGljeQogewotICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldENv
b2tpZUFjY2VwdFBvbGljeUZvclRlc3RpbmdDb250ZXh0KHBvbGljeSk7CisgICAgV0tTZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VT
ZXNzaW9uKCkuY29va2llU3RvcmFnZSgpLmdldCgpLCBwb2xpY3kpOwogfQogCiAtIChCT09MKWlz
RE9NUGFzdGVBbGxvd2VkCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShy
ZXZpc2lvbiAxMzg0MTEpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0J
KHdvcmtpbmcgY29weSkKQEAgLTIwMTYsNyArMjAxNiw3IEBAIC0gKE5TQ2FjaGVkVVJMUmVzcG9u
c2UgKilfY2FjaGVkUmVzcG9uc2UKICAgICBpZiAoIV9wcml2YXRlLT5wYWdlKQogICAgICAgICBy
ZXR1cm4gbmlsOwogCi0gICAgaWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Np
b24gPSBfcHJpdmF0ZS0+cGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5uZXR3b3JraW5nQ29u
dGV4dCgpLT5zdG9yYWdlU2Vzc2lvbigpKQorICAgIGlmIChDRlVSTFN0b3JhZ2VTZXNzaW9uUmVm
IHN0b3JhZ2VTZXNzaW9uID0gX3ByaXZhdGUtPnBhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+
bmV0d29ya2luZ0NvbnRleHQoKS0+c3RvcmFnZVNlc3Npb24oKS5wbGF0Zm9ybVNlc3Npb24oKSkK
ICAgICAgICAgY2FjaGVkUmVzcG9uc2UgPSBXS0NhY2hlZFJlc3BvbnNlRm9yUmVxdWVzdChzdG9y
YWdlU2Vzc2lvbiwgcmVxdWVzdC5nZXQoKSk7CiAgICAgZWxzZQogICAgICAgICBjYWNoZWRSZXNw
b25zZSA9IFtbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNoZV0gY2FjaGVkUmVzcG9uc2VGb3JSZXF1
ZXN0OnJlcXVlc3QuZ2V0KCldOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5jcHAJKHJldmlzaW9uIDEzODQx
MSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVz
UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSwzNCArOTksMzQgQEAgdm9pZCBQbGF0Zm9ybVN0
cmF0ZWdpZXNRdDo6bm90aWZ5Q29va2llcwogewogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVn
aWVzUXQ6OmNvb2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdp
ZXNRdDo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4g
V2ViQ29yZTo6Y29va2llc0ZvckRPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJl
dHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9
CiAKLXZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OnNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtp
bmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNR
dDo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
Y29va2llU3RyaW5nKQogewotICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKGNvbnRleHQs
IGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBXZWJDb3JlOjpzZXRDb29raWVz
RnJvbURPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CiB9CiAKLWJv
b2wgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29s
IFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVy
bCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoY29udGV4dCwgZmlyc3RQ
YXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwg
Zmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb29r
aWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29u
c3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3Ry
YXRlZ2llc1F0Ojpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
IHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAot
Ym9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Z2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0
b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmdldFJh
d0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVz
KQogewotICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKGNvbnRleHQsIGZpcnN0UGFy
dHksIHVybCwgcmF3Q29va2llcyk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMo
c2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKIH0KIAotdm9pZCBQbGF0Zm9y
bVN0cmF0ZWdpZXNRdDo6ZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgUGxhdGZvcm1T
dHJhdGVnaWVzUXQ6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewotICAg
IFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShjb250ZXh0LCB1cmwsIGNvb2tpZU5hbWUpOworICAgIFdl
YkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCiB2b2lk
IFBsYXRmb3JtU3RyYXRlZ2llc1F0OjpyZWZyZXNoUGx1Z2lucygpCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5o
CShyZXZpc2lvbiAxMzg0MTEpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1Bs
YXRmb3JtU3RyYXRlZ2llc1F0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDEyICs1OCwxMiBAQCBw
cml2YXRlOgogICAgIAogICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneQogICAgIHZpcnR1
YWwgdm9pZCBub3RpZnlDb29raWVzQ2hhbmdlZCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tp
ZXNGb3JET00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dENvb2tpZXNGcm9tRE9NKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYp
OwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChXZWJDb3JlOjpOZXR3b3JraW5nQ29u
dGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktV
UkwmKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShX
ZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2ll
cyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0
UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwot
ICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQq
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBTdHJp
bmcgY29va2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Cisg
ICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29va2llc0Vu
YWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwg
U3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKIAogICAg
IC8vIFdlYkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kKICAgICAvLyAtIFVzaW5nIGRlZmF1bHQgaW1w
bGVtZW50YXRpb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJG
cmFtZUFkYXB0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHAJKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIKICNpbmNs
dWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvblNjaGVkdWxlci5oIgorI2luY2x1ZGUg
Ik5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUVdlYlBhZ2VBZGFwdGVyLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwCShyZXZpc2lv
biAxMzg0MTEpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRh
cHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJMb2Nh
bGl6ZWRTdHJpbmdzLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUg
Ik1lbW9yeUNhY2hlLmgiCisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRl
ICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0Lmgi
CiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb29r
aWVNYW5hZ2VyQ0ZOZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNv
b2tpZU1hbmFnZXJDRk5ldC5jcHAJKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJLaXQv
d2luL1dlYkNvb2tpZU1hbmFnZXJDRk5ldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4
LDcgQEAKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAKICNpbmNsdWRlIDxDRk5ldHdv
cmsvQ0ZIVFRQQ29va2llc1ByaXYuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2VD
Rk5ldC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNp
b24gMTM4NDExKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE1NCw3ICsxNTQsNiBAQAogI2lmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVkZSA8Q0ZO
ZXR3b3JrL0NGVVJMQ2FjaGVQcml2Lmg+CiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGVVJMUHJvdG9j
b2xQcml2Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Db29raWVTdG9yYWdlQ0ZOZXQuaD4KICNpbmNs
dWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+IAogI2Vu
ZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0
d29ya2luZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCShyZXZpc2lvbiAxMzg0MTEp
CisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNiBAQAogI2luY2x1ZGUgIkZy
YW1lTG9hZGVyQ2xpZW50LmgiCiAjaWYgVVNFKENGTkVUV09SSykKICNpbmNsdWRlIDxDRk5ldHdv
cmsvQ0ZIVFRQQ29va2llc1ByaXYuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZVN0b3JhZ2VD
Rk5ldC5oPgogI2VuZGlmCiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2lmIFVTRShD
Rk5FVFdPUkspCkBAIC0zMyw4ICszMiwxMSBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
ICNpZiBVU0UoQ0ZORVRXT1JLKQotc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgZGVmYXVs
dENGU3RvcmFnZVNlc3Npb247Ci1zdGF0aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBwcml2YXRl
QnJvd3NpbmdTdG9yYWdlU2Vzc2lvbjsKK3N0YXRpYyBPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNz
aW9uPiYgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKQoreworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4sIHNlc3Npb24sICgpKTsKKyAg
ICByZXR1cm4gc2Vzc2lvbjsKK30KICNlbmRpZgogCiBQYXNzUmVmUHRyPFdlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQ+IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmNyZWF0ZShGcmFtZSogZnJh
bWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50KQpAQCAtNjksNzUgKzcxLDQzIEBAIHZvaWQgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0UHJpdmEKICAgICBwcml2YXRlQnJvd3NpbmdTdG9y
YWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkgPSBpZGVudGlmaWVyOwogfQogCi12b2lkIFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQ6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKQotewotI2lm
IFVTRShDRk5FVFdPUkspCi0gICAgLy8gU2V0IGEgcHJpdmF0ZSBzZXNzaW9uIGZvciB0ZXN0aW5n
IHRvIGF2b2lkIGludGVyZmVyaW5nIHdpdGggZ2xvYmFsIGNvb2tpZXMuIFRoaXMgc2hvdWxkIGJl
IGRpZmZlcmVudCBmcm9tIHByaXZhdGUgYnJvd3Npbmcgc2Vzc2lvbi4KLSAgICBkZWZhdWx0Q0ZT
dG9yYWdlU2Vzc2lvbiA9IHdrQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKENGU1RSKCJQcml2
YXRlIFdlYktpdCBTZXNzaW9uIiksIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uKTsKLSNlbmRpZgot
fQotCiB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmVuc3VyZVByaXZhdGVCcm93c2lu
Z1Nlc3Npb24oKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAjaWYgVVNFKENGTkVU
V09SSykKLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pCisgICAgaWYgKHBy
aXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFN0
cmluZyBiYXNlID0gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgp
LmlzTnVsbCgpID8gU3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQnVuZGxl
R2V0VmFsdWVGb3JJbmZvRGljdGlvbmFyeUtleShDRkJ1bmRsZUdldE1haW5CdW5kbGUoKSwga0NG
QnVuZGxlSWRlbnRpZmllcktleSkpKSA6IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRl
bnRpZmllckJhc2UoKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNmSWRlbnRpZmllciA9
IFN0cmluZyhiYXNlICsgIi5Qcml2YXRlQnJvd3NpbmciKS5jcmVhdGVDRlN0cmluZygpOworICAg
IFN0cmluZyBpZGVudGlmaWVyQmFzZSA9IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRl
bnRpZmllckJhc2UoKS5pc051bGwoKSA/IFN0cmluZyhyZWludGVycHJldF9jYXN0PENGU3RyaW5n
UmVmPihDRkJ1bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rpb25hcnlLZXkoQ0ZCdW5kbGVHZXRNYWlu
QnVuZGxlKCksIGtDRkJ1bmRsZUlkZW50aWZpZXJLZXkpKSkgOiBwcml2YXRlQnJvd3NpbmdTdG9y
YWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCk7CiAKLSAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdl
U2Vzc2lvbiA9IHdrQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9uKGNmSWRlbnRpZmllci5nZXQo
KSwgZGVmYXVsdENGU3RvcmFnZVNlc3Npb24pOworICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VT
ZXNzaW9uKCkgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nl
c3Npb24oaWRlbnRpZmllckJhc2UpOwogI2VuZGlmCiB9CiAKIHZvaWQgV2ViRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewogI2lmIFVTRShD
Rk5FVFdPUkspCi0gICAgaWYgKCFwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbikKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgQ0ZSZWxlYXNlKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9u
KTsKLSAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbiA9IDA7CisgICAgcHJpdmF0ZUJy
b3dzaW5nU3RvcmFnZVNlc3Npb24oKSA9IG51bGxwdHI7CiAjZW5kaWYKIH0KIAogI2lmIFVTRShD
Rk5FVFdPUkspCi1DRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpCitOZXR3b3JrU3RvcmFnZVNlc3Npb24mIFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNzaW9uKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gZGVmYXVsdENGU3RvcmFnZVNlc3Npb247Ci19Ci0KLWJvb2wgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZnJh
bWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpICYmIGZyYW1lKCktPnNldHRpbmdzKCktPnByaXZh
dGVCcm93c2luZ0VuYWJsZWQoKTsKLX0KLQotQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0Ci17Ci0gICAgYm9vbCBw
cml2YXRlQnJvd3NpbmdFbmFibGVkID0gaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCk7Ci0gICAgaWYg
KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKLSAgICAgICAgQVNTRVJUKHByaXZhdGVCcm93c2lu
Z1N0b3JhZ2VTZXNzaW9uKTsKLSAgICAgICAgcmV0dXJuIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VT
ZXNzaW9uOworICAgIGJvb2wgaW5Qcml2YXRlQnJvd3NpbmdNb2RlID0gZnJhbWUoKSAmJiBmcmFt
ZSgpLT5zZXR0aW5ncygpICYmIGZyYW1lKCktPnNldHRpbmdzKCktPnByaXZhdGVCcm93c2luZ0Vu
YWJsZWQoKTsKKyAgICBpZiAoaW5Qcml2YXRlQnJvd3NpbmdNb2RlKSB7CisgICAgICAgIEFTU0VS
VChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpKTsKKyAgICAgICAgcmV0dXJuICpwcml2
YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpOwogICAgIH0KLSAgICByZXR1cm4gZGVmYXVsdENG
U3RvcmFnZVNlc3Npb247Ci19Ci0KLXZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0
Q29va2llQWNjZXB0UG9saWN5Rm9yVGVzdGluZ0NvbnRleHQoQ0ZIVFRQQ29va2llU3RvcmFnZUFj
Y2VwdFBvbGljeSBwb2xpY3kpCi17Ci0gICAgQVNTRVJUKGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9u
KTsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gZGVmYXVsdENvb2tpZVN0
b3JhZ2UgPSBhZG9wdENGKHdrQ29weUhUVFBDb29raWVTdG9yYWdlKGRlZmF1bHRDRlN0b3JhZ2VT
ZXNzaW9uKSk7Ci0gICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShk
ZWZhdWx0Q29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKKyAgICByZXR1cm4gTmV0d29ya1N0
b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0KIAogdm9pZCBXZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhD
RkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5IHBvbGljeSkKIHsKLSAgICBpZiAoUmV0YWlu
UHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBkZWZhdWx0Q0ZIVFRQ
Q29va2llU3RvcmFnZSgpKQorICAgIGlmIChSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJl
Zj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VT
ZXNzaW9uKCkuY29va2llU3RvcmFnZSgpKQogICAgICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0
Q29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7CiAKLSAgICBp
ZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pIHsKLSAgICAgICAgUmV0YWluUHRyPENG
SFRUUENvb2tpZVN0b3JhZ2VSZWY+IHByaXZhdGVCcm93c2luZ0Nvb2tpZVN0b3JhZ2UgPSBhZG9w
dENGKHdrQ29weUhUVFBDb29raWVTdG9yYWdlKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9u
KSk7Ci0gICAgICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3kocHJp
dmF0ZUJyb3dzaW5nQ29va2llU3RvcmFnZS5nZXQoKSwgcG9saWN5KTsKLSAgICB9CisgICAgaWYg
KHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpCisgICAgICAgIENGSFRUUENvb2tpZVN0
b3JhZ2VTZXRDb29raWVBY2NlcHRQb2xpY3kocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24o
KS0+Y29va2llU3RvcmFnZSgpLmdldCgpLCBwb2xpY3kpOwogfQogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lvbiAxMzg0MTEpCisrKyBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDE0ICsyOSwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8V2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlKFdlYkNvcmU6OkZyYW1lKiwgY29uc3QgV1RG
OjpTdHJpbmcmIHVzZXJBZ2VudCk7CiAKICAgICBzdGF0aWMgdm9pZCBzZXRQcml2YXRlQnJvd3Np
bmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRp
YyB2b2lkIHN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKICAgICBzdGF0aWMgdm9pZCBlbnN1
cmVQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveVByaXZh
dGVCcm93c2luZ1Nlc3Npb24oKTsKIAogI2lmIFVTRShDRk5FVFdPUkspCi0gICAgc3RhdGljIENG
VVJMU3RvcmFnZVNlc3Npb25SZWYgZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7Ci0KLSAgICBzdGF0
aWMgdm9pZCBzZXRDb29raWVBY2NlcHRQb2xpY3lGb3JUZXN0aW5nQ29udGV4dChDRkhUVFBDb29r
aWVTdG9yYWdlQWNjZXB0UG9saWN5KTsKICAgICBzdGF0aWMgdm9pZCBzZXRDb29raWVBY2NlcHRQ
b2xpY3lGb3JBbGxDb250ZXh0cyhDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5KTsKICNl
bmRpZgogCkBAIC01MCw4ICs0Niw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXVEY6OlN0cmlu
ZyB1c2VyQWdlbnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHJlZmVycmVyKCkg
Y29uc3Q7CiAjaWYgVVNFKENGTkVUV09SSykKLSAgICB2aXJ0dWFsIGJvb2wgaW5Qcml2YXRlQnJv
d3NpbmdNb2RlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0
b3JhZ2VTZXNzaW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3Q7CiAjZW5kaWYKICAgICB2aXJ0dWFsIFdl
YkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHAJKHJldmlzaW9uIDEz
ODQxMSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3Ry
YXRlZ2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDQ0ICs4NiwzNCBAQCB2b2lkIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6bm90aWZ5Q29va2llCiB7CiB9CiAKLSNpZiBVU0UoQ0ZORVRXT1JL
KQotUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6ZGVmYXVsdENvb2tpZVN0b3JhZ2UoKQorU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBpZiAoQ0ZVUkxTdG9y
YWdlU2Vzc2lvblJlZiBzZXNzaW9uID0gV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVmYXVs
dFN0b3JhZ2VTZXNzaW9uKCkpCi0gICAgICAgIHJldHVybiBhZG9wdENGKHdrQ29weUhUVFBDb29r
aWVTdG9yYWdlKHNlc3Npb24pKTsKLQotICAgIHJldHVybiB3a0dldERlZmF1bHRIVFRQQ29va2ll
U3RvcmFnZSgpOwotfQotI2VuZGlmCi0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNv
b2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmIHVybCkKLXsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0Zv
ckRPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29r
aWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4
dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IGNvb2tpZVN0cmluZykKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJv
bURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7
Ci0gICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJs
LCBjb29raWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24s
IGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29sIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29va2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0
dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVkKHNlc3Npb24sIGZpcnN0UGFydHksIHVy
bCk7CiB9CiAKLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAg
ICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29udGV4dCwg
Zmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRl
ckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQs
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4m
IHJhd0Nvb2tpZXMpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7Ci0gICAg
cmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCBy
YXdDb29raWVzKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBm
aXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6ZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKLSAgICBXZWJDb3Jl
OjpkZWxldGVDb29raWUoY29udGV4dCwgdXJsLCBjb29raWVOYW1lKTsKKyAgICBXZWJDb3JlOjpk
ZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBjb29raWVOYW1lKTsKIH0KIAogdm9pZCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OnJlZnJlc2hQbHVnaW5zKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5oCShy
ZXZpc2lvbiAxMzg0MTEpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsMTUgKzUyLDEyIEBAIHBy
aXZhdGU6CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKICAgICB2aXJ0dWFsIHZv
aWQgbm90aWZ5Q29va2llc0NoYW5nZWQoKTsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIHZpcnR1
YWwgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGRlZmF1bHRDb29raWVTdG9yYWdl
KCk7Ci0jZW5kaWYKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKFdlYkNvcmU6Ok5l
dHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShXZWJD
b3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wg
Y29va2llc0VuYWJsZWQoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBT
dHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoV2ViQ29yZTo6TmV0d29ya2luZ0Nv
bnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpL
VVJMJik7Ci0gICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoV2ViQ29yZTo6TmV0d29ya2lu
Z0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlQ29va2llKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VS
TCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRD
b29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3Qg
U3RyaW5nJik7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6
Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0
SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBj
b25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Cisg
ICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRl
bGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFz
ZVN0cmF0ZWd5CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgpJbmRleDog
U291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5D
RS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9Q
bGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5jcHAJKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9X
ZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04MywzNCArODMsMzQgQEAgdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNX
aW5DRTo6bm90aWZ5Q29vawogewogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6
OmNvb2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5D
RTo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNv
bnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2Vi
Q29yZTo6Y29va2llc0ZvckRPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVy
biBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAK
LXZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OnNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtp
bmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNX
aW5DRTo6c2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgY29va2llU3RyaW5nKQogewotICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKGNvbnRl
eHQsIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBXZWJDb3JlOjpzZXRDb29r
aWVzRnJvbURPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CiB9CiAK
LWJvb2wgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdD
b250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwp
Citib29sIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0
IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoY29udGV4
dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQo
c2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2ll
c1dpbkNFOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCog
Y29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5n
IFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4g
V2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0
eSwgdXJsKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Z2V0UmF3Q29va2ll
cyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgUGxhdGZvcm1T
dHJhdGVnaWVzV2luQ0U6OmdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3Rv
cjxDb29raWU+JiByYXdDb29raWVzKQogewotICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29r
aWVzKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7CisgICAgcmV0dXJuIFdl
YkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVz
KTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6ZGVsZXRlQ29va2llKE5ldHdv
cmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29v
a2llTmFtZSkKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmRlbGV0ZUNvb2tpZShjb25z
dCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShjb250ZXh0
LCB1cmwsIGNvb2tpZU5hbWUpOworICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1
cmwsIGNvb2tpZU5hbWUpOwogfQogCiB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpyZWZy
ZXNoUGx1Z2lucygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1Bs
YXRmb3JtU3RyYXRlZ2llc1dpbkNFLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5j
ZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5oCShyZXZpc2lvbiAxMzg0
MTEpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRl
Z2llc1dpbkNFLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEyICs1MSwxMiBAQCBwcml2YXRlOgog
CiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5CiAgICAgdmlydHVhbCB2b2lkIG5vdGlm
eUNvb2tpZXNDaGFuZ2VkKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShXZWJD
b3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21E
T00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdmlydHVh
bCBib29sIGNvb2tpZXNFbmFibGVkKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZp
cnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFdlYkNvcmU6Ok5ldHdv
cmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKFdlYkNvcmU6Ok5l
dHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdmlydHVhbCB2
b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNv
cmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9y
RE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYs
IGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2ll
UmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VS
TCYpOworICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gV2ViQ29yZTo6
RGF0YWJhc2VTdHJhdGVneQogICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4K
</data>
<flag name="commit-queue"
          id="197925"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180609</attachid>
            <date>2012-12-22 16:10:28 -0800</date>
            <delta_ts>2012-12-22 16:49:19 -0800</delta_ts>
            <desc>patch for review</desc>
            <filename>StorageSession.txt</filename>
            <type>text/plain</type>
            <size>196298</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzODQxMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc4IEBACisyMDEyLTEyLTIyICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIHNlcGFyYXRlIGNs
YXNzIGZvciBuZXR3b3JraW5nIHJlbGF0ZWQgc3RvcmFnZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1Njc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV0d29ya2luZ0NvbnRleHQgY29tYmluZXMgYSBy
ZWZlcmVuY2UgdG8gc3RvcmFnZSAoY29va2llcyBhbmQgbW9yZSkgYW5kIGRhdGEgdGhhdCdzCisg
ICAgICAgIG9ubHkgbWVhbmluZ2Z1bCB3aGVuIGxvYWRpbmcuIFRoaXMgbWFrZXMgaXQgdmVyeSB1
Z2x5IHRvIHVzZSBmb3IgY29va2llIG1hbmlwdWxhdGlvbgorICAgICAgICB3aGVuIHRoZXJlIGlz
IG5vIGxvYWQgKGUuZy4gZm9yIGRvY3VtZW50LmNvb2tpZSkuCisKKyAgICAgICAgQWRkaW5nIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiwgd2hpY2ggZW5jb3Jwb3J0ZXMgbmV0d29yay1yZWxhdGVkIHNl
c2lvbiBkYXRhLCBzdWNoCisgICAgICAgIGFzIGNvb2tpZXMgYW5kIHNlc3Npb24gSFRUUCBjcmVk
ZW50aWFscy4KKworICAgICAgICBGb3Igc29tZSBwb3J0cywgcmVmYWN0b3JpbmcgaXMgbm90IGZp
bmlzaGVkLCBOZXR3b3JrU3RvcmFnZVNlc3Npb24gYmVpbmcgYSB3cmFwcGVyCisgICAgICAgIGZv
ciBOZXR3b3JraW5nQ29udGV4dC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAg
KiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2Vi
Q29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICBVcGRhdGVkIGZvciBuZXcgZmlsZXMgYW5kIGZ1bmN0
aW9ucy4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaDoK
KyAgICAgICAgKiBsb2FkZXIvQ29va2llSmFyLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9Db29r
aWVzU3RyYXRlZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZUphckNG
TmV0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL0Nvb2tpZUphckNo
cm9taXVtLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3Vy
bC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvQ29va2llSmFyTWFjLm1tOgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvQ29va2llSmFyUXQuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvc291cC9Db29raWVKYXJTb3VwLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL3dpbi9Db29raWVKYXJXaW4uY3BwOgorICAgICAgICBQbGF0Zm9ybUNvb2tp
ZUphciBhbmQgc3RyYXRlZ3kgY29va2llIGZ1bmN0aW9ucyBub3cgdGFrZSBhIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbgorICAgICAgICBpbnN0ZWFkIG9mIE5ldHdvcmtpbmdDb250ZXh0LgorICAgICAg
ICBOb3RlIHRoYXQgdGhleSB0YWtlIGEgY29uc3QgcmVmZXJlbmNlIHRvIHN1cHBvcnQgY3JlYXRp
bmcgYSB0ZW1wb3Jhcnkgc2Vzc2lvbgorICAgICAgICB3cmFwcGVyIGZvciBwb3J0cyB0aGF0IGp1
c3Qgd3JhcCBhIE5ldHdvcmtpbmdDb250ZXh0LgorCisgICAgICAgICogbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2hy
b21pdW0vUmVzb3VyY2VIYW5kbGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3Vy
bC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFj
L1Jlc291cmNlSGFuZGxlTWFjLm1tOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUU5l
dHdvcmtSZXBseUhhbmRsZXIuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9E
TlNTb3VwLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5k
bGVTb3VwLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUhhbmRs
ZVdpbi5jcHA6CisgICAgICAgIFJlc291cmNlSGFuZGxlIG5vIGxvbmdlciBpbmNsdWRlcyB1bm5l
ZWRlZCBOZXR3b3JraW5nQ29udGV4dC5oIGFuZCBBdXRoZW50aWNhdGlvbkNsaWVudC5oLgorICAg
ICAgICBUaGlzIGF2b2lkcyBuZWFyLXdvcmxkIHJlYnVpbGRzIG9uIGFueSBOZXR3b3JraW5nQ29u
dGV4dCBjaGFuZ2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9y
YWdlU2Vzc2lvblN0dWIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2Nm
L05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcDogQWRkZWQuCisgICAgICAgIEdvb2QgbmV3
IHN0dWZmLiBTdHViIHZlcnNpb24ganVzdCB3cmFwcyBOZXR3b3JraW5nQ29udGV4dCBmb3IgcGxh
dGZvcm1zIHRoYXQgc3RpbGwKKyAgICAgICAgbmVlZCB0byBmaW5pc2ggdGhlIHJlZmFjdG9yaW5n
LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9OZXR3b3JraW5nQ29udGV4dC5oOgorICAg
ICAgICBUaGUgY29udGV4dCBub3cgaGFzIGEgTmV0d29ya1N0b3JhZ2VTZXNzaW9uLCBhbmQgZG9l
c24ndCBleHBvc2UgQ0ZOZXQgbGV2ZWwgb2JqZWN0cyBkaXJlY3RseS4KKworICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5oOiBSZW1vdmVkLgorICAgICAgICBX
ZSBubyBsb25nZXIgaGF2ZSBzZXBhcmF0ZSBmcmVlIGZ1bmN0aW9ucyB0byB0cmFjayBzdG9yYWdl
LCBpdCdzIHBhcnQgb2YgTmV0d29ya1N0b3JhZ2VTZXNzaW9uIG5vdy4KKworICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHA6IFVwZGF0ZWQgdG8gdXNl
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbi4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFj
L0Nvb2tpZVN0b3JhZ2VNYWMubW06IERvbnQgaW5jbHVkZSBDb29raWVTdG9yYWdlQ0ZOZXQuaCwg
aXQKKyAgICAgICAgd2FzIG5vdCBuZWVkZWQuCisKIDIwMTItMTItMjIgIE5pY28gV2ViZXIgIDx0
aGFraXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIElubGluZVRleHRCb3g6IFJlbW92ZSBwb3Rl
bnRpYWxseSBjb25mdXNpbmcgIn0gaWYiIHBhdHRlcm4uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTIwMjgsNiArMjAyOCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBWYWxpZGF0aW9uLmNwcAogICAgIHBsYXRmb3JtL25ldHdv
cmsvTUlNRUhlYWRlci5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlm
aWVyLmNwcAorICAgIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5j
cHAKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcAogICAgIHBsYXRm
b3JtL25ldHdvcmsvUHJvdGVjdGlvblNwYWNlLmNwcAogICAgIHBsYXRmb3JtL25ldHdvcmsvUHJv
eHlTZXJ2ZXIuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9u
IDEzODQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcg
Y29weSkKQEAgLTU3NjAsNiArNTc2MCw3IEBAIHdlYmNvcmVfcGxhdGZvcm1fc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Qcm94eVNlcnZlci5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RhdGVOb3RpZmllci5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lvblN0
dWIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BhcnNlZENvbnRlbnRU
eXBlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9QYXJzZWRDb250ZW50
VHlwZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3JtQ29va2ll
SmFyLmggXApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMzg0MTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYxLDYgKzEwNjEsNyBAQCBTT1VS
Q0VTICs9IFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL0hUVFBWYWxpZGF0aW9uLmNwcCBcCiAgICAg
cGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9O
ZXR3b3JrU3RhdGVOb3RpZmllci5jcHAgXAorICAgIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0
b3JhZ2VTZXNzaW9uU3R1Yi5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVu
dFR5cGUuY3BwIFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Byb3RlY3Rpb25TcGFjZS5jcHAgXAog
ICAgIHBsYXRmb3JtL25ldHdvcmsvUHJveHlTZXJ2ZXIuY3BwIFwKQEAgLTIyNzMsNiArMjI3NCw3
IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL25ldHdvcmsvSFRUUFZhbGlkYXRpb24uaCBc
CiAgICAgcGxhdGZvcm0vbmV0d29yay9IVFRQU3RhdHVzQ29kZXMuaCBcCiAgICAgcGxhdGZvcm0v
bmV0d29yay9NSU1FU25pZmZpbmcuaCBcCisgICAgcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3Rv
cmFnZVNlc3Npb24uaCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9OZXR3b3JraW5nQ29udGV4dC5o
IFwKICAgICBwbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdGF0ZU5vdGlmaWVyLmggXAogICAgIHBs
YXRmb3JtL25ldHdvcmsvUGFyc2VkQ29udGVudFR5cGUuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTIwNyw3ICsyMDcsNyBAQCBfX1pON1dlYkNvcmUxMlRleHRJdGVy
YXRvckQxRXYKIF9fWk43V2ViQ29yZTEyY2FjaGVTdG9yYWdlRXYKIF9fWk43V2ViQ29yZTEyY3Jl
YXRlTWFya3VwRVBLTlNfNE5vZGVFTlNfMTNFQ2hpbGRyZW5Pbmx5RVBOM1dURjZWZWN0b3JJUFMw
X0xtMEVFRU5TXzEzRUFic29sdXRlVVJMc0VQTlM1X0lOU18xM1F1YWxpZmllZE5hbWVFTG0wRUVF
CiBfX1pON1dlYkNvcmUxMmNyZWF0ZU1hcmt1cEVQS05TXzVSYW5nZUVQTjNXVEY2VmVjdG9ySVBO
U180Tm9kZUVMbTBFRUVOU18yM0VBbm5vdGF0ZUZvckludGVyY2hhbmdlRWJOU18xM0VBYnNvbHV0
ZVVSTHNFCi1fX1pON1dlYkNvcmUxMmRlbGV0ZUNvb2tpZUVQTlNfMTdOZXR3b3JraW5nQ29udGV4
dEVSS05TXzRLVVJMRVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMTJkZWxldGVDb29raWVF
UktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS05TXzRLVVJMRVJLTjNXVEY2U3RyaW5nRQog
X19aTjdXZWJDb3JlMTJnY0NvbnRyb2xsZXJFdgogX19aTjdXZWJDb3JlMTJpY29uRGF0YWJhc2VF
dgogX19aTjdXZWJDb3JlMTJ0b1VpbnQ4QXJyYXlFTjNKU0M3SlNWYWx1ZUUKQEAgLTIzNiwxMCAr
MjM2LDEwIEBAIF9fWk43V2ViQ29yZTEzUmVzb3VyY2VFcnJvckMxRVA3TlNFcnJvcgogX19aTjdX
ZWJDb3JlMTNSZXNvdXJjZUVycm9yQzFFUDlfX0NGRXJyb3IKIF9fWk43V2ViQ29yZTEzU3R5bGVk
RWxlbWVudDIyc2V0SW5saW5lU3R5bGVQcm9wZXJ0eUVOU18xM0NTU1Byb3BlcnR5SURFUktOM1dU
RjZTdHJpbmdFYgogX19aTjdXZWJDb3JlMTNTdHlsZWRFbGVtZW50MjJzZXRJbmxpbmVTdHlsZVBy
b3BlcnR5RU5TXzEzQ1NTUHJvcGVydHlJREVkTlNfMTdDU1NQcmltaXRpdmVWYWx1ZTlVbml0VHlw
ZXNFYgotX19aTjdXZWJDb3JlMTNjb29raWVzRm9yRE9NRVBOU18xN05ldHdvcmtpbmdDb250ZXh0
RVJLTlNfNEtVUkxFUzRfCitfX1pON1dlYkNvcmUxM2Nvb2tpZXNGb3JET01FUktOU18yMU5ldHdv
cmtTdG9yYWdlU2Vzc2lvbkVSS05TXzRLVVJMRVM1XwogX19aTjdXZWJDb3JlMTNjcmVhdGVXcmFw
cGVyRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzROb2RlRQog
X19aTjdXZWJDb3JlMTNkaXJlY3RvcnlOYW1lRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3Jl
MTNnZXRSYXdDb29raWVzRVBOU18xN05ldHdvcmtpbmdDb250ZXh0RVJLTlNfNEtVUkxFUzRfUk4z
V1RGNlZlY3RvcklOU182Q29va2llRUxtMEVFRQorX19aTjdXZWJDb3JlMTNnZXRSYXdDb29raWVz
RVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU180S1VSTEVTNV9STjNXVEY2VmVjdG9y
SU5TXzZDb29raWVFTG0wRUVFCiBfX1pON1dlYkNvcmUxM3RvQXJyYXlCdWZmZXJFTjNKU0M3SlNW
YWx1ZUUKIF9fWk43V2ViQ29yZTEzdG9IVE1MRWxlbWVudEVQTlNfMjFGb3JtQXNzb2NpYXRlZEVs
ZW1lbnRFCiBfX1pON1dlYkNvcmUxM3RvSlNET01XaW5kb3dFTjNKU0M3SlNWYWx1ZUUKQEAgLTI1
NCw2ICsyNTQsMTAgQEAgX19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjEzYXR0YWNoVG9Gcgog
X19aTjdXZWJDb3JlMTREb2N1bWVudExvYWRlcjE1ZGV0YWNoRnJvbUZyYW1lRXYKIF9fWk43V2Vi
Q29yZTE0RG9jdW1lbnRMb2FkZXIxOGFkZEFyY2hpdmVSZXNvdXJjZUVOM1dURjEwUGFzc1JlZlB0
cklOU18xNUFyY2hpdmVSZXNvdXJjZUVFRQogX19aTjdXZWJDb3JlMTRSZXNvdXJjZUxvYWRlcjMy
ZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2VFUktOU18yM0F1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRQorX19aTjdXZWJDb3JlMTRjb29raWVzRW5hYmxlZEVSS05TXzIxTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uRVJLTlNfNEtVUkxFUzVfCitfX1pON1dlYkNvcmUxN3NldENvb2tpZXNGcm9tRE9N
RVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU180S1VSTEVTNV9SS04zV1RGNlN0cmlu
Z0UKK19fWk43V2ViQ29yZTIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uMjFkZWZhdWx0U3RvcmFnZVNl
c3Npb25FdgorX19aTjdXZWJDb3JlMjFOZXR3b3JrU3RvcmFnZVNlc3Npb24yNXN3aXRjaFRvTmV3
VGVzdGluZ1Nlc3Npb25FdgogX19aTjdXZWJDb3JlMjFTZXJpYWxpemVkU2NyaXB0VmFsdWUxMWRl
c2VyaWFsaXplRVBOM0pTQzlFeGVjU3RhdGVFUE5TMV8xNEpTR2xvYmFsT2JqZWN0RVBOM1dURjZW
ZWN0b3JJTlM2XzZSZWZQdHJJTlNfMTFNZXNzYWdlUG9ydEVFRUxtMUVFRU5TXzIyU2VyaWFsaXph
dGlvbkVycm9yTW9kZUUKIF9fWk43V2ViQ29yZTIxU2VyaWFsaXplZFNjcmlwdFZhbHVlNmNyZWF0
ZUVQTjNKU0M5RXhlY1N0YXRlRU5TMV83SlNWYWx1ZUVQTjNXVEY2VmVjdG9ySU5TNV82UmVmUHRy
SU5TXzExTWVzc2FnZVBvcnRFRUVMbTFFRUVQTlM2X0lOUzdfSU5TNV8xMUFycmF5QnVmZmVyRUVF
TG0xRUVFTlNfMjJTZXJpYWxpemF0aW9uRXJyb3JNb2RlRQogX19aTjdXZWJDb3JlMjFTZXJpYWxp
emVkU2NyaXB0VmFsdWU2Y3JlYXRlRVJLTjNXVEY2U3RyaW5nRQpAQCAtMjg0LDcgKzI4OCw2IEBA
IF9fWk43V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb245c2VsZWN0QWxsRXYKIF9fWk43V2ViQ29yZTE0
RnJhbWVTZWxlY3Rpb25DMUVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3JlMTRMb2FkZXJTdHJhdGVn
eTIxcmVzb3VyY2VMb2FkU2NoZWR1bGVyRXYKIF9fWk43V2ViQ29yZTE0UGx1Z2luRG9jdW1lbnQx
MHBsdWdpbk5vZGVFdgotX19aTjdXZWJDb3JlMTRjb29raWVzRW5hYmxlZEVQTlNfMTdOZXR3b3Jr
aW5nQ29udGV4dEVSS05TXzRLVVJMRVM0XwogX19aTks3V2ViQ29yZTVGcmFtZTI1dHJhY2tlZFJl
cGFpbnRSZWN0c0FzVGV4dEV2CiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MTdzZXRUcmFja3NSZXBh
aW50c0ViCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjByZXNldFRyYWNrZWRSZXBhaW50c0V2CkBA
IC00ODgsNyArNDkxLDcgQEAgX19aTjdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uQzFFUktOU18x
NQogX19aTjdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uQzFFUktOU18xNVZpc2libGVQb3NpdGlv
bkViCiBfX1pON1dlYkNvcmUxNmNyZWF0ZUZ1bGxNYXJrdXBFUEtOU180Tm9kZUUKIF9fWk43V2Vi
Q29yZTE2Y3JlYXRlRnVsbE1hcmt1cEVQS05TXzVSYW5nZUUKLV9fWk43V2ViQ29yZTE2ZGVsZXRl
QWxsQ29va2llc0VQTlNfMTdOZXR3b3JraW5nQ29udGV4dEUKK19fWk43V2ViQ29yZTE2ZGVsZXRl
QWxsQ29va2llc0VSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRQogX19aTjdXZWJDb3JlMTZl
bmNsb3NpbmdJbnRSZWN0RVJLTlNfOUZsb2F0UmVjdEUKIF9fWk43V2ViQ29yZTE2aXNFbmRPZlBh
cmFncmFwaEVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRU5TXzI3RWRpdGluZ0JvdW5kYXJ5Q3Jvc3Np
bmdSdWxlRQogX19aTjdXZWJDb3JlMTZpc1VzZXJWaXNpYmxlVVJMRVA4TlNTdHJpbmcKQEAgLTUx
MSw3ICs1MTQsNiBAQCBfX1pON1dlYkNvcmUxN1N1YnJlc291cmNlTG9hZGVyNmNyZWF0ZUVQCiBf
X1pON1dlYkNvcmUxN1ZpZXdwb3J0QXJndW1lbnRzMTlkZXByZWNhdGVkVGFyZ2V0RFBJRQogX19a
TjdXZWJDb3JlMTdjYWNoZURPTVN0cnVjdHVyZUVQTlNfMTdKU0RPTUdsb2JhbE9iamVjdEVQTjNK
U0M5U3RydWN0dXJlRVBLTlMyXzlDbGFzc0luZm9FCiBfX1pON1dlYkNvcmUxN29wZW5UZW1wb3Jh
cnlGaWxlRVJLTjNXVEY2U3RyaW5nRVJpCi1fX1pON1dlYkNvcmUxN3NldENvb2tpZXNGcm9tRE9N
RVBOU18xN05ldHdvcmtpbmdDb250ZXh0RVJLTlNfNEtVUkxFUzRfUktOM1dURjZTdHJpbmdFCiBf
X1pON1dlYkNvcmUxN3VzZXJWaXNpYmxlU3RyaW5nRVA1TlNVUkwKIF9fWk43V2ViQ29yZTE4RE9N
V2luZG93RXh0ZW5zaW9uQzFFUE5TXzVGcmFtZUVQTlNfMTVET01XcmFwcGVyV29ybGRFCiBfX1pO
N1dlYkNvcmUxOEhUTUxDb250ZW50RWxlbWVudDZjcmVhdGVFUE5TXzhEb2N1bWVudEUKQEAgLTU5
NSw2ICs1OTcsNyBAQCBfX1pON1dlYkNvcmUyMHByb3RvY29sSXNKYXZhU2NyaXB0RVJLTjNXCiBf
X1pON1dlYkNvcmUyMFNwYWNlU3BsaXRTdHJpbmdEYXRhRDFFdgogX19aTjdXZWJDb3JlMjFCYWNr
Rm9yd2FyZENvbnRyb2xsZXIxMWl0ZW1BdEluZGV4RWkKIF9fWk43V2ViQ29yZTIxTWVtb3J5UHJl
c3N1cmVIYW5kbGVyN2luc3RhbGxFdgorX19aTjdXZWJDb3JlMjFOZXR3b3JrU3RvcmFnZVNlc3Np
b24yOGNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb25FUktOM1dURjZTdHJpbmdFCiBfX1pON1dl
YkNvcmUyMVBsYXRmb3JtS2V5Ym9hcmRFdmVudDI0ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50RU5T
XzEzUGxhdGZvcm1FdmVudDRUeXBlRWIKIF9fWk43V2ViQ29yZTIxUmVzb3VyY2VMb2FkU2NoZWR1
bGVyMTlzdGFydFJlc291cmNlTG9hZGVyRVBOU18xNFJlc291cmNlTG9hZGVyRQogX19aTjdXZWJD
b3JlMjFSZXNvdXJjZUxvYWRTY2hlZHVsZXIyMHNlcnZlUGVuZGluZ1JlcXVlc3RzRU5TXzIwUmVz
b3VyY2VMb2FkUHJpb3JpdHlFCkBAIC02NTAsNyArNjUzLDcgQEAgX19aTjdXZWJDb3JlMjNjcmVh
dGVGcmFnbWVudEZyb21Ob2Rlc0VQTgogX19aTjdXZWJDb3JlMjNkYXRhRm9yVVJMQ29tcG9uZW50
VHlwZUVQNU5TVVJMbAogX19aTjdXZWJDb3JlMjNkZWNvZGVIb3N0TmFtZVdpdGhSYW5nZUVQOE5T
U3RyaW5nOF9OU1JhbmdlCiBfX1pON1dlYkNvcmUyM2VuY29kZUhvc3ROYW1lV2l0aFJhbmdlRVA4
TlNTdHJpbmc4X05TUmFuZ2UKLV9fWk43V2ViQ29yZTIzZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXNF
UE5TXzE3TmV0d29ya2luZ0NvbnRleHRFUk4zV1RGN0hhc2hTZXRJTlMyXzZTdHJpbmdFTlMyXzEw
U3RyaW5nSGFzaEVOUzJfMTBIYXNoVHJhaXRzSVM0X0VFRUUKK19fWk43V2ViQ29yZTIzZ2V0SG9z
dG5hbWVzV2l0aENvb2tpZXNFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSTjNXVEY3SGFz
aFNldElOUzNfNlN0cmluZ0VOUzNfMTBTdHJpbmdIYXNoRU5TM18xMEhhc2hUcmFpdHNJUzVfRUVF
RQogX19aTjdXZWJDb3JlMjRCaW5hcnlQcm9wZXJ0eUxpc3RXcml0ZXIxN3dyaXRlUHJvcGVydHlM
aXN0RXYKIF9fWk43V2ViQ29yZTI0Q2FjaGVkUmVzb3VyY2VIYW5kbGVCYXNlMTFzZXRSZXNvdXJj
ZUVQTlNfMTRDYWNoZWRSZXNvdXJjZUUKIF9fWk43V2ViQ29yZTI0Q29tcG9zZWRTaGFkb3dUcmVl
V2Fsa2VyMTBmaXJzdENoaWxkRXYKQEAgLTY2OSw3ICs2NzIsNyBAQCBfX1pON1dlYkNvcmUyNEZy
YW1lRGVzdHJ1Y3Rpb25PYnNlcnZlckMyCiBfX1pON1dlYkNvcmUyNEZyYW1lRGVzdHJ1Y3Rpb25P
YnNlcnZlckQyRXYKIF9fWk43V2ViQ29yZTI0Y3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwRVBOU184
RG9jdW1lbnRFUktOM1dURjZTdHJpbmdFUzVfTlNfMjdGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Np
b25FCiBfX1pON1dlYkNvcmUyNGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlc0VSS04zV1RGNlN0cmlu
Z0UKLV9fWk43V2ViQ29yZTI0ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lRVBOU18xN05ldHdvcmtp
bmdDb250ZXh0RVJLTjNXVEY2U3RyaW5nRQorX19aTjdXZWJDb3JlMjRkZWxldGVDb29raWVzRm9y
SG9zdG5hbWVFUktOU18yMU5ldHdvcmtTdG9yYWdlU2Vzc2lvbkVSS04zV1RGNlN0cmluZ0UKIF9f
Wk43V2ViQ29yZTI0ZmlsZVN5c3RlbVJlcHJlc2VudGF0aW9uRVJLTjNXVEY2U3RyaW5nRQogX19a
TjdXZWJDb3JlMjRub3RpZnlIaXN0b3J5SXRlbUNoYW5nZWRFCiBfX1pON1dlYkNvcmUyNUhpc3Rv
cnlQcm9wZXJ0eUxpc3RXcml0ZXIxMXJlbGVhc2VEYXRhRXYKQEAgLTY5NiwxMCArNjk5LDkgQEAg
X19aTjdXZWJDb3JlMjdDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpbwogX19aTjdXZWJDb3JlMjdE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sxNHNldE9yaWVudGF0aW9uRU4zV1RGMTBQYXNzUmVm
UHRySU5TXzIxRGV2aWNlT3JpZW50YXRpb25EYXRhRUVFCiBfX1pON1dlYkNvcmUyN0RldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9ja0MxRXYKIF9fWk43V2ViQ29yZTI3c3RhcnRPYnNlcnZpbmdDb29r
aWVDaGFuZ2VzRXYKLV9fWk43V2ViQ29yZTI2ZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2VFdgog
X19aTjdXZWJDb3JlMjhlbmNvZGVXaXRoVVJMRXNjYXBlU2VxdWVuY2VzRVJLTjNXVEY2U3RyaW5n
RQogX19aTjdXZWJDb3JlMjhyZW1vdmVMYW5ndWFnZUNoYW5nZU9ic2VydmVyRVB2Ci1fX1pON1dl
YkNvcmUyOWNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlRVBOU18xN05ldHdvcmtpbmdDb250
ZXh0RVJLTlNfNEtVUkxFUzRfCitfX1pON1dlYkNvcmUyOWNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktOU180S1VSTEVTNV8KIF9fWk43
V2ViQ29yZTI5aXNDaGFyYWN0ZXJTbWFydFJlcGxhY2VFeGVtcHRFaWIKIF9fWk43V2ViQ29yZTMw
aG9zdE5hbWVOZWVkc0RlY29kaW5nV2l0aFJhbmdlRVA4TlNTdHJpbmc4X05TUmFuZ2UKIF9fWk43
V2ViQ29yZTMwaG9zdE5hbWVOZWVkc0VuY29kaW5nV2l0aFJhbmdlRVA4TlNTdHJpbmc4X05TUmFu
Z2UKQEAgLTEzMzAsNiArMTMzMiw3IEBAIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VC
YXNlNmlzSFQKIF9fWk5LN1dlYkNvcmUyMFJlc291cmNlUmVzcG9uc2VCYXNlOG1pbWVUeXBlRXYK
IF9fWk5LN1dlYkNvcmUyMUJhY2tGb3J3YXJkQ29udHJvbGxlcjEyZm9yd2FyZENvdW50RXYKIF9f
Wk5LN1dlYkNvcmUyMUJhY2tGb3J3YXJkQ29udHJvbGxlcjliYWNrQ291bnRFdgorX19aTks3V2Vi
Q29yZTIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uMTNjb29raWVTdG9yYWdlRXYKIF9fWk5LN1dlYkNv
cmUyMVJlbmRlckxheWVyQ29tcG9zaXRvcjExc2Nyb2xsTGF5ZXJFdgogX19aTks3V2ViQ29yZTIx
UmVuZGVyTGF5ZXJDb21wb3NpdG9yMTVyb290UmVuZGVyTGF5ZXJFdgogX19aTks3V2ViQ29yZTIx
VXNlckNvbnRlbnRVUkxQYXR0ZXJuN21hdGNoZXNFUktOU180S1VSTEUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkJKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQko
d29ya2luZyBjb3B5KQpAQCAtNDM2Nyw2ICs0MzY3LDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9y
bS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0d29y
ay9OZXR3b3JrU3RhdGVOb3RpZmllci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3Jr
L05ldHdvcmtTdG9yYWdlU2Vzc2lvblN0dWIuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9u
ZXR3b3JrL1BhcnNlZENvbnRlbnRUeXBlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbmV0
d29yay9QYXJzZWRDb250ZW50VHlwZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9uZXR3b3Jr
L1Byb3RlY3Rpb25TcGFjZS5jcHAnLApAQCAtNDM4Niw3ICs0Mzg3LDYgQEAKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9uZXR3b3JrL2NmL0F1dGhlbnRpY2F0aW9uQ0YuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmNwcCcsCi0gICAgICAgICAgICAn
cGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuaCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vbmV0d29yay9jZi9DcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vbmV0d29yay9jZi9ETlNDRk5ldC5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL25ldHdvcmsvY2YvRG93bmxvYWRCdW5kbGUuaCcsCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMTM4NDExKQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTMyNjIxLDYgKzMyNjIxLDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZp
bGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbi5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZl
UGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xOZXR3b3JraW5nQ29udGV4dC5oIgogCQkJCQk+CiAJ
CQkJPC9GaWxlPgpAQCAtMzI4NDQsMTAgKzMyODQ4LDYgQEAKIAkJCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKLQkJCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGxhdGZvcm1cbmV0d29ya1xjZlxDb29raWVTdG9yYWdlQ0ZOZXQuaCIKLQkJCQkJCT4KLQkJCQkJ
PC9GaWxlPgotCQkJCQk8RmlsZQogCQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxuZXR3
b3JrXGNmXENyZWRlbnRpYWxTdG9yYWdlQ0ZOZXQuY3BwIgogCQkJCQkJPgogCQkJCQkJPEZpbGVD
b25maWd1cmF0aW9uCkBAIC0zMjk0MCw2ICszMjk0MCwxMCBAQAogCQkJCQkJPgogCQkJCQk8L0Zp
bGU+CiAJCQkJCTxGaWxlCisJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtc
Y2ZcTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwIgorCQkJCQkJPgorCQkJCQk8L0ZpbGU+
CisJCQkJCTxGaWxlCiAJCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcY2Zc
UHJveHlTZXJ2ZXJDRk5ldC5jcHAiCiAJCQkJCQk+CiAJCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjAzNyw3ICsyMDM3LDYgQEAK
IAkJN0VFNjg0NjExMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RUU2ODQ0RTEy
RDI2RTM4MDBFNzk0MTUgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3RUU2ODQ2MjEyRDI2RTM4MDBF
Nzk0MTUgLyogQ29va2llSmFyQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NEYxMkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZUphckNG
TmV0LmNwcCAqLzsgfTsKIAkJN0VFNjg0NjMxMkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZVN0b3Jh
Z2VDRk5ldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3RUU2ODQ1MDEyRDI2RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0LmNwcCAqLzsg
fTsKLQkJN0VFNjg0NjQxMkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZVN0b3JhZ2VDRk5ldC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0VFNjg0NTExMkQy
NkUzODAwRTc5NDE1IC8qIENvb2tpZVN0b3JhZ2VDRk5ldC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdFRTY4NDY1MTJEMjZFMzgwMEU3OTQxNSAv
KiBDcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdFRTY4NDUyMTJEMjZFMzgwMEU3OTQxNSAvKiBDcmVkZW50aWFs
U3RvcmFnZUNGTmV0LmNwcCAqLzsgfTsKIAkJN0VFNjg0NjYxMkQyNkUzODAwRTc5NDE1IC8qIEZv
cm1EYXRhU3RyZWFtQ0ZOZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gN0VFNjg0NTMxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFtQ0ZO
ZXQuY3BwICovOyB9OwogCQk3RUU2ODQ2NzEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURhdGFTdHJl
YW1DRk5ldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
N0VFNjg0NTQxMkQyNkUzODAwRTc5NDE1IC8qIEZvcm1EYXRhU3RyZWFtQ0ZOZXQuaCAqLzsgfTsK
QEAgLTYwOTUsNiArNjA5NCw4IEBACiAJCUUxMzRGNUFCMTJFRTM0M0YwMDRFQzU4RCAvKiBJbnRS
ZWN0SGFzaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTEzNEY1QUExMkVFMzQzRjAwNEVDNThEIC8qIEludFJlY3RIYXNoLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTEzOTg2NjMxNTQ3ODQ3NDAwMUUz
RjY1IC8qIFN0eWxlUmVzb2x2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRTEzOTg2NjExNTQ3ODQ3NDAwMUUzRjY1IC8qIFN0eWxlUmVzb2x2ZXIu
Y3BwICovOyB9OwogCQlFMTM5ODY2NDE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNvbHZlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEzOTg2NjIx
NTQ3ODQ3NDAwMUUzRjY1IC8qIFN0eWxlUmVzb2x2ZXIuaCAqLzsgfTsKKwkJRTEzRUYzNDQxNjg0
RUNGNDAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTEzRUYzNDIxNjg0RUNGNDAwMzRDODNGIC8q
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUUxM0VGMzQ5MTY4NTBDNDcwMDM0QzgzRiAvKiBOZXR3b3JrU3Rv
cmFnZVNlc3Npb25DRk5ldC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMTNFRjM0NzE2ODUwQzQ3MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNz
aW9uQ0ZOZXQuY3BwICovOyB9OwogCQlFMTNGMDFGMTEyNzBFMTkwMDBERkJBNzEgLyogQ29va2ll
U3RvcmFnZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEUxM0YwMUYwMTI3MEUxOTAwMERGQkE3MSAvKiBDb29raWVTdG9yYWdlTWFjLm1tICovOyB9
OwogCQlFMTQyNEM4QTE2NEIzQjRFMDBGMzJENDAgLyogUGxhdGZvcm1Db29raWVKYXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNDI0Qzg5MTY0QjNC
NEUwMEYzMkQ0MCAvKiBQbGF0Zm9ybUNvb2tpZUphci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxNDI0QzkwMTY0QjQ2MEIwMEYzMkQ0MCAvKiBD
b29raWVKYXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFMTQyNEM4RjE2NEI0NjBCMDBGMzJENDAgLyogQ29va2llSmFyTWFjLm1tICovOyB9OwpA
QCAtOTM3MCw3ICs5MzcxLDYgQEAKIAkJN0VFNjg0NEUxMkQyNkUzODAwRTc5NDE1IC8qIEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdF
RTY4NDRGMTJEMjZFMzgwMEU3OTQxNSAvKiBDb29raWVKYXJDRk5ldC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb29raWVKYXJDRk5ldC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDUwMTJEMjZFMzgwMEU3OTQxNSAvKiBDb29raWVTdG9y
YWdlQ0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29va2ll
U3RvcmFnZUNGTmV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0VFNjg0NTEx
MkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZVN0b3JhZ2VDRk5ldC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDb29raWVTdG9yYWdlQ0ZOZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0VFNjg0NTIxMkQyNkUzODAwRTc5NDE1IC8qIENyZWRlbnRpYWxTdG9yYWdl
Q0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3JlZGVudGlh
bFN0b3JhZ2VDRk5ldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdFRTY4NDUz
MTJEMjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1EYXRhU3RyZWFtQ0ZOZXQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3RUU2ODQ1NDEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURh
dGFTdHJlYW1DRk5ldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JtRGF0
YVN0cmVhbUNGTmV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzU3Niw2ICsx
MzU3Niw4IEBACiAJCUUxMzRGNUFBMTJFRTM0M0YwMDRFQzU4RCAvKiBJbnRSZWN0SGFzaC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRSZWN0SGFzaC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlFMTM5ODY2MTE1NDc4NDc0MDAxRTNGNjUgLyogU3R5bGVSZXNv
bHZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZVJlc29s
dmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTEzOTg2NjIxNTQ3ODQ3NDAw
MUUzRjY1IC8qIFN0eWxlUmVzb2x2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU3R5bGVSZXNvbHZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMTNFRjM0
MjE2ODRFQ0Y0MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFMTNFRjM0NzE2ODUwQzQ3MDAzNEM4M0YgLyogTmV0d29ya1N0
b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMTNGMDFFQTEyNzBFMTBEMDBERkJBNzEgLyogQ29va2llU3RvcmFnZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb29raWVTdG9yYWdlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUUxM0YwMUYwMTI3MEUxOTAwMERGQkE3MSAvKiBDb29raWVTdG9y
YWdlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29va2ll
U3RvcmFnZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTE0MjRDODkxNjRC
M0I0RTAwRjMyRDQwIC8qIFBsYXRmb3JtQ29va2llSmFyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFBsYXRmb3JtQ29va2llSmFyLmg7IHBhdGggPSBuZXR3b3JrL1BsYXRmb3Jt
Q29va2llSmFyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTgzMyw2ICsxNTgz
NSw3IEBACiAJCQkJMzdERENEOTIxMzg0NEZENTAwMDhCNzkzIC8qIE1JTUVIZWFkZXIuY3BwICov
LAogCQkJCTM3RERDRDkzMTM4NDRGRDUwMDA4Qjc5MyAvKiBNSU1FSGVhZGVyLmggKi8sCiAJCQkJ
NjI4RDIxNEIxMjEzMUVEMTAwNTVEQ0ZDIC8qIE5ldHdvcmtpbmdDb250ZXh0LmggKi8sCisJCQkJ
RTEzRUYzNDIxNjg0RUNGNDAwMzRDODNGIC8qIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oICovLAog
CQkJCTFBN0ZBNjFBMEREQTNCQkUwMDI4RjhBNSAvKiBOZXR3b3JrU3RhdGVOb3RpZmllci5jcHAg
Ki8sCiAJCQkJMUE3RkE2MTgwRERBM0IzQTAwMjhGOEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVy
LmggKi8sCiAJCQkJNDQ3OTU4MDIxNjQzQjQ3QjAwMUUwQTdGIC8qIFBhcnNlZENvbnRlbnRUeXBl
LmNwcCAqLywKQEAgLTIwNDAzLDEzICsyMDQwNiwxMyBAQAogCQkJCTdFRTY4NDRFMTJEMjZFMzgw
MEU3OTQxNSAvKiBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oICovLAogCQkJCTdFRTY4NDRGMTJE
MjZFMzgwMEU3OTQxNSAvKiBDb29raWVKYXJDRk5ldC5jcHAgKi8sCiAJCQkJN0VFNjg0NTAxMkQy
NkUzODAwRTc5NDE1IC8qIENvb2tpZVN0b3JhZ2VDRk5ldC5jcHAgKi8sCi0JCQkJN0VFNjg0NTEx
MkQyNkUzODAwRTc5NDE1IC8qIENvb2tpZVN0b3JhZ2VDRk5ldC5oICovLAogCQkJCTdFRTY4NDUy
MTJEMjZFMzgwMEU3OTQxNSAvKiBDcmVkZW50aWFsU3RvcmFnZUNGTmV0LmNwcCAqLywKIAkJCQlC
MkYzNEZFODBFODJGODI3MDBGNjI3Q0QgLyogRE5TQ0ZOZXQuY3BwICovLAogCQkJCTdFRTY4NDUz
MTJEMjZFMzgwMEU3OTQxNSAvKiBGb3JtRGF0YVN0cmVhbUNGTmV0LmNwcCAqLywKIAkJCQk3RUU2
ODQ1NDEyRDI2RTM4MDBFNzk0MTUgLyogRm9ybURhdGFTdHJlYW1DRk5ldC5oICovLAogCQkJCTdF
RTY4NDU1MTJEMjZFMzgwMEU3OTQxNSAvKiBMb2FkZXJSdW5Mb29wQ0YuY3BwICovLAogCQkJCTdF
RTY4NDU2MTJEMjZFMzgwMEU3OTQxNSAvKiBMb2FkZXJSdW5Mb29wQ0YuaCAqLywKKwkJCQlFMTNF
RjM0NzE2ODUwQzQ3MDAzNEM4M0YgLyogTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ0ZOZXQuY3BwICov
LAogCQkJCTFBRjhFMUMxMTI1NjczRTAwMDIzMEZGNyAvKiBQcm94eVNlcnZlckNGTmV0LmNwcCAq
LywKIAkJCQk3RUU2ODQ1NzEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VFcnJvci5oICovLAog
CQkJCTdFRTY4NDU4MTJEMjZFMzgwMEU3OTQxNSAvKiBSZXNvdXJjZUVycm9yQ0YuY3BwICovLApA
QCAtMjI4OTQsNyArMjI4OTcsNiBAQAogCQkJCUQ4QjYxNTJGMTAzMjQ5NTEwMEM4NTU0QSAvKiBD
b29raWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzOUI1QjYzMTMxREFBMzIwMEY0OEQwMiAvKiBD
b29raWVzU3RyYXRlZ3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzRDAyMTJEMTMxREIzN0IwMDQw
OTFBOCAvKiBDb29raWVTdG9yYWdlLmggaW4gSGVhZGVycyAqLywKLQkJCQk3RUU2ODQ2NDEyRDI2
RTM4MDBFNzk0MTUgLyogQ29va2llU3RvcmFnZUNGTmV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlG
RTZGRDQ4ODBGNjc2RTU3MDAwOTI4NzMgLyogQ29vcmRpbmF0ZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4MEU2RDA0MEExOTg5Q0EwMDdGQjhDNSAvKiBDb3VudGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzVFQjk3OTBFODIwNjkyMDBCMjU5NjUgLyogQ291bnRlckNvbnRlbnQuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjU5ODIsNiArMjU5ODQsNyBAQAogCQkJCUYzN0E1NjIzMTY3OUNGN0IwMEM1
NzA0NiAvKiBIZWFwR3JhcGhTZXJpYWxpemVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkI4ODkw
QTE2N0QyRkExMDAxMENEQTUgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGQjg4OTBGMTY3RDMwMTYwMDEwQ0RBNSAvKiBTY3JvbGxpbmdTdGF0ZVN0aWNr
eU5vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUUxM0VGMzQ0MTY4NEVDRjQwMDM0QzgzRiAvKiBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjkxMDAsNiArMjkxMDMs
NyBAQAogCQkJCTBGQjg4OTBCMTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5
Tm9kZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGQjg4OTBFMTY3RDMwMTYwMDEwQ0RBNSAvKiBT
Y3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjA5QjQ1NkIx
Njc5NkE3RTAwRTU0RTRFIC8qIEpTQ3J5cHRvQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUUxM0VGMzQ5MTY4NTBDNDcwMDM0QzgzRiAvKiBOZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Db29raWVKYXIuY3BwCShy
ZXZpc2lvbiAxMzg0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ29va2llSmFyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5j
bHVkZSAiUGxhdGZvcm1Db29raWVKYXIuaCIKIAogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVT
KQpAQCAtNDMsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBOZXR3b3Jr
aW5nQ29udGV4dCogbmV0d29ya2luZ0NvbnRleHQoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50KQog
eworICAgIC8vIEZJWE1FOiBSZXR1cm5pbmcgMCBtZWFucyBmYWxsaW5nIGJhY2sgdG8gZGVmYXVs
dCBjb250ZXh0LiBUaGF0J3Mgbm90IGEgY2hvaWNlIHRoYXQgaXMgYXBwcm9wcmlhdGUgdG8gZG8g
YXQgcnVudGltZQogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiAwOwogICAgIEZy
YW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwpAQCAtNTQsNTcgKzU2LDY4IEBAIHN0YXRp
YyBOZXR3b3JraW5nQ29udGV4dCogbmV0d29ya2luZ0NvbnQKICAgICByZXR1cm4gbG9hZGVyLT5u
ZXR3b3JraW5nQ29udGV4dCgpOwogfQogCisjaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRX
T1JLKQoraW5saW5lIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24oY29uc3Qg
RG9jdW1lbnQqIGRvY3VtZW50KQoreworICAgIE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0ID0g
bmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpOworICAgIHJldHVybiBjb250ZXh0ID8gY29udGV4
dC0+c3RvcmFnZVNlc3Npb24oKSA6IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3Jh
Z2VTZXNzaW9uKCk7Cit9CisjZGVmaW5lIFNFU1NJT04oZG9jdW1lbnQpIHN0b3JhZ2VTZXNzaW9u
KGRvY3VtZW50KQorI2Vsc2UKKyNkZWZpbmUgU0VTU0lPTihkb2N1bWVudCkgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uKG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSkKKyNlbmRpZgorCiBTdHJpbmcg
Y29va2llcyhjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCkKIHsKICNp
ZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVz
KCktPmNvb2tpZXNTdHJhdGVneSgpLT5jb29raWVzRm9yRE9NKG5ldHdvcmtpbmdDb250ZXh0KGRv
Y3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVybCk7CisgICAgcmV0
dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+Y29va2llc0ZvckRP
TShTRVNTSU9OKGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVy
bCk7CiAjZWxzZQotICAgIHJldHVybiBjb29raWVzRm9yRE9NKG5ldHdvcmtpbmdDb250ZXh0KGRv
Y3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVybCk7CisgICAgcmV0
dXJuIGNvb2tpZXNGb3JET00oU0VTU0lPTihkb2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5
Rm9yQ29va2llcygpLCB1cmwpOwogI2VuZGlmCiB9CiAKIHZvaWQgc2V0Q29va2llcyhEb2N1bWVu
dCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcp
CiB7CiAjaWYgVVNFKFBMQVRGT1JNX1NUUkFURUdJRVMpCi0gICAgcGxhdGZvcm1TdHJhdGVnaWVz
KCktPmNvb2tpZXNTdHJhdGVneSgpLT5zZXRDb29raWVzRnJvbURPTShuZXR3b3JraW5nQ29udGV4
dChkb2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwsIGNvb2tp
ZVN0cmluZyk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLT5z
ZXRDb29raWVzRnJvbURPTShTRVNTSU9OKGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlG
b3JDb29raWVzKCksIHVybCwgY29va2llU3RyaW5nKTsKICNlbHNlCi0gICAgc2V0Q29va2llc0Zy
b21ET00obmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZv
ckNvb2tpZXMoKSwgdXJsLCBjb29raWVTdHJpbmcpOworICAgIHNldENvb2tpZXNGcm9tRE9NKFNF
U1NJT04oZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBj
b29raWVTdHJpbmcpOwogI2VuZGlmCiB9CiAKIGJvb2wgY29va2llc0VuYWJsZWQoY29uc3QgRG9j
dW1lbnQqIGRvY3VtZW50KQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAgIHJl
dHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmNvb2tpZXNFbmFi
bGVkKG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JD
b29raWVzKCksIGRvY3VtZW50LT5jb29raWVVUkwoKSk7CisgICAgcmV0dXJuIHBsYXRmb3JtU3Ry
YXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+Y29va2llc0VuYWJsZWQoU0VTU0lPTihkb2N1
bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBkb2N1bWVudC0+Y29va2ll
VVJMKCkpOwogI2Vsc2UKLSAgICByZXR1cm4gY29va2llc0VuYWJsZWQobmV0d29ya2luZ0NvbnRl
eHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgZG9jdW1lbnQt
PmNvb2tpZVVSTCgpKTsKKyAgICByZXR1cm4gY29va2llc0VuYWJsZWQoU0VTU0lPTihkb2N1bWVu
dCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBkb2N1bWVudC0+Y29va2llVVJM
KCkpOwogI2VuZGlmCiB9CiAKIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCkKIHsKICNpZiBVU0UoUExB
VEZPUk1fU1RSQVRFR0lFUykKLSAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tp
ZXNTdHJhdGVneSgpLT5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShuZXR3b3JraW5nQ29u
dGV4dChkb2N1bWVudCksIGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygpLCB1cmwpOwor
ICAgIHJldHVybiBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFNFU1NJT04oZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmly
c3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJsKTsKICNlbHNlCi0gICAgcmV0dXJuIGNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKG5ldHdvcmtpbmdDb250ZXh0KGRvY3VtZW50KSwgZG9jdW1lbnQt
PmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVybCk7CisgICAgcmV0dXJuIGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKFNFU1NJT04oZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZv
ckNvb2tpZXMoKSwgdXJsKTsKICNlbmRpZgogfQogCiBib29sIGdldFJhd0Nvb2tpZXMoY29uc3Qg
RG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiBjb29r
aWVzKQogewogI2lmIFVTRShQTEFURk9STV9TVFJBVEVHSUVTKQotICAgIHJldHVybiBwbGF0Zm9y
bVN0cmF0ZWdpZXMoKS0+Y29va2llc1N0cmF0ZWd5KCktPmdldFJhd0Nvb2tpZXMobmV0d29ya2lu
Z0NvbnRleHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSwgdXJs
LCBjb29raWVzKTsKKyAgICByZXR1cm4gcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNTdHJh
dGVneSgpLT5nZXRSYXdDb29raWVzKFNFU1NJT04oZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKSwgdXJsLCBjb29raWVzKTsKICNlbHNlCi0gICAgcmV0dXJuIGdldFJh
d0Nvb2tpZXMobmV0d29ya2luZ0NvbnRleHQoZG9jdW1lbnQpLCBkb2N1bWVudC0+Zmlyc3RQYXJ0
eUZvckNvb2tpZXMoKSwgdXJsLCBjb29raWVzKTsKKyAgICByZXR1cm4gZ2V0UmF3Q29va2llcyhT
RVNTSU9OKGRvY3VtZW50KSwgZG9jdW1lbnQtPmZpcnN0UGFydHlGb3JDb29raWVzKCksIHVybCwg
Y29va2llcyk7CiAjZW5kaWYKIH0KIAogdm9pZCBkZWxldGVDb29raWUoY29uc3QgRG9jdW1lbnQq
IGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsK
ICNpZiBVU0UoUExBVEZPUk1fU1RSQVRFR0lFUykKLSAgICBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+
Y29va2llc1N0cmF0ZWd5KCktPmRlbGV0ZUNvb2tpZShuZXR3b3JraW5nQ29udGV4dChkb2N1bWVu
dCksIHVybCwgY29va2llTmFtZSk7CisgICAgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmNvb2tpZXNT
dHJhdGVneSgpLT5kZWxldGVDb29raWUoU0VTU0lPTihkb2N1bWVudCksIHVybCwgY29va2llTmFt
ZSk7CiAjZWxzZQotICAgIGRlbGV0ZUNvb2tpZShuZXR3b3JraW5nQ29udGV4dChkb2N1bWVudCks
IHVybCwgY29va2llTmFtZSk7CisgICAgZGVsZXRlQ29va2llKFNFU1NJT04oZG9jdW1lbnQpLCB1
cmwsIGNvb2tpZU5hbWUpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBA
QAogCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZUhvc3QuaCIKICNpbmNsdWRlICJBc3luY0Zp
bGVTdHJlYW0uaCIKKyNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1
ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFt
ZUxvYWRlci5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlLmgJKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5j
bHVkZSAiQ2FjaGVQb2xpY3kuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5j
bHVkZSAiUHVyZ2VQcmlvcml0eS5oIgorI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUxvYWRQcmlvcml0eS5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyT3B0
aW9ucy5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ29va2llc1N0cmF0ZWd5LmgJKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL0Nvb2tpZXNTdHJhdGVneS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MywzMCArMzMsMjIgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCi10
eXBlZGVmIHN0cnVjdCBPcGFxdWVDRkhUVFBDb29raWVTdG9yYWdlKiAgQ0ZIVFRQQ29va2llU3Rv
cmFnZVJlZjsKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEtVUkw7Ci1j
bGFzcyBOZXR3b3JraW5nQ29udGV4dDsKK2NsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjsKIHN0
cnVjdCBDb29raWU7CiAKIGNsYXNzIENvb2tpZXNTdHJhdGVneSB7CiBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkKCkgPSAwOwogCi0jaWYgUExBVEZPUk0oTUFD
KSB8fCBVU0UoQ0ZORVRXT1JLKQotICAgIHZpcnR1YWwgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0
b3JhZ2VSZWY+IGRlZmF1bHRDb29raWVTdG9yYWdlKCkgPSAwOwotI2VuZGlmCi0KLSAgICB2aXJ0
dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2ll
c0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25z
dCBLVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpID0gMDsKLSAgICB2aXJ0dWFsIGJv
b2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJikgPSAwOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhOZXR3
b3JraW5nQ29udGV4dCosIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmLCBWZWN0
b3I8Q29va2llPiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtp
bmdDb250ZXh0KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkgPSAwOwor
ICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgY29va2ll
U3RyaW5nKSA9IDA7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmKSA9
IDA7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiwgVmVj
dG9yPENvb2tpZT4mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBjb29raWVO
YW1lKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5Db29raWVzU3RyYXRlZ3koKSB7
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFu
ZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JSZXNvdXJjZUhhbmRsZS5jcHAJKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJIVFRQ
UGFyc2Vycy5oIgogI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4
dC5oIgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRs
ZUNsaWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFnZVNlc3Npb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3
b3JrU3RvcmFnZVNlc3Npb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgTmV0d29ya1N0b3JhZ2VTZXNzaW9uX2gKKyNkZWZpbmUgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uX2gKKworI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09S
SykKK3R5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZVUkxTdG9yYWdlU2Vzc2lvbiogQ0ZVUkxTdG9y
YWdlU2Vzc2lvblJlZjsKK3R5cGVkZWYgc3RydWN0IE9wYXF1ZUNGSFRUUENvb2tpZVN0b3JhZ2Uq
ICBDRkhUVFBDb29raWVTdG9yYWdlUmVmOworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworY2xhc3MgTmV0d29ya2luZ0NvbnRleHQ7CisKK2NsYXNzIE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uKTsgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8
TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBjcmVhdGVEZWZhdWx0U2Vzc2lvbihjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXJCYXNlKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxOZXR3b3JrU3RvcmFnZVNl
c3Npb24+IGNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oY29uc3QgU3RyaW5nJiBpZGVudGlm
aWVyQmFzZSk7CisKKyAgICBzdGF0aWMgdm9pZCBzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7
CisKKyNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCisgICAgLy8gTWF5IGJlIG51
bGwsIGluIHdoaWNoIGNhc2UgYSBGb3VuZGF0aW9uIGRlZmF1bHQgc2hvdWxkIGJlIHVzZWQuCisg
ICAgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBwbGF0Zm9ybVNlc3Npb24oKSB7IHJldHVybiBtX3Bs
YXRmb3JtU2Vzc2lvbi5nZXQoKTsgfQorICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdl
UmVmPiBjb29raWVTdG9yYWdlKCkgY29uc3Q7CisgICAgYm9vbCBpc1ByaXZhdGVCcm93c2luZ1Nl
c3Npb24oKSBjb25zdCB7IHJldHVybiBtX2lzUHJpdmF0ZTsgfQorI2Vsc2UKKyAgICBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24oTmV0d29ya2luZ0NvbnRleHQqKTsKKyAgICB+TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uKCk7CisgICAgTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQoKSBjb25zdDsKKyNlbmRp
ZgorCitwcml2YXRlOgorI2lmIFBMQVRGT1JNKE1BQykgfHwgVVNFKENGTkVUV09SSykKKyAgICBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24oQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBwbGF0Zm9ybVNlc3Np
b24pOworICAgIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOworICAgIFJldGFpblB0cjxDRlVSTFN0
b3JhZ2VTZXNzaW9uUmVmPiBtX3BsYXRmb3JtU2Vzc2lvbjsKKyAgICBib29sIG1faXNQcml2YXRl
OworI2Vsc2UKKyAgICBSZWZQdHI8TmV0d29ya2luZ0NvbnRleHQ+IG1fY29udGV4dDsKKyNlbmRp
ZgorfTsKKworI2lmIFBMQVRGT1JNKFdJTikKKy8vIE5lZWRlZCBmb3IgV2ViS2l0MSBBUEkgb25s
eS4KK3ZvaWQgb3ZlcnJpZGVDb29raWVTdG9yYWdlKENGSFRUUENvb2tpZVN0b3JhZ2VSZWYpOwor
Q0ZIVFRQQ29va2llU3RvcmFnZVJlZiBvdmVycmlkZW5Db29raWVTdG9yYWdlKCk7CisjZW5kaWYK
KworfQorCisjZW5kaWYgLy8gTmV0d29ya1N0b3JhZ2VTZXNzaW9uX2gKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9OZXR3b3JrU3RvcmFn
ZVNlc3Npb25TdHViLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTmV0d29ya1N0b3JhZ2VTZXNzaW9uU3R1Yi5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
TmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5o
IgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24oTmV0d29ya2luZ0Nv
bnRleHQqIGNvbnRleHQpCisgICAgOiBtX2NvbnRleHQoY29udGV4dCkKK3sKK30KKworTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjp+TmV0d29ya1N0b3JhZ2VTZXNzaW9uKCkKK3sKK30KKworTmV0d29y
a2luZ0NvbnRleHQqIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y29udGV4dCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsKK30KKworUGFzc093blB0cjxOZXR3b3JrU3RvcmFn
ZVNlc3Npb24+IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbihjb25zdCBTdHJpbmcmKQoreworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJl
dHVybiBudWxscHRyOworfQorCitOZXR3b3JrU3RvcmFnZVNlc3Npb24mIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiwgc2Vzc2lvbiwgKDApKTsKKyAgICByZXR1cm4gc2Vz
c2lvbjsKK30KKwordm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGlu
Z1Nlc3Npb24oKQoreworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL05ldHdvcmtpbmdDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9OZXR3b3JraW5nQ29udGV4dC5oCShyZXZpc2lvbiAxMzg0MTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL05ldHdvcmtpbmdDb250ZXh0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTIwLDcgKzIwLDkgQEAKICNpZm5kZWYgTmV0d29ya2luZ0NvbnRleHRfaAog
I2RlZmluZSBOZXR3b3JraW5nQ29udGV4dF9oCiAKKyNpbmNsdWRlICJOZXR3b3JrU3RvcmFnZVNl
c3Npb24uaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRh
aW5QdHIuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKICNpbmNsdWRlICJTY2hlZHVsZVBhaXIuaCIK
QEAgLTQwLDEwICs0Miw2IEBAIGNsYXNzIFdlYkNvb2tpZUphcjsKIE9CSkNfQ0xBU1MgTlNPcGVy
YXRpb25RdWV1ZTsKICNlbmRpZgogCi0jaWYgUExBVEZPUk0oTUFDKSB8fCBVU0UoQ0ZORVRXT1JL
KQotdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlVSTFN0b3JhZ2VTZXNzaW9uKiBDRlVSTFN0b3Jh
Z2VTZXNzaW9uUmVmOwotI2VuZGlmCi0KICNpZiBQTEFURk9STShRVCkKIFFUX0JFR0lOX05BTUVT
UEFDRQogY2xhc3MgUU9iamVjdDsKQEAgLTY4LDYgKzY2LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAjaWYgUExBVEZPUk0o
Q0hST01JVU0pCisgICAgLy8gRklYTUU6IFdyYXAgV2ViQ29va2llSmFyIGludG8gYSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb24gdG8gbWFrZSB0aGUgY29kZSBjcm9zcy1wbGF0Zm9ybS4KICAgICB2aXJ0
dWFsIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVKYXIoKSBjb25zdCA9IDA7CiAjZW5kaWYK
IApAQCAtODAsMTEgKzc5LDEyIEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFD
KSB8fCBVU0UoQ0ZORVRXT1JLKQotICAgIHZpcnR1YWwgYm9vbCBpblByaXZhdGVCcm93c2luZ01v
ZGUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHN0b3Jh
Z2VTZXNzaW9uKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgPSAwOwogI2VuZGlmCiAKICNpZiBQTEFURk9STShR
VCkKKyAgICAvLyBGSVhNRTogV3JhcCBRTmV0d29ya0FjY2Vzc01hbmFnZXIgaW50byBhIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiB0byBtYWtlIHRoZSBjb2RlIGNyb3NzLXBsYXRmb3JtLgogICAgIHZp
cnR1YWwgUU9iamVjdCogb3JpZ2luYXRpbmdPYmplY3QoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCBRTmV0d29ya0FjY2Vzc01hbmFnZXIqIG5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBtaW1lU25pZmZpbmdFbmFibGVkKCkgY29uc3QgPSAwOwpAQCAt
OTgsNiArOTgsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lmIFVTRShTT1VQKQorICAgIC8vIEZJ
WE1FOiBXcmFwIFNvdXBTZXNzaW9uIGludG8gYSBOZXR3b3JrU3RvcmFnZVNlc3Npb24gdG8gbWFr
ZSB0aGUgY29kZSBjcm9zcy1wbGF0Zm9ybS4KICAgICB2aXJ0dWFsIFNvdXBTZXNzaW9uKiBzb3Vw
U2Vzc2lvbigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHVpbnQ2NF90IGluaXRpYXRpbmdQYWdl
SUQoKSBjb25zdCA9IDA7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1BsYXRmb3JtQ29va2llSmFyLmgJKHJldmlzaW9uIDEzODQxMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUGxhdGZvcm1Db29raWVKYXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsMTkgKzM0LDE5IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEtVUkw7Ci1jbGFzcyBOZXR3b3JraW5nQ29udGV4dDsKK2NsYXNzIE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbjsKIHN0cnVjdCBDb29raWU7CiAKIC8vIElmIG5ldHdvcmtpbmcgY29udGV4dCBpcyBu
dWxsLCBkZWZhdWx0IGNvb2tpZSBzdG9yYWdlIGlzIHVzZWQuCi1TdHJpbmcgY29va2llc0ZvckRP
TShOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
KTsKLXZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJik7Ci1ib29sIGNvb2tpZXNF
bmFibGVkKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYpOwotU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdD
b250ZXh0KiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYpOwotYm9vbCBnZXRS
YXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYsIFZlY3RvcjxDb29raWU+Jik7Ci12b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JraW5n
Q29udGV4dCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKTsKLXZvaWQgZ2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1l
cyk7Ci12b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShOZXR3b3JraW5nQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgaG9zdG5hbWUpOwotdm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtpbmdD
b250ZXh0Kik7CitTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJik7Cit2b2lkIHNldENvb2tp
ZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKTsKK2Jvb2wgY29va2llc0VuYWJsZWQo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgS1VSTCYpOworU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwm
KTsKK2Jvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiwgVmVjdG9yPENvb2tpZT4mKTsKK3ZvaWQg
ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmKTsKK3ZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpOwordm9pZCBkZWxl
dGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3Qg
U3RyaW5nJiBob3N0bmFtZSk7Cit2b2lkIGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJik7CiAKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUhhbmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5jcHAJKHJldmlzaW9uIDEzODQxMSkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJCbG9iUmVnaXN0cnkuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVk
ZSA8YWxnb3JpdGhtPgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUhhbmRsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VIYW5kbGUuaAkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwx
MyArMjYsMTMgQEAKICNpZm5kZWYgUmVzb3VyY2VIYW5kbGVfaAogI2RlZmluZSBSZXNvdXJjZUhh
bmRsZV9oCiAKLSNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgogI2luY2x1ZGUg
IkF1dGhlbnRpY2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck1hcC5oIgotI2lu
Y2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKICNpZiBVU0UoU09VUCkKK3R5cGVkZWYgc3RydWN0
IF9HVGxzQ2VydGlmaWNhdGUgR1Rsc0NlcnRpZmljYXRlOwogdHlwZWRlZiBzdHJ1Y3QgX1NvdXBT
ZXNzaW9uIFNvdXBTZXNzaW9uOwogdHlwZWRlZiBzdHJ1Y3QgX1NvdXBSZXF1ZXN0IFNvdXBSZXF1
ZXN0OwogI2VuZGlmCkBAIC03OCw2ICs3OCw3IEBAIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOwogY2xhc3MgQ3JlZGVudGlhbDsKIGNsYXNzIEZyYW1lOwogY2xhc3MgS1VSTDsKK2NsYXNz
IE5ldHdvcmtpbmdDb250ZXh0OwogY2xhc3MgUHJvdGVjdGlvblNwYWNlOwogY2xhc3MgUmVzb3Vy
Y2VFcnJvcjsKIGNsYXNzIFJlc291cmNlSGFuZGxlQ2xpZW50OwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFs
LmgJKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
UmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaWZuZGVmIFJlc291cmNlSGFuZGxlSW50ZXJuYWxfaAogI2RlZmluZSBSZXNvdXJjZUhhbmRs
ZUludGVybmFsX2gKIAorI2luY2x1ZGUgIk5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRl
ICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVKYXJDRk5ldC5jcHAJKHJldmlzaW9uIDEz
ODQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvQ29va2llSmFyQ0ZO
ZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSw4IEBACiAjaWYgVVNFKENGTkVUV09S
SykKIAogI2luY2x1ZGUgIkNvb2tpZS5oIgotI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2VDRk5ldC5o
IgogI2luY2x1ZGUgIktVUkwuaCIKLSNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxl
LmgiCiAjaW5jbHVkZSAiU29mdExpbmtpbmcuaCIKICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIVFRQ
Q29va2llc1ByaXYuaD4KQEAgLTk1LDE1ICs5NCwxMiBAQCBzdGF0aWMgUmV0YWluUHRyPENGQXJy
YXlSZWY+IGZpbHRlckNvb2tpCiAgICAgcmV0dXJuIGZpbHRlcmVkQ29va2llczsKIH0KIAotdm9p
ZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQordm9p
ZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkKIHsKICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTYzMjg4Mz4gQ0ZIVFRQQ29va2llU3Rv
cmFnZSBzdG9yZXMgYW4gZW1wdHkgY29va2llLCB3aGljaCB3b3VsZCBiZSBzZW50IGFzICJDb29r
aWU6ID0iLgogICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4
dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENv
b2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7Ci0KICAgICBSZXRhaW5Q
dHI8Q0ZVUkxSZWY+IHVybENGKEFkb3B0Q0YsIHVybC5jcmVhdGVDRlVSTCgpKTsKICAgICBSZXRh
aW5QdHI8Q0ZVUkxSZWY+IGZpcnN0UGFydHlGb3JDb29raWVzQ0YoQWRvcHRDRiwgZmlyc3RQYXJ0
eS5jcmVhdGVDRlVSTCgpKTsKIApAQCAtMTE5LDU0ICsxMTUsNDMgQEAgdm9pZCBzZXRDb29raWVz
RnJvbURPTShOZXR3b3JraW5nQ29udGV4dAogICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBjb29r
aWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llQ3JlYXRlV2l0aFJlc3BvbnNlSGVhZGVyRmllbGRz
KGtDRkFsbG9jYXRvckRlZmF1bHQsCiAgICAgICAgIGhlYWRlckZpZWxkc0NGLmdldCgpLCB1cmxD
Ri5nZXQoKSkpOwogCi0gICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNldENvb2tpZXMoY29va2llU3Rv
cmFnZS5nZXQoKSwgZmlsdGVyQ29va2llcyhjb29raWVzQ0YuZ2V0KCkpLmdldCgpLCB1cmxDRi5n
ZXQoKSwgZmlyc3RQYXJ0eUZvckNvb2tpZXNDRi5nZXQoKSk7CisgICAgQ0ZIVFRQQ29va2llU3Rv
cmFnZVNldENvb2tpZXMoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIGZpbHRlckNvb2tp
ZXMoY29va2llc0NGLmdldCgpKS5nZXQoKSwgdXJsQ0YuZ2V0KCksIGZpcnN0UGFydHlGb3JDb29r
aWVzQ0YuZ2V0KCkpOwogfQogCi1TdHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4
dCogY29udGV4dCwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVz
Rm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYs
IGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJl
Zj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShj
b250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCk7Ci0gICAgQVNTRVJUKGNvb2tp
ZVN0b3JhZ2UpOwotCiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmxDRihBZG9wdENGLCB1cmwu
Y3JlYXRlQ0ZVUkwoKSk7CiAKICAgICBib29sIHNlY3VyZSA9IHVybC5wcm90b2NvbElzKCJodHRw
cyIpOwotICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQ
Q29va2llU3RvcmFnZUNvcHlDb29raWVzRm9yVVJMKGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHVybENG
LmdldCgpLCBzZWN1cmUpKTsKKyAgICBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4gY29va2llc0NGKEFk
b3B0Q0YsIENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2llc0ZvclVSTChzZXNzaW9uLmNvb2tp
ZVN0b3JhZ2UoKS5nZXQoKSwgdXJsQ0YuZ2V0KCksIHNlY3VyZSkpOwogICAgIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IGhlYWRlckNGKEFkb3B0Q0YsIENGSFRUUENvb2tpZUNvcHlSZXF1ZXN0
SGVhZGVyRmllbGRzKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZpbHRlckNvb2tpZXMoY29va2llc0NG
LmdldCgpKS5nZXQoKSkpOwogICAgIHJldHVybiAoQ0ZTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUoaGVhZGVyQ0YuZ2V0KCksIHNfY29va2llQ0YpOwogfQogCi1TdHJpbmcgY29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtV
UkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgY29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQogewotICAgIFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1
cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0
b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7Ci0KICAgICBSZXRhaW5QdHI8Q0ZV
UkxSZWY+IHVybENGKEFkb3B0Q0YsIHVybC5jcmVhdGVDRlVSTCgpKTsKIAogICAgIGJvb2wgc2Vj
dXJlID0gdXJsLnByb3RvY29sSXMoImh0dHBzIik7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+
IGNvb2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkwo
Y29va2llU3RvcmFnZS5nZXQoKSwgdXJsQ0YuZ2V0KCksIHNlY3VyZSkpOworICAgIFJldGFpblB0
cjxDRkFycmF5UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlD
b29raWVzRm9yVVJMKHNlc3Npb24uY29va2llU3RvcmFnZSgpLmdldCgpLCB1cmxDRi5nZXQoKSwg
c2VjdXJlKSk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaGVhZGVyQ0YoQWRvcHRD
RiwgQ0ZIVFRQQ29va2llQ29weVJlcXVlc3RIZWFkZXJGaWVsZHMoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgY29va2llc0NGLmdldCgpKSk7CiAgICAgcmV0dXJuIChDRlN0cmluZ1JlZilDRkRpY3Rpb25h
cnlHZXRWYWx1ZShoZWFkZXJDRi5nZXQoKSwgc19jb29raWVDRik7CiB9CiAKLWJvb2wgY29va2ll
c0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIC8qZmlyc3RQ
YXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQorYm9vbCBjb29raWVzRW5hYmxlZChjb25zdCBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSov
LCBjb25zdCBLVVJMJiAvKnVybCovKQogewotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9y
YWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9y
YWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQo
Y29va2llU3RvcmFnZSk7Ci0KLSAgICBDRkhUVFBDb29raWVTdG9yYWdlQWNjZXB0UG9saWN5IHBv
bGljeSA9IENGSFRUUENvb2tpZVN0b3JhZ2VHZXRDb29raWVBY2NlcHRQb2xpY3koY29va2llU3Rv
cmFnZS5nZXQoKSk7CisgICAgQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeSBwb2xpY3kg
PSBDRkhUVFBDb29raWVTdG9yYWdlR2V0Q29va2llQWNjZXB0UG9saWN5KHNlc3Npb24uY29va2ll
U3RvcmFnZSgpLmdldCgpKTsKICAgICByZXR1cm4gcG9saWN5ID09IENGSFRUUENvb2tpZVN0b3Jh
Z2VBY2NlcHRQb2xpY3lPbmx5RnJvbU1haW5Eb2N1bWVudERvbWFpbiB8fCBwb2xpY3kgPT0gQ0ZI
VFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeUFsd2F5czsKIH0KIAotYm9vbCBnZXRSYXdDb29r
aWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkq
LywgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgZ2V0
UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdD
b29raWVzKQogewogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQ
Q29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IGNvbnRleHQgPyBjdXJyZW50Q0ZIVFRQ
Q29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCk7Ci0g
ICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2UpOwogCiAgICAgUmV0YWluUHRyPENGVVJMUmVmPiB1cmxD
RihBZG9wdENGLCB1cmwuY3JlYXRlQ0ZVUkwoKSk7CiAKICAgICBib29sIHNlbmRTZWN1cmVDb29r
aWVzID0gdXJsLnByb3RvY29sSXMoImh0dHBzIik7Ci0gICAgUmV0YWluUHRyPENGQXJyYXlSZWY+
IGNvb2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXNGb3JVUkwo
Y29va2llU3RvcmFnZS5nZXQoKSwgdXJsQ0YuZ2V0KCksIHNlbmRTZWN1cmVDb29raWVzKSk7Cisg
ICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tpZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVT
dG9yYWdlQ29weUNvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHVy
bENGLmdldCgpLCBzZW5kU2VjdXJlQ29va2llcykpOwogCiAgICAgQ0ZJbmRleCBjb3VudCA9IENG
QXJyYXlHZXRDb3VudChjb29raWVzQ0YuZ2V0KCkpOwogICAgIHJhd0Nvb2tpZXMucmVzZXJ2ZUNh
cGFjaXR5KGNvdW50KTsKQEAgLTE5MCwxMCArMTc1LDkgQEAgYm9vbCBnZXRSYXdDb29raWVzKE5l
dHdvcmtpbmdDb250ZXh0KiBjbwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIGRlbGV0ZUNv
b2tpZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBT
dHJpbmcmIG5hbWUpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAg
IFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4
dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENv
b2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7CisgICAgUmV0YWluUHRy
PENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBzZXNzaW9uLmNvb2tpZVN0
b3JhZ2UoKTsKIAogICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsQ0YoQWRvcHRDRiwgdXJsLmNy
ZWF0ZUNGVVJMKCkpOwogCkBAIC0yMTAsMTIgKzE5NCw5IEBAIHZvaWQgZGVsZXRlQ29va2llKE5l
dHdvcmtpbmdDb250ZXh0KiBjb24KICAgICB9CiB9CiAKLXZvaWQgZ2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5h
bWVzKQordm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIEhhc2hTZXQ8U3RyaW5nPiYgaG9zdG5hbWVzKQogewotICAgIFJldGFp
blB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1
cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0
b3JhZ2UoKTsKLSAgICBBU1NFUlQoY29va2llU3RvcmFnZSk7Ci0KLSAgICBSZXRhaW5QdHI8Q0ZB
cnJheVJlZj4gY29va2llc0NGKEFkb3B0Q0YsIENGSFRUUENvb2tpZVN0b3JhZ2VDb3B5Q29va2ll
cyhjb29raWVTdG9yYWdlLmdldCgpKSk7CisgICAgUmV0YWluUHRyPENGQXJyYXlSZWY+IGNvb2tp
ZXNDRihBZG9wdENGLCBDRkhUVFBDb29raWVTdG9yYWdlQ29weUNvb2tpZXMoc2Vzc2lvbi5jb29r
aWVTdG9yYWdlKCkuZ2V0KCkpKTsKICAgICBpZiAoIWNvb2tpZXNDRikKICAgICAgICAgcmV0dXJu
OwogCkBAIC0yMjcsMTAgKzIwOCw5IEBAIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0
d29ya2luZ0MKICAgICB9CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdv
cmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQordm9pZCBkZWxl
dGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVT
dG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVT
dG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBBU1NF
UlQoY29va2llU3RvcmFnZSk7CisgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+
IGNvb2tpZVN0b3JhZ2UgPSBzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKTsKIAogICAgIFJldGFpblB0
cjxDRkFycmF5UmVmPiBjb29raWVzQ0YoQWRvcHRDRiwgQ0ZIVFRQQ29va2llU3RvcmFnZUNvcHlD
b29raWVzKGNvb2tpZVN0b3JhZ2UuZ2V0KCkpKTsKICAgICBpZiAoIWNvb2tpZXNDRikKQEAgLTI0
NSwxMiArMjI1LDkgQEAgdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZwog
ICAgIH0KIH0KIAotdm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250
ZXh0KQordm9pZCBkZWxldGVBbGxDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbikKIHsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2ll
U3RvcmFnZSA9IGNvbnRleHQgPyBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6
IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCk7Ci0gICAgQVNTRVJUKGNvb2tpZVN0b3JhZ2Up
OwotCi0gICAgQ0ZIVFRQQ29va2llU3RvcmFnZURlbGV0ZUFsbENvb2tpZXMoY29va2llU3RvcmFn
ZS5nZXQoKSk7CisgICAgQ0ZIVFRQQ29va2llU3RvcmFnZURlbGV0ZUFsbENvb2tpZXMoc2Vzc2lv
bi5jb29raWVTdG9yYWdlKCkuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5l
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9D
b29raWVTdG9yYWdlQ0ZOZXQuY3BwCShyZXZpc2lvbiAxMzg0MTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0Nvb2tpZVN0b3JhZ2VDRk5ldC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDkgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb29r
aWVTdG9yYWdlLmgiCiAKLSNpbmNsdWRlICJDb29raWVTdG9yYWdlQ0ZOZXQuaCIKLQotI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgi
CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTQ4
LDU2ICs0Niw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFBMQVRGT1JNKFdJTikKIAot
c3RhdGljIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiYgY29va2llU3RvcmFnZU92
ZXJyaWRlKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJldGFpblB0cjxDRkhUVFBDb29r
aWVTdG9yYWdlUmVmPiwgY29va2llU3RvcmFnZSwgKCkpOwotICAgIHJldHVybiBjb29raWVTdG9y
YWdlOwotfQotCi0jZW5kaWYKLQotUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGN1
cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQotewot
I2lmIFBMQVRGT1JNKFdJTikKLSAgICBpZiAoUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VS
ZWY+JiBvdmVycmlkZSA9IGNvb2tpZVN0b3JhZ2VPdmVycmlkZSgpKQotICAgICAgICByZXR1cm4g
b3ZlcnJpZGU7Ci0jZW5kaWYKLQotICAgIGlmIChDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHNlc3Np
b24gPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpKQotICAgICAgICByZXR1cm4gUmV0YWluUHRy
PENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+KEFkb3B0Q0YsIHdrQ29weUhUVFBDb29raWVTdG9yYWdl
KHNlc3Npb24pKTsKLQotI2lmIFVTRShDRk5FVFdPUkspCi0gICAgcmV0dXJuIHdrR2V0RGVmYXVs
dEhUVFBDb29raWVTdG9yYWdlKCk7Ci0jZWxzZQotICAgIC8vIFdoZW4gdXNpbmcgTlNVUkxDb25u
ZWN0aW9uLCB3ZSBhbHNvIHVzZSBpdHMgc2hhcmVkIGNvb2tpZSBzdG9yYWdlLgotICAgIHJldHVy
biAwOwotI2VuZGlmCi19Ci0KLVJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBkZWZh
dWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpCi17Ci0jaWYgUExBVEZPUk0oV0lOKQotICAgIGlmIChS
ZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4mIG92ZXJyaWRlID0gY29va2llU3RvcmFn
ZU92ZXJyaWRlKCkpCi0gICAgICAgIHJldHVybiBvdmVycmlkZTsKLSNlbmRpZgotCi0gICAgcmV0
dXJuIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29raWVzU3RyYXRlZ3koKS0+ZGVmYXVsdENvb2tp
ZVN0b3JhZ2UoKTsKLX0KLQotI2lmIFBMQVRGT1JNKFdJTikKLQotdm9pZCBvdmVycmlkZUNvb2tp
ZVN0b3JhZ2UoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKQotewotICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgLy8gRklYTUU6IFdoeSBkb24ndCB3ZSByZXRhaW4g
aXQ/IFRoZSBvbmx5IGNhbGxlciBpcyBhbiBBUEkgbWV0aG9kIHRoYXQgdGFrZXMgY29va2llIHN0
b3JhZ2UgYXMgYSByYXcgYXJndW1lbnQuCi0gICAgY29va2llU3RvcmFnZU92ZXJyaWRlKCkuYWRv
cHRDRihjb29raWVTdG9yYWdlKTsKLX0KLQotQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBvdmVycmlk
ZW5Db29raWVTdG9yYWdlKCkKLXsKLSAgICByZXR1cm4gY29va2llU3RvcmFnZU92ZXJyaWRlKCku
Z2V0KCk7Ci19Ci0KIHN0YXRpYyB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkT25NYWluVGhyZWFk
KHZvaWQqKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC0xMzAsNyArNzgsNyBA
QCB2b2lkIHN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcygpCiAgICAgQ0ZSdW5Mb29wUmVmIHJ1
bkxvb3AgPSBjb29raWVTdG9yYWdlT2JzZXJ2ZXJSdW5Mb29wKCk7CiAgICAgQVNTRVJUKHJ1bkxv
b3ApOwogCi0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3Jh
Z2UgPSBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOworICAgIFJldGFpblB0cjxDRkhUVFBD
b29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpk
ZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCk7CiAgICAgQVNTRVJUKGNvb2tp
ZVN0b3JhZ2UpOwogCiAgICAgQ0ZIVFRQQ29va2llU3RvcmFnZVNjaGVkdWxlV2l0aFJ1bkxvb3Ao
Y29va2llU3RvcmFnZS5nZXQoKSwgcnVuTG9vcCwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKQEAg
LTE0NCw3ICs5Miw3IEBAIHZvaWQgc3RvcE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoKQogICAgIENG
UnVuTG9vcFJlZiBydW5Mb29wID0gY29va2llU3RvcmFnZU9ic2VydmVyUnVuTG9vcCgpOwogICAg
IEFTU0VSVChydW5Mb29wKTsKIAotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVm
PiBjb29raWVTdG9yYWdlID0gZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKKyAgICBSZXRh
aW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpOwogICAg
IEFTU0VSVChjb29raWVTdG9yYWdlKTsKIAogICAgIENGSFRUUENvb2tpZVN0b3JhZ2VSZW1vdmVP
YnNlcnZlcihjb29raWVTdG9yYWdlLmdldCgpLCBydW5Mb29wLCBrQ0ZSdW5Mb29wRGVmYXVsdE1v
ZGUsIG5vdGlmeUNvb2tpZXNDaGFuZ2VkLCAwKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvQ29va2llU3RvcmFnZUNGTmV0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVTdG9yYWdlQ0ZOZXQuaAkocmV2aXNp
b24gMTM4NDExKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Db29raWVT
dG9yYWdlQ0ZOZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQot
I2lmbmRlZiBDb29raWVTdG9yYWdlQ0ZOZXRfaAotI2RlZmluZSBDb29raWVTdG9yYWdlQ0ZOZXRf
aAotCi0jaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgotCi10eXBlZGVmIHN0cnVjdCBPcGFxdWVD
RkhUVFBDb29raWVTdG9yYWdlKiAgQ0ZIVFRQQ29va2llU3RvcmFnZVJlZjsKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBOZXR3b3JraW5nQ29udGV4dDsKLQotUmV0YWluUHRyPENGSFRU
UENvb2tpZVN0b3JhZ2VSZWY+IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKE5ldHdvcmtpbmdD
b250ZXh0Kik7IC8vIFdpbGwgYmUgbnVsbCB3aGVuIHVzaW5nIHNoYXJlZCBOU0hUVFBDb29raWVT
dG9yYWdlLgotUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGRlZmF1bHRDRkhUVFBD
b29raWVTdG9yYWdlKCk7IC8vIERvZXNuJ3QgdGFrZSBjdXJyZW50IHNlc3Npb24gaW50byBhY2Nv
dW50LgotCi0jaWYgUExBVEZPUk0oV0lOKQotLy8gTmVlZGVkIGZvciBXZWJLaXQxIEFQSSBvbmx5
Lgotdm9pZCBvdmVycmlkZUNvb2tpZVN0b3JhZ2UoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZik7Ci1D
RkhUVFBDb29raWVTdG9yYWdlUmVmIG92ZXJyaWRlbkNvb2tpZVN0b3JhZ2UoKTsKLSNlbmRpZgot
Ci19Ci0KLSNlbmRpZiAvLyBDb29raWVTdG9yYWdlQ0ZOZXRfaApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3RvcmFnZVNlc3Npb25DRk5ldC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9OZXR3b3JrU3Rv
cmFnZVNlc3Npb25DRk5ldC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkNGTmV0LmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiTmV0d29ya1N0b3JhZ2VTZXNzaW9uLmgiCisKKyNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKKyNpZiBQTEFURk9STShNQUMp
CisjaW5jbHVkZSAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgorI2Vsc2UKKyNpbmNsdWRlIDxX
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CisjZW5kaWYKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitOZXR3b3JrU3RvcmFnZVNlc3Npb246Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbihDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHBsYXRmb3JtU2Vzc2lvbikKKyAgICA6
IG1fcGxhdGZvcm1TZXNzaW9uKHBsYXRmb3JtU2Vzc2lvbikKKyAgICAsIG1faXNQcml2YXRlKGZh
bHNlKQoreworfQorCitzdGF0aWMgT3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4mIGRlZmF1
bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiwg
c2Vzc2lvbiwgKCkpOworICAgIHJldHVybiBzZXNzaW9uOworfQorCit2b2lkIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbjo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpCit7CisgICAgLy8gU2V0IGEg
cHJpdmF0ZSBzZXNzaW9uIGZvciB0ZXN0aW5nIHRvIGF2b2lkIGludGVyZmVyaW5nIHdpdGggZ2xv
YmFsIGNvb2tpZXMuIFRoaXMgc2hvdWxkIGJlIGRpZmZlcmVudCBmcm9tIHByaXZhdGUgYnJvd3Np
bmcgc2Vzc2lvbi4KKyAgICAvLyBGSVhNRTogSXQgbG9va3MgbGlrZSBjcmVhdGluZyBhIG5ldyBz
ZXNzaW9uIHdpdGggdGhlIHNhbWUgaWRlbnRpZmllciBtYXkgYmUganVzdCBjcmVhdGluZyBhIHJl
ZmVyZW5jZSB0byB0aGUgc2FtZSBzdG9yYWdlLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzExNTcxNDUw
PiBhbmQgPHJkYXI6Ly9wcm9ibGVtLzEyMzg0MzgwPi4KKyNpZiBQTEFURk9STShNQUMpCisgICAg
ZGVmYXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpID0gYWRvcHRQdHIobmV3IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbih3a0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihDRlNUUigiUHJpdmF0ZSBX
ZWJLaXQgU2Vzc2lvbiIpKSkpOworI2Vsc2UKKyAgICBkZWZhdWx0TmV0d29ya1N0b3JhZ2VTZXNz
aW9uKCkgPSBhZG9wdFB0cihuZXcgTmV0d29ya1N0b3JhZ2VTZXNzaW9uKHdrQ3JlYXRlUHJpdmF0
ZVN0b3JhZ2VTZXNzaW9uKENGU1RSKCJQcml2YXRlIFdlYktpdCBTZXNzaW9uIiksIGRlZmF1bHRO
ZXR3b3JrU3RvcmFnZVNlc3Npb24oKS0+cGxhdGZvcm1TZXNzaW9uKCkpKSk7CisjZW5kaWYKK30K
KworI2lmIFBMQVRGT1JNKFdJTikKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFn
ZVJlZj4mIGNvb2tpZVN0b3JhZ2VPdmVycmlkZSgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4sIGNvb2tpZVN0b3JhZ2UsICgpKTsK
KyAgICByZXR1cm4gY29va2llU3RvcmFnZTsKK30KKwordm9pZCBvdmVycmlkZUNvb2tpZVN0b3Jh
Z2UoQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBjb29raWVTdG9yYWdlKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgLy8gRklYTUU6IFdoeSBkb24ndCB3ZSByZXRhaW4gaXQ/IFRo
ZSBvbmx5IGNhbGxlciBpcyBhbiBBUEkgbWV0aG9kIHRoYXQgdGFrZXMgY29va2llIHN0b3JhZ2Ug
YXMgYSByYXcgYXJndW1lbnQuCisgICAgY29va2llU3RvcmFnZU92ZXJyaWRlKCkuYWRvcHRDRihj
b29raWVTdG9yYWdlKTsKK30KKworQ0ZIVFRQQ29va2llU3RvcmFnZVJlZiBvdmVycmlkZW5Db29r
aWVTdG9yYWdlKCkKK3sKKyAgICByZXR1cm4gY29va2llU3RvcmFnZU92ZXJyaWRlKCkuZ2V0KCk7
Cit9CisjZW5kaWYKKworTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBOZXR3b3JrU3RvcmFnZVNlc3Np
b246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpCit7CisgICAgaWYgKCFkZWZhdWx0TmV0d29ya1N0
b3JhZ2VTZXNzaW9uKCkpCisgICAgICAgIGRlZmF1bHROZXR3b3JrU3RvcmFnZVNlc3Npb24oKSA9
IGFkb3B0UHRyKG5ldyBOZXR3b3JrU3RvcmFnZVNlc3Npb24oMCkpOworICAgIHJldHVybiAqZGVm
YXVsdE5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpOworfQorCitQYXNzT3duUHRyPE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbj4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRlQnJvd3NpbmdT
ZXNzaW9uKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllckJhc2UpCit7CisgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBjZklkZW50aWZpZXIgPSBTdHJpbmcoaWRlbnRpZmllckJhc2UgKyAiLlByaXZh
dGVCcm93c2luZyIpLmNyZWF0ZUNGU3RyaW5nKCk7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAg
T3duUHRyPE5ldHdvcmtTdG9yYWdlU2Vzc2lvbj4gc2Vzc2lvbiA9IGFkb3B0UHRyKG5ldyBOZXR3
b3JrU3RvcmFnZVNlc3Npb24od2tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24oY2ZJZGVudGlm
aWVyLmdldCgpKSkpOworI2Vsc2UKKyAgICBPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiBz
ZXNzaW9uID0gYWRvcHRQdHIobmV3IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbih3a0NyZWF0ZVByaXZh
dGVTdG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIuZ2V0KCksIGRlZmF1bHROZXR3b3JrU3RvcmFn
ZVNlc3Npb24oKS0+cGxhdGZvcm1TZXNzaW9uKCkpKSk7CisjZW5kaWYKKyAgICBzZXNzaW9uLT5t
X2lzUHJpdmF0ZSA9IHRydWU7CisKKyAgICByZXR1cm4gc2Vzc2lvbi5yZWxlYXNlKCk7Cit9CisK
K1JldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBOZXR3b3JrU3RvcmFnZVNlc3Npb246
OmNvb2tpZVN0b3JhZ2UoKSBjb25zdAoreworI2lmIFBMQVRGT1JNKFdJTikKKyAgICBpZiAoUmV0
YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+JiBvdmVycmlkZSA9IGNvb2tpZVN0b3JhZ2VP
dmVycmlkZSgpKQorICAgICAgICByZXR1cm4gb3ZlcnJpZGU7CisjZW5kaWYKKworICAgIGlmICht
X3BsYXRmb3JtU2Vzc2lvbikKKyAgICAgICAgcmV0dXJuIFJldGFpblB0cjxDRkhUVFBDb29raWVT
dG9yYWdlUmVmPihBZG9wdENGLCB3a0NvcHlIVFRQQ29va2llU3RvcmFnZShtX3BsYXRmb3JtU2Vz
c2lvbi5nZXQoKSkpOworCisjaWYgVVNFKENGTkVUV09SSykKKyAgICByZXR1cm4gd2tHZXREZWZh
dWx0SFRUUENvb2tpZVN0b3JhZ2UoKTsKKyNlbHNlCisgICAgLy8gV2hlbiB1c2luZyBOU1VSTENv
bm5lY3Rpb24sIHdlIGFsc28gdXNlIGl0cyBzaGFyZWQgY29va2llIHN0b3JhZ2UuCisgICAgcmV0
dXJuIDA7CisjZW5kaWYKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCShyZXZpc2lv
biAxMzg0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
SGFuZGxlQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpbmNs
dWRlICJBdXRoZW50aWNhdGlvbkNGLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuaCIKLSNpbmNsdWRlICJDb29raWVTdG9yYWdlQ0ZOZXQuaCIKICNpbmNsdWRlICJDcmVkZW50
aWFsU3RvcmFnZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiRm9ybURhdGFTdHJlYW1DRk5ldC5oIgpAQCAtMzgsNiArMzcsNyBAQAogI2luY2x1ZGUgIkxv
YWRlclJ1bkxvb3BDRi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNSU1FVHlw
ZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVDbGllbnQuaCIKICNpbmNs
dWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCkBAIC0zOTksNyArMzk5LDcgQEAgc3RhdGljIGJvb2wg
c2hvdWxkUmVsYXhUaGlyZFBhcnR5Q29va2llUAogewogICAgIC8vIElmIGEgVVJMIGFscmVhZHkg
aGFzIGNvb2tpZXMsIHRoZW4gd2UnbGwgcmVsYXggdGhlIDNyZCBwYXJ0eSBjb29raWUgcG9saWN5
IGFuZCBhY2NlcHQgbmV3IGNvb2tpZXMuCiAKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3Rv
cmFnZVJlZj4gY2ZDb29raWVTdG9yYWdlID0gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29u
dGV4dCk7CisgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNmQ29va2llU3Rv
cmFnZSA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkuY29va2llU3RvcmFnZSgpOwogICAgIENG
SFRUUENvb2tpZVN0b3JhZ2VBY2NlcHRQb2xpY3kgY29va2llQWNjZXB0UG9saWN5ID0gQ0ZIVFRQ
Q29va2llU3RvcmFnZUdldENvb2tpZUFjY2VwdFBvbGljeShjZkNvb2tpZVN0b3JhZ2UuZ2V0KCkp
OwogCiAgICAgaWYgKGNvb2tpZUFjY2VwdFBvbGljeSAhPSBDRkhUVFBDb29raWVTdG9yYWdlQWNj
ZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW4pCkBAIC01MDYsNyArNTA2LDcgQEAg
Ym9vbCBSZXNvdXJjZUhhbmRsZTo6c3RhcnQoTmV0d29ya2luZ0NvbgogICAgIGlmICghY29udGV4
dC0+aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBkLT5tX3N0b3JhZ2VT
ZXNzaW9uID0gY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKTsKKyAgICBkLT5tX3N0b3JhZ2VTZXNz
aW9uID0gY29udGV4dC0+c3RvcmFnZVNlc3Npb24oKS5wbGF0Zm9ybVNlc3Npb24oKTsKIAogICAg
IGJvb2wgc2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UgPSAhY2xpZW50KCkgfHwgY2xpZW50KCkt
PnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKHRoaXMpOwogCkBAIC03NDEsNyArNzQxLDcgQEAg
dm9pZCBSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hybwogCiAgICAgUmVmUHRyPFJl
c291cmNlSGFuZGxlPiBoYW5kbGUgPSBhZG9wdFJlZihuZXcgUmVzb3VyY2VIYW5kbGUocmVxdWVz
dCwgY2xpZW50LmdldCgpLCBmYWxzZSAvKmRlZmVyc0xvYWRpbmcqLywgdHJ1ZSAvKnNob3VsZENv
bnRlbnRTbmlmZiovKSk7CiAKLSAgICBoYW5kbGUtPmQtPm1fc3RvcmFnZVNlc3Npb24gPSBjb250
ZXh0LT5zdG9yYWdlU2Vzc2lvbigpOworICAgIGhhbmRsZS0+ZC0+bV9zdG9yYWdlU2Vzc2lvbiA9
IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCk7CiAKICAgICBpZiAo
aGFuZGxlLT5kLT5tX3NjaGVkdWxlZEZhaWx1cmVUeXBlICE9IE5vRmFpbHVyZSkgewogICAgICAg
ICBlcnJvciA9IGNvbnRleHQtPmJsb2NrZWRFcnJvcihyZXF1ZXN0KTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vQ29va2llSmFyQ2hyb21pdW0uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2hyb21pdW0vQ29v
a2llSmFyQ2hyb21pdW0uY3BwCShyZXZpc2lvbiAxMzg0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2Nocm9taXVtL0Nvb2tpZUphckNocm9taXVtLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDEsNTUgKzQxLDU1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBz
ZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29r
aWVTdHIpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lv
biYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpCiB7Ci0gICAgaWYgKCFjb250ZXh0KQorICAg
IGlmICghc2Vzc2lvbi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBXZWJLaXQ6Oldl
YkNvb2tpZUphciogY29va2llSmFyID0gY29udGV4dC0+Y29va2llSmFyKCk7CisgICAgV2ViS2l0
OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9IHNlc3Npb24uY29udGV4dCgpLT5jb29raWVKYXIo
KTsKICAgICBpZiAoY29va2llSmFyKQogICAgICAgICBjb29raWVKYXItPnNldENvb2tpZSh1cmws
IGZpcnN0UGFydHlGb3JDb29raWVzLCBjb29raWVTdHIpOwogfQogCi1TdHJpbmcgY29va2llc0Zv
ckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZv
ckNvb2tpZXMsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNv
b2tpZXMsIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBpZiAoIWNvbnRleHQpCisgICAgaWYgKCFz
ZXNzaW9uLmNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIFN0cmluZyBy
ZXN1bHQ7Ci0gICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tpZUphciA9IGNvbnRleHQtPmNv
b2tpZUphcigpOworICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVKYXIgPSBzZXNzaW9u
LmNvbnRleHQoKS0+Y29va2llSmFyKCk7CiAgICAgaWYgKGNvb2tpZUphcikKICAgICAgICAgcmVz
dWx0ID0gY29va2llSmFyLT5jb29raWVzKHVybCwgZmlyc3RQYXJ0eUZvckNvb2tpZXMpOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNv
b2tpZXMsIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgaWYgKCFjb250ZXh0
KQorICAgIGlmICghc2Vzc2lvbi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
ICAgICBTdHJpbmcgcmVzdWx0OwotICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBjb29raWVKYXIg
PSBjb250ZXh0LT5jb29raWVKYXIoKTsKKyAgICBXZWJLaXQ6OldlYkNvb2tpZUphciogY29va2ll
SmFyID0gc2Vzc2lvbi5jb250ZXh0KCktPmNvb2tpZUphcigpOwogICAgIGlmIChjb29raWVKYXIp
CiAgICAgICAgIHJlc3VsdCA9IGNvb2tpZUphci0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFs
dWUodXJsLCBmaXJzdFBhcnR5Rm9yQ29va2llcyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
Ym9vbCBjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VS
TCYgY29va2llVVJMLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5Rm9yQ29va2llcykKK2Jvb2wgY29v
a2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiBjb29raWVVUkwsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzKQogewogICAg
IGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgaWYgKCFjb250ZXh0KQorICAgIGlmICghc2Vzc2lv
bi5jb250ZXh0KCkpCiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgV2ViS2l0OjpXZWJDb29r
aWVKYXIqIGNvb2tpZUphciA9IGNvbnRleHQtPmNvb2tpZUphcigpOworICAgIFdlYktpdDo6V2Vi
Q29va2llSmFyKiBjb29raWVKYXIgPSBzZXNzaW9uLmNvbnRleHQoKS0+Y29va2llSmFyKCk7CiAg
ICAgaWYgKGNvb2tpZUphcikKICAgICAgICAgcmVzdWx0ID0gY29va2llSmFyLT5jb29raWVzRW5h
YmxlZChjb29raWVVUkwsIGZpcnN0UGFydHlGb3JDb29raWVzKTsKICAgICByZXR1cm4gcmVzdWx0
OwogfQogCi1ib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEtVUkwmIGZpcnN0UGFydHlGb3JDb29raWVzLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxD
b29raWU+JiByYXdDb29raWVzKQorYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eUZvckNvb2tpZXMsIGNv
bnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmF3Q29v
a2llcy5jbGVhcigpOwotICAgIGlmICghY29udGV4dCkKKyAgICBpZiAoIXNlc3Npb24uY29udGV4
dCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgV2ViS2l0OjpXZWJWZWN0b3I8V2ViS2l0
OjpXZWJDb29raWU+IHdlYkNvb2tpZXM7Ci0gICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tp
ZUphciA9IGNvbnRleHQtPmNvb2tpZUphcigpOworICAgIFdlYktpdDo6V2ViQ29va2llSmFyKiBj
b29raWVKYXIgPSBzZXNzaW9uLmNvbnRleHQoKS0+Y29va2llSmFyKCk7CiAgICAgaWYgKGNvb2tp
ZUphcikKICAgICAgICAgY29va2llSmFyLT5yYXdDb29raWVzKHVybCwgZmlyc3RQYXJ0eUZvckNv
b2tpZXMsIHdlYkNvb2tpZXMpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB3ZWJDb29r
aWVzLnNpemUoKTsgKytpKSB7CkBAIC0xMDAsMjYgKzEwMCwyNiBAQCBib29sIGdldFJhd0Nvb2tp
ZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgZGVs
ZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNv
b2tpZU5hbWUpCiB7Ci0gICAgaWYgKCFjb250ZXh0KQorICAgIGlmICghc2Vzc2lvbi5jb250ZXh0
KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBXZWJLaXQ6OldlYkNvb2tpZUphciogY29va2llSmFy
ID0gY29udGV4dC0+Y29va2llSmFyKCk7CisgICAgV2ViS2l0OjpXZWJDb29raWVKYXIqIGNvb2tp
ZUphciA9IHNlc3Npb24uY29udGV4dCgpLT5jb29raWVKYXIoKTsKICAgICBpZiAoY29va2llSmFy
KQogICAgICAgICBjb29raWVKYXItPmRlbGV0ZUNvb2tpZSh1cmwsIGNvb2tpZU5hbWUpOwogfQog
Ci12b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiAvKmNvbnRl
eHQqLywgSGFzaFNldDxTdHJpbmc+JiAvKmhvc3RuYW1lcyovKQordm9pZCBnZXRIb3N0bmFtZXNX
aXRoQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBIYXNoU2V0PFN0cmluZz4m
IC8qaG9zdG5hbWVzKi8pCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0K
IAotdm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya2luZ0NvbnRleHQqIC8qY29u
dGV4dCovLCBjb25zdCBTdHJpbmcmIC8qaG9zdG5hbWUqLykKK3ZvaWQgZGVsZXRlQ29va2llc0Zv
ckhvc3RuYW1lKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYgLypo
b3N0bmFtZSovKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAKLXZv
aWQgZGVsZXRlQWxsQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCogLypjb250ZXh0Ki8pCit2b2lk
IGRlbGV0ZUFsbENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJikKIHsKICAgICAv
LyBGSVhNRTogTm90IHlldCBpbXBsZW1lbnRlZAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jaHJvbWl1bS9SZXNvdXJjZUhhbmRsZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jaHJvbWl1bS9SZXNvdXJjZUhhbmRsZS5j
cHAJKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2hyb21pdW0vUmVzb3VyY2VIYW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw5ICszMSwx
MiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAK
KyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIlJlc291cmNlRXJyb3Iu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZUNsaWVudC5oIgogI2luY2x1ZGUgIlJlc291cmNl
SGFuZGxlSW50ZXJuYWwuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRl
ICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiV3JhcHBlZFJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIldyYXBwZWRSZXNvdXJjZVJl
c3BvbnNlLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29v
a2llSmFyQ3VybC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0Nvb2tpZUphckN1cmwuY3BwCShyZXZpc2lvbiAxMzg0MTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyQ3VybC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDUwICsyNyw1MCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBI
YXNoTWFwPFN0cmluZywgU3RyaW5nPiBjb29raWVKYXI7CiAKLXZvaWQgc2V0Q29va2llc0Zyb21E
T00oTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHZhbHVlKQordm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQogewogICAgIGNvb2tpZUphci5zZXQodXJsLnN0cmluZygpLCB2YWx1ZSk7CiB9CiAK
LVN0cmluZyBjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYsIGNv
bnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgcmV0dXJuIGNv
b2tpZUphci5nZXQodXJsLnN0cmluZygpKTsKIH0KIAotU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiAvKmZp
cnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJG
aWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmIC8qZmly
c3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgLy8gRklYTUU6IGluY2x1ZGUgSHR0
cE9ubHkgY29va2llLgogICAgIHJldHVybiBjb29raWVKYXIuZ2V0KHVybC5zdHJpbmcoKSk7CiB9
CiAKLWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQorYm9vbCBjb29raWVz
RW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBLVVJMJiAvKmZpcnN0
UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLykKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
Ym9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJM
JiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLywgVmVjdG9yPENvb2tpZT4mIHJh
d0Nvb2tpZXMpCitib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIC8qdXJsKi8sIFZlY3Rv
cjxDb29raWU+JiByYXdDb29raWVzKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVu
dGVkCiAgICAgcmF3Q29va2llcy5jbGVhcigpOwogICAgIHJldHVybiBmYWxzZTsgLy8gcmV0dXJu
IHRydWUgd2hlbiBpbXBsZW1lbnRlZAogfQogCi12b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JraW5n
Q29udGV4dCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmKQordm9pZCBkZWxldGVDb29raWUo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYp
CiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBnZXRIb3N0
bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCosIEhhc2hTZXQ8U3RyaW5nPiYgaG9z
dG5hbWVzKQordm9pZCBnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKIHsKICAgICAvLyBGSVhNRTog
Tm90IHlldCBpbXBsZW1lbnRlZAogfQogCi12b2lkIGRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZShO
ZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCit2b2lkIGRlbGV0ZUNv
b2tpZXNGb3JIb3N0bmFtZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBTdHJp
bmcmIGhvc3RuYW1lKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAK
LXZvaWQgZGVsZXRlQWxsQ29va2llcyhOZXR3b3JraW5nQ29udGV4dCopCit2b2lkIGRlbGV0ZUFs
bENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJikKIHsKICAgICAvLyBGSVhNRTog
Tm90IHlldCBpbXBsZW1lbnRlZAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAJKHJldmlz
aW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNv
dXJjZUhhbmRsZUN1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKIAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9hZGVy
LmgiCisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1l
bnRlZC5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKICNpbmNsdWRlICJS
ZXNvdXJjZUhhbmRsZU1hbmFnZXIuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVKYXJNYWMubW0JKHJldmlzaW9uIDEzODQxMSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL0Nvb2tpZUphck1hYy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzEsOSArMzEsOCBAQAogI2ltcG9ydCAiQmxvY2tFeGNlcHRpb25zLmgi
CiAjaW1wb3J0ICJDb29raWUuaCIKICNpbXBvcnQgIkNvb2tpZVN0b3JhZ2UuaCIKLSNpbXBvcnQg
IkNvb2tpZVN0b3JhZ2VDRk5ldC5oIgogI2ltcG9ydCAiS1VSTC5oIgotI2ltcG9ydCAiTmV0d29y
a2luZ0NvbnRleHQuaCIKKyNpbXBvcnQgIk5ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oIgogI2ltcG9y
dCAiV2ViQ29yZVN5c3RlbUludGVyZmFjZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02
MiwzMSArNjEsMjkgQEAgc3RhdGljIFJldGFpblB0cjxOU0FycmF5PiBmaWx0ZXJDb29raWVzKAog
ICAgIHJldHVybiBmaWx0ZXJlZENvb2tpZXM7CiB9CiAKLVN0cmluZyBjb29raWVzRm9yRE9NKE5l
dHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQor
U3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBLVVJMJiwgY29uc3QgS1VSTCYgdXJsKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKIAotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29r
aWVTdG9yYWdlID0gY29udGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQp
IDogZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKTsKLSAgICBOU0FycmF5ICpjb29raWVzID0g
d2tIVFRQQ29va2llc0ZvclVSTChjb29raWVTdG9yYWdlLmdldCgpLCB1cmwpOworICAgIE5TQXJy
YXkgKmNvb2tpZXMgPSB3a0hUVFBDb29raWVzRm9yVVJMKHNlc3Npb24uY29va2llU3RvcmFnZSgp
LmdldCgpLCB1cmwpOwogICAgIHJldHVybiBbW05TSFRUUENvb2tpZSByZXF1ZXN0SGVhZGVyRmll
bGRzV2l0aENvb2tpZXM6ZmlsdGVyQ29va2llcyhjb29raWVzKS5nZXQoKV0gb2JqZWN0Rm9yS2V5
OkAiQ29va2llIl07CiAKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIHJldHVy
biBTdHJpbmcoKTsKIH0KIAotU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5l
dHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29u
c3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5
Ki8sIGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7
CiAKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFnZSA9
IGNvbnRleHQgPyBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1bHRD
RkhUVFBDb29raWVTdG9yYWdlKCk7Ci0gICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tp
ZXNGb3JVUkwoY29va2llU3RvcmFnZS5nZXQoKSwgdXJsKTsKKyAgICBOU0FycmF5ICpjb29raWVz
ID0gd2tIVFRQQ29va2llc0ZvclVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgdXJs
KTsKICAgICByZXR1cm4gW1tOU0hUVFBDb29raWUgcmVxdWVzdEhlYWRlckZpZWxkc1dpdGhDb29r
aWVzOmNvb2tpZXNdIG9iamVjdEZvcktleTpAIkNvb2tpZSJdOwogCiAgICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUzsKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLXZvaWQgc2V0Q29va2ll
c0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVTdHIpCit2b2lkIHNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0
cikKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKQEAgLTEwMywzMSArMTAw
LDI4IEBAIHZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQKICAgICBSZXRh
aW5QdHI8TlNBcnJheT4gZmlsdGVyZWRDb29raWVzID0gZmlsdGVyQ29va2llcyhbTlNIVFRQQ29v
a2llIGNvb2tpZXNXaXRoUmVzcG9uc2VIZWFkZXJGaWVsZHM6W05TRGljdGlvbmFyeSBkaWN0aW9u
YXJ5V2l0aE9iamVjdDpjb29raWVTdHJpbmcgZm9yS2V5OkAiU2V0LUNvb2tpZSJdIGZvclVSTDpj
b29raWVVUkxdKTsKICAgICBBU1NFUlQoW2ZpbHRlcmVkQ29va2llcy5nZXQoKSBjb3VudF0gPD0g
MSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3RvcmFn
ZSA9IGNvbnRleHQgPyBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRlZmF1
bHRDRkhUVFBDb29raWVTdG9yYWdlKCk7Ci0gICAgd2tTZXRIVFRQQ29va2llc0ZvclVSTChjb29r
aWVTdG9yYWdlLmdldCgpLCBmaWx0ZXJlZENvb2tpZXMuZ2V0KCksIGNvb2tpZVVSTCwgZmlyc3RQ
YXJ0eSk7CisgICAgd2tTZXRIVFRQQ29va2llc0ZvclVSTChzZXNzaW9uLmNvb2tpZVN0b3JhZ2Uo
KS5nZXQoKSwgZmlsdGVyZWRDb29raWVzLmdldCgpLCBjb29raWVVUkwsIGZpcnN0UGFydHkpOwog
CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAotYm9vbCBjb29raWVzRW5hYmxl
ZChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8s
IGNvbnN0IEtVUkwmIC8qdXJsKi8pCitib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0
IEtVUkwmIC8qdXJsKi8pCiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0g
ICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250
ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQ
Q29va2llU3RvcmFnZSgpOwotICAgIE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSBjb29raWVBY2Nl
cHRQb2xpY3kgPSBzdGF0aWNfY2FzdDxOU0hUVFBDb29raWVBY2NlcHRQb2xpY3k+KHdrR2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpKSk7CisgICAgTlNIVFRQQ29v
a2llQWNjZXB0UG9saWN5IGNvb2tpZUFjY2VwdFBvbGljeSA9IHN0YXRpY19jYXN0PE5TSFRUUENv
b2tpZUFjY2VwdFBvbGljeT4od2tHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHNlc3Npb24uY29v
a2llU3RvcmFnZSgpLmdldCgpKSk7CiAgICAgcmV0dXJuIGNvb2tpZUFjY2VwdFBvbGljeSA9PSBO
U0hUVFBDb29raWVBY2NlcHRQb2xpY3lBbHdheXMgfHwgY29va2llQWNjZXB0UG9saWN5ID09IE5T
SFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluOwogCiAgICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wg
Z2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypm
aXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMp
Citib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29v
a2llPiYgcmF3Q29va2llcykKIHsKICAgICByYXdDb29raWVzLmNsZWFyKCk7CiAgICAgQkVHSU5f
QkxPQ0tfT0JKQ19FWENFUFRJT05TOwogCi0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3Jh
Z2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENGSFRUUENvb2tpZVN0b3Jh
Z2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgpOwotICAgIE5TQXJyYXkg
KmNvb2tpZXMgPSB3a0hUVFBDb29raWVzRm9yVVJMKGNvb2tpZVN0b3JhZ2UuZ2V0KCksIHVybCk7
CisgICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENvb2tpZXNGb3JVUkwoc2Vzc2lvbi5jb29r
aWVTdG9yYWdlKCkuZ2V0KCksIHVybCk7CiAgICAgTlNVSW50ZWdlciBjb3VudCA9IFtjb29raWVz
IGNvdW50XTsKICAgICByYXdDb29raWVzLnJlc2VydmVDYXBhY2l0eShjb3VudCk7CiAgICAgZm9y
IChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewpAQCAtMTQxLDEyICsxMzUsMTIg
QEAgYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjbwogICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIGRlbGV0ZUNv
b2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKIAogICAgIE5TVVJMICpjb29raWVVUkwgPSB1cmw7Ci0gICAgUmV0YWluUHRyPENG
SFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBjb250ZXh0ID8gY3VycmVudENG
SFRUUENvb2tpZVN0b3JhZ2UoY29udGV4dCkgOiBkZWZhdWx0Q0ZIVFRQQ29va2llU3RvcmFnZSgp
OworICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0g
c2Vzc2lvbi5jb29raWVTdG9yYWdlKCk7CiAgICAgTlNBcnJheSAqY29va2llcyA9IHdrSFRUUENv
b2tpZXNGb3JVUkwoY29va2llU3RvcmFnZS5nZXQoKSwgY29va2llVVJMKTsKIAogICAgIE5TU3Ry
aW5nICpjb29raWVOYW1lU3RyaW5nID0gY29va2llTmFtZTsKQEAgLTE2MSwxMiArMTU1LDExIEBA
IHZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb24KICAgICBFTkRfQkxPQ0tf
T0JKQ19FWENFUFRJT05TOwogfQogCi12b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdv
cmtpbmdDb250ZXh0KiBjb250ZXh0LCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKK3ZvaWQg
Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKIHsKICAgICBCRUdJTl9CTE9DS19PQkpD
X0VYQ0VQVElPTlM7CiAKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29v
a2llU3RvcmFnZSA9IGNvbnRleHQgPyBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0
KSA6IGRlZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCk7Ci0gICAgTlNBcnJheSAqY29va2llcyA9
IHdrSFRUUENvb2tpZXMoY29va2llU3RvcmFnZS5nZXQoKSk7CisgICAgTlNBcnJheSAqY29va2ll
cyA9IHdrSFRUUENvb2tpZXMoc2Vzc2lvbi5jb29raWVTdG9yYWdlKCkuZ2V0KCkpOwogICAgIAog
ICAgIGZvciAoTlNIVFRQQ29va2llKiBjb29raWUgaW4gY29va2llcykKICAgICAgICAgaG9zdG5h
bWVzLmFkZChbY29va2llIGRvbWFpbl0pOwpAQCAtMTc0LDExICsxNjcsMTEgQEAgdm9pZCBnZXRI
b3N0bmFtZXNXaXRoQ29va2llcyhOZXR3b3JraW5nQwogICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQ
VElPTlM7CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQordm9pZCBkZWxldGVDb29raWVz
Rm9ySG9zdG5hbWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBT
dHJpbmcmIGhvc3RuYW1lKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAot
ICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gY29u
dGV4dCA/IGN1cnJlbnRDRkhUVFBDb29raWVTdG9yYWdlKGNvbnRleHQpIDogZGVmYXVsdENGSFRU
UENvb2tpZVN0b3JhZ2UoKTsKKyAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4g
Y29va2llU3RvcmFnZSA9IHNlc3Npb24uY29va2llU3RvcmFnZSgpOwogICAgIE5TQXJyYXkgKmNv
b2tpZXMgPSB3a0hUVFBDb29raWVzKGNvb2tpZVN0b3JhZ2UuZ2V0KCkpOwogICAgIGlmICghY29v
a2llcykKICAgICAgICAgcmV0dXJuOwpAQCAtMTkxLDEwICsxODQsOSBAQCB2b2lkIGRlbGV0ZUNv
b2tpZXNGb3JIb3N0bmFtZShOZXR3b3JraW5nCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKIH0KIAotdm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0
KQordm9pZCBkZWxldGVBbGxDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbikKIHsKLSAgICBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gY29va2llU3Rv
cmFnZSA9IGNvbnRleHQgPyBjdXJyZW50Q0ZIVFRQQ29va2llU3RvcmFnZShjb250ZXh0KSA6IGRl
ZmF1bHRDRkhUVFBDb29raWVTdG9yYWdlKCk7Ci0gICAgd2tEZWxldGVBbGxIVFRQQ29va2llcyhj
b29raWVTdG9yYWdlLmdldCgpKTsKKyAgICB3a0RlbGV0ZUFsbEhUVFBDb29raWVzKHNlc3Npb24u
Y29va2llU3RvcmFnZSgpLmdldCgpKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvQ29va2llU3RvcmFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29raWVTdG9yYWdlTWFjLm1tCShyZXZp
c2lvbiAxMzg0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9Db29r
aWVTdG9yYWdlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw2IEBACiAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDb29raWVTdG9yYWdlLmgiCi0jaW5jbHVkZSAiQ29v
a2llU3RvcmFnZUNGTmV0LmgiCiAKICNpbXBvcnQgIlJlc291cmNlSGFuZGxlLmgiCiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlSGFuZGxlTWFjLm1tCShyZXZpc2lvbiAxMzg0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzMsNyArMzMsNiBAQAogI2ltcG9ydCAiQmxvYlJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJCbG9ja0V4
Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkNvb2tpZVN0b3JhZ2UuaCIKLSNpbXBvcnQgIkNvb2tpZVN0
b3JhZ2VDRk5ldC5oIgogI2ltcG9ydCAiQ3JlZGVudGlhbFN0b3JhZ2UuaCIKICNpbXBvcnQgIkNh
Y2hlZFJlc291cmNlTG9hZGVyLmgiCiAjaW1wb3J0ICJFbXB0eVByb3RvY29sRGVmaW5pdGlvbnMu
aCIKQEAgLTQyLDYgKzQxLDcgQEAKICNpbXBvcnQgIkZyYW1lTG9hZGVyLmgiCiAjaW1wb3J0ICJM
b2dnaW5nLmgiCiAjaW1wb3J0ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW1wb3J0ICJOZXR3b3Jr
aW5nQ29udGV4dC5oIgogI2ltcG9ydCAiUGFnZS5oIgogI2ltcG9ydCAiUmVzb3VyY2VFcnJvci5o
IgogI2ltcG9ydCAiUmVzb3VyY2VSZXNwb25zZS5oIgpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHN0YXRp
YyBib29sIHNob3VsZFJlbGF4VGhpcmRQYXJ0eUNvb2tpZVAKIHsKICAgICAvLyBJZiBhIFVSTCBh
bHJlYWR5IGhhcyBjb29raWVzLCB0aGVuIHdlJ2xsIHJlbGF4IHRoZSAzcmQgcGFydHkgY29va2ll
IHBvbGljeSBhbmQgYWNjZXB0IG5ldyBjb29raWVzLgogCi0gICAgUmV0YWluUHRyPENGSFRUUENv
b2tpZVN0b3JhZ2VSZWY+IGNmQ29va2llU3RvcmFnZSA9IGN1cnJlbnRDRkhUVFBDb29raWVTdG9y
YWdlKGNvbnRleHQpOworICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjZkNv
b2tpZVN0b3JhZ2UgPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKTsK
ICAgICBOU0hUVFBDb29raWVBY2NlcHRQb2xpY3kgY29va2llQWNjZXB0UG9saWN5ID0gc3RhdGlj
X2Nhc3Q8TlNIVFRQQ29va2llQWNjZXB0UG9saWN5Pih3a0dldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koY2ZDb29raWVTdG9yYWdlLmdldCgpKSk7CiAKICAgICBpZiAoY29va2llQWNjZXB0UG9saWN5
ICE9IE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3VtZW50RG9tYWluKQpA
QCAtMjMwLDcgKzIzMCw3IEBAIGJvb2wgUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KE5ldHdvcmtpbmdD
b24KICAgICBpZiAoIWNvbnRleHQtPmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCk7Cisg
ICAgZC0+bV9zdG9yYWdlU2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZv
cm1TZXNzaW9uKCk7CiAKICAgICBBU1NFUlQoIWQtPm1fcHJveHkpOwogICAgIGQtPm1fcHJveHku
YWRvcHROUyh3a0NyZWF0ZU5TVVJMQ29ubmVjdGlvbkRlbGVnYXRlUHJveHkoKSk7CkBAIC0zOTYs
NyArMzk2LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6bG9hZFJlc291cmNlU3luY2hybwogCiAg
ICAgUmVmUHRyPFJlc291cmNlSGFuZGxlPiBoYW5kbGUgPSBhZG9wdFJlZihuZXcgUmVzb3VyY2VI
YW5kbGUocmVxdWVzdCwgY2xpZW50LmdldCgpLCBmYWxzZSAvKmRlZmVyc0xvYWRpbmcqLywgdHJ1
ZSAvKnNob3VsZENvbnRlbnRTbmlmZiovKSk7CiAKLSAgICBoYW5kbGUtPmQtPm1fc3RvcmFnZVNl
c3Npb24gPSBjb250ZXh0LT5zdG9yYWdlU2Vzc2lvbigpOworICAgIGhhbmRsZS0+ZC0+bV9zdG9y
YWdlU2Vzc2lvbiA9IGNvbnRleHQtPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCk7
CiAKICAgICBpZiAoY29udGV4dCAmJiBoYW5kbGUtPmQtPm1fc2NoZWR1bGVkRmFpbHVyZVR5cGUg
IT0gTm9GYWlsdXJlKSB7CiAgICAgICAgIGVycm9yID0gY29udGV4dC0+YmxvY2tlZEVycm9yKHJl
cXVlc3QpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9Db29raWVK
YXJRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9x
dC9Db29raWVKYXJRdC5jcHAJKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvcXQvQ29va2llSmFyUXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niwx
NSArNDYsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgU2hhcmVkQ29va2llSmFy
UXQqIHNfc2hhcmVkQ29va2llSmFyUXQgPSAwOwogCi12b2lkIHNldENvb2tpZXNGcm9tRE9NKE5l
dHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNv
bnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIFFOZXR3b3Jr
Q29va2llSmFyKiBqYXIgPSBjb250ZXh0ID8gY29udGV4dC0+bmV0d29ya0FjY2Vzc01hbmFnZXIo
KS0+Y29va2llSmFyKCkgOiBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CisgICAgUU5ldHdv
cmtDb29raWVKYXIqIGphciA9IHNlc3Npb24uY29udGV4dCgpID8gc2Vzc2lvbi5jb250ZXh0KCkt
Pm5ldHdvcmtBY2Nlc3NNYW5hZ2VyKCktPmNvb2tpZUphcigpIDogU2hhcmVkQ29va2llSmFyUXQ6
OnNoYXJlZCgpOwogICAgIGlmICghamFyKQogICAgICAgICByZXR1cm47CiAKICAgICBRVXJsIHVy
bEZvckNvb2tpZXModXJsKTsKICAgICBRVXJsIGZpcnN0UGFydHlVcmwoZmlyc3RQYXJ0eSk7Ci0g
ICAgaWYgKCF0aGlyZFBhcnR5Q29va2llUG9saWN5UGVybWl0cyhjb250ZXh0LCB1cmxGb3JDb29r
aWVzLCBmaXJzdFBhcnR5VXJsKSkKKyAgICBpZiAoIXRoaXJkUGFydHlDb29raWVQb2xpY3lQZXJt
aXRzKHNlc3Npb24uY29udGV4dCgpLCB1cmxGb3JDb29raWVzLCBmaXJzdFBhcnR5VXJsKSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgUUxpc3Q8UU5ldHdvcmtDb29raWU+IGNvb2tpZXMgPSBRTmV0
d29ya0Nvb2tpZTo6cGFyc2VDb29raWVzKFFTdHJpbmcodmFsdWUpLnRvTGF0aW4xKCkpOwpAQCAt
NjksMTUgKzY5LDE1IEBAIHZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQK
ICAgICBqYXItPnNldENvb2tpZXNGcm9tVXJsKGNvb2tpZXMsIHVybEZvckNvb2tpZXMpOwogfQog
Ci1TdHJpbmcgY29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3Qg
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZXNGb3JET00o
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgUU5ldHdvcmtDb29raWVKYXIqIGphciA9IGNv
bnRleHQgPyBjb250ZXh0LT5uZXR3b3JrQWNjZXNzTWFuYWdlcigpLT5jb29raWVKYXIoKSA6IFNo
YXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKKyAgICBRTmV0d29ya0Nvb2tpZUphciogamFyID0g
c2Vzc2lvbi5jb250ZXh0KCkgPyBzZXNzaW9uLmNvbnRleHQoKS0+bmV0d29ya0FjY2Vzc01hbmFn
ZXIoKS0+Y29va2llSmFyKCkgOiBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CiAgICAgaWYg
KCFqYXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAogICAgIFFVcmwgdXJsRm9yQ29va2ll
cyh1cmwpOwogICAgIFFVcmwgZmlyc3RQYXJ0eVVybChmaXJzdFBhcnR5KTsKLSAgICBpZiAoIXRo
aXJkUGFydHlDb29raWVQb2xpY3lQZXJtaXRzKGNvbnRleHQsIHVybEZvckNvb2tpZXMsIGZpcnN0
UGFydHlVcmwpKQorICAgIGlmICghdGhpcmRQYXJ0eUNvb2tpZVBvbGljeVBlcm1pdHMoc2Vzc2lv
bi5jb250ZXh0KCksIHVybEZvckNvb2tpZXMsIGZpcnN0UGFydHlVcmwpKQogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CiAKICAgICBRTGlzdDxRTmV0d29ya0Nvb2tpZT4gY29va2llcyA9IGphci0+
Y29va2llc0ZvclVybCh1cmxGb3JDb29raWVzKTsKQEAgLTk0LDkgKzk0LDkgQEAgU3RyaW5nIGNv
b2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqIAogICAgIHJldHVybiByZXN1bHRDb29raWVz
LmpvaW4oUUxhdGluMVN0cmluZygiOyAiKSk7CiB9CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypm
aXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVy
RmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtV
UkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgUU5ldHdvcmtDb29r
aWVKYXIqIGphciA9IGNvbnRleHQgPyBjb250ZXh0LT5uZXR3b3JrQWNjZXNzTWFuYWdlcigpLT5j
b29raWVKYXIoKSA6IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKKyAgICBRTmV0d29ya0Nv
b2tpZUphciogamFyID0gc2Vzc2lvbi5jb250ZXh0KCkgPyBzZXNzaW9uLmNvbnRleHQoKS0+bmV0
d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29va2llSmFyKCkgOiBTaGFyZWRDb29raWVKYXJRdDo6c2hh
cmVkKCk7CiAgICAgaWYgKCFqYXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIApAQCAtMTEx
LDQzICsxMTEsNDMgQEAgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldAog
ICAgIHJldHVybiByZXN1bHRDb29raWVzLmpvaW4oUUxhdGluMVN0cmluZygiOyAiKSk7CiB9CiAK
LWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtV
UkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQorYm9vbCBjb29raWVzRW5h
YmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8q
Zmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQogewotICAgIFFOZXR3b3JrQ29va2ll
SmFyKiBqYXIgPSBjb250ZXh0ID8gY29udGV4dC0+bmV0d29ya0FjY2Vzc01hbmFnZXIoKS0+Y29v
a2llSmFyKCkgOiBTaGFyZWRDb29raWVKYXJRdDo6c2hhcmVkKCk7CisgICAgUU5ldHdvcmtDb29r
aWVKYXIqIGphciA9IHNlc3Npb24uY29udGV4dCgpID8gc2Vzc2lvbi5jb250ZXh0KCktPm5ldHdv
cmtBY2Nlc3NNYW5hZ2VyKCktPmNvb2tpZUphcigpIDogU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJl
ZCgpOwogICAgIHJldHVybiAhIWphcjsKIH0KIAotYm9vbCBnZXRSYXdDb29raWVzKE5ldHdvcmtp
bmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VS
TCYgLyp1cmwqLywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIGdldFJhd0Nvb2tp
ZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiAvKmZp
cnN0UGFydHkqLywgY29uc3QgS1VSTCYgLyp1cmwqLywgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tp
ZXMpCiB7CiAgICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKICAgICByYXdDb29raWVz
LmNsZWFyKCk7CiAgICAgcmV0dXJuIGZhbHNlOyAvLyByZXR1cm4gdHJ1ZSB3aGVuIGltcGxlbWVu
dGVkCiB9CiAKLXZvaWQgZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VS
TCYsIGNvbnN0IFN0cmluZyYpCit2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKIHsKICAgICAvLyBGSVhNRTog
Tm90IHlldCBpbXBsZW1lbnRlZAogfQogCi12b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5l
dHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKK3Zv
aWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBz
ZXNzaW9uLCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKIHsKLSAgICBBU1NFUlRfVU5VU0VE
KGNvbnRleHQsICFjb250ZXh0KTsgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBmb3IgY29va2llIGph
cnMgb3RoZXIgdGhhbiB0aGUgc2hhcmVkIG9uZS4KKyAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb24s
ICFzZXNzaW9uLmNvbnRleHQoKSk7IC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgZm9yIGNvb2tpZSBq
YXJzIG90aGVyIHRoYW4gdGhlIHNoYXJlZCBvbmUuCiAgICAgU2hhcmVkQ29va2llSmFyUXQqIGph
ciA9IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKICAgICBpZiAoamFyKQogICAgICAgICBq
YXItPmdldEhvc3RuYW1lc1dpdGhDb29raWVzKGhvc3RuYW1lcyk7CiB9CiAKLXZvaWQgZGVsZXRl
Q29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJp
bmcmIGhvc3RuYW1lKQordm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQogewotICAg
IEFTU0VSVF9VTlVTRUQoY29udGV4dCwgIWNvbnRleHQpOyAvLyBOb3QgeWV0IGltcGxlbWVudGVk
IGZvciBjb29raWUgamFycyBvdGhlciB0aGFuIHRoZSBzaGFyZWQgb25lLgorICAgIEFTU0VSVF9V
TlVTRUQoc2Vzc2lvbiwgIXNlc3Npb24uY29udGV4dCgpKTsgLy8gTm90IHlldCBpbXBsZW1lbnRl
ZCBmb3IgY29va2llIGphcnMgb3RoZXIgdGhhbiB0aGUgc2hhcmVkIG9uZS4KICAgICBTaGFyZWRD
b29raWVKYXJRdCogamFyID0gU2hhcmVkQ29va2llSmFyUXQ6OnNoYXJlZCgpOwogICAgIGlmIChq
YXIpCiAgICAgICAgIGphci0+ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKGhvc3RuYW1lKTsKIH0K
IAotdm9pZCBkZWxldGVBbGxDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQordm9p
ZCBkZWxldGVBbGxDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbikK
IHsKLSAgICBBU1NFUlRfVU5VU0VEKGNvbnRleHQsICFjb250ZXh0KTsgLy8gTm90IHlldCBpbXBs
ZW1lbnRlZCBmb3IgY29va2llIGphcnMgb3RoZXIgdGhhbiB0aGUgc2hhcmVkIG9uZS4KKyAgICBB
U1NFUlRfVU5VU0VEKHNlc3Npb24sICFzZXNzaW9uLmNvbnRleHQoKSk7IC8vIE5vdCB5ZXQgaW1w
bGVtZW50ZWQgZm9yIGNvb2tpZSBqYXJzIG90aGVyIHRoYW4gdGhlIHNoYXJlZCBvbmUuCiAgICAg
U2hhcmVkQ29va2llSmFyUXQqIGphciA9IFNoYXJlZENvb2tpZUphclF0OjpzaGFyZWQoKTsKICAg
ICBpZiAoamFyKQogICAgICAgICBqYXItPmRlbGV0ZUFsbENvb2tpZXMoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtS
ZXBseUhhbmRsZXIuY3BwCShyZXZpc2lvbiAxMzg0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkJsb2JEYXRhLmgiCiAjaW5jbHVkZSAiSFRUUFBh
cnNlcnMuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiTmV0d29y
a2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlJl
c291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5o
IgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNv
dXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9Db29raWVKYXJTb3VwLmNwcAkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZUphclNvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw5ICszMiwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBTb3VwQ29v
a2llSmFyKiBjb29raWVKYXJGb3JDb250ZXh0KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0KQor
c3RhdGljIFNvdXBDb29raWVKYXIqIGNvb2tpZUphckZvclNlc3Npb24oY29uc3QgTmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQogewotICAgIHJldHVybiBTT1VQX0NPT0tJRV9KQVIoc291
cF9zZXNzaW9uX2dldF9mZWF0dXJlKGNvbnRleHQtPnNvdXBTZXNzaW9uKCksIFNPVVBfVFlQRV9D
T09LSUVfSkFSKSk7CisgICAgaWYgKCFzZXNzaW9uLmNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJu
IHNvdXBDb29raWVKYXIoKTsKKyAgICByZXR1cm4gU09VUF9DT09LSUVfSkFSKHNvdXBfc2Vzc2lv
bl9nZXRfZmVhdHVyZShzZXNzaW9uLmNvbnRleHQoKS0+c291cFNlc3Npb24oKSwgU09VUF9UWVBF
X0NPT0tJRV9KQVIpKTsKIH0KIAogc3RhdGljIEdSZWZQdHI8U291cENvb2tpZUphcj4mIGRlZmF1
bHRDb29raWVKYXIoKQpAQCAtNzMsOSArNzUsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaHR0cE9u
bHlDb29raWVFeGlzdHMoCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIHNldENvb2tpZXNG
cm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdmFsdWUpCit2b2lkIHNldENvb2tpZXNG
cm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAg
IFNvdXBDb29raWVKYXIqIGphciA9IGNvbnRleHQgPyBjb29raWVKYXJGb3JDb250ZXh0KGNvbnRl
eHQpIDogc291cENvb2tpZUphcigpOworICAgIFNvdXBDb29raWVKYXIqIGphciA9IGNvb2tpZUph
ckZvclNlc3Npb24oc2Vzc2lvbik7CiAgICAgaWYgKCFqYXIpCiAgICAgICAgIHJldHVybjsKIApA
QCAtMTA3LDkgKzEwOSw5IEBAIHZvaWQgc2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRl
eHQKICAgICBzb3VwX2Nvb2tpZXNfZnJlZShleGlzdGluZ0Nvb2tpZXMpOwogfQogCi1zdGF0aWMg
U3RyaW5nIGNvb2tpZXNGb3JDb250ZXh0KE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBLVVJMJiB1cmwsIGJvb2wgZm9ySFRUUEhlYWRlcikKK3N0YXRpYyBTdHJpbmcgY29va2llc0Zv
clNlc3Npb24oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJM
JiB1cmwsIGJvb2wgZm9ySFRUUEhlYWRlcikKIHsKLSAgICBTb3VwQ29va2llSmFyKiBqYXIgPSBj
b250ZXh0ID8gY29va2llSmFyRm9yQ29udGV4dChjb250ZXh0KSA6IHNvdXBDb29raWVKYXIoKTsK
KyAgICBTb3VwQ29va2llSmFyKiBqYXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Npb24pOwog
ICAgIGlmICghamFyKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKQEAgLTExOCwyNSArMTIw
LDI1IEBAIHN0YXRpYyBTdHJpbmcgY29va2llc0ZvckNvbnRleHQoTmV0d29ya2kKICAgICByZXR1
cm4gU3RyaW5nOjpmcm9tVVRGOChjb29raWVzLmdldCgpKTsKIH0KIAotU3RyaW5nIGNvb2tpZXNG
b3JET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJM
JiB1cmwpCitTdHJpbmcgY29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIGNv
b2tpZXNGb3JDb250ZXh0KGNvbnRleHQsIHVybCwgZmFsc2UpOworICAgIHJldHVybiBjb29raWVz
Rm9yU2Vzc2lvbihzZXNzaW9uLCB1cmwsIGZhbHNlKTsKIH0KIAotU3RyaW5nIGNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJM
JiAvKmZpcnN0UGFydHkqLywgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIGNvb2tpZVJlcXVlc3RI
ZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29u
c3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4g
Y29va2llc0ZvckNvbnRleHQoY29udGV4dCwgdXJsLCB0cnVlKTsKKyAgICByZXR1cm4gY29va2ll
c0ZvclNlc3Npb24oc2Vzc2lvbiwgdXJsLCB0cnVlKTsKIH0KIAotYm9vbCBjb29raWVzRW5hYmxl
ZChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8s
IGNvbnN0IEtVUkwmIC8qdXJsKi8pCitib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0
IEtVUkwmIC8qdXJsKi8pCiB7Ci0gICAgcmV0dXJuICEhY29va2llSmFyRm9yQ29udGV4dChjb250
ZXh0KTsKKyAgICByZXR1cm4gISFjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Npb24pOwogfQogCi1i
b29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwm
IC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29r
aWVzKQorYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgS1VSTCYgLypmaXJzdFBhcnR5Ki8sIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9y
PENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgcmF3Q29va2llcy5jbGVhcigpOwotICAgIFNv
dXBDb29raWVKYXIqIGphciA9IGNvbnRleHQgPyBjb29raWVKYXJGb3JDb250ZXh0KGNvbnRleHQp
IDogc291cENvb2tpZUphcigpOworICAgIFNvdXBDb29raWVKYXIqIGphciA9IGNvb2tpZUphckZv
clNlc3Npb24oc2Vzc2lvbik7CiAgICAgaWYgKCFqYXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IApAQCAtMTU3LDkgKzE1OSw5IEBAIGJvb2wgZ2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4
dCogY28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBkZWxldGVDb29raWUoTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lKQor
dm9pZCBkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsKLSAgICBTb3VwQ29va2llSmFy
KiBqYXIgPSBjb250ZXh0ID8gY29va2llSmFyRm9yQ29udGV4dChjb250ZXh0KSA6IHNvdXBDb29r
aWVKYXIoKTsKKyAgICBTb3VwQ29va2llSmFyKiBqYXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNl
c3Npb24pOwogICAgIGlmICghamFyKQogICAgICAgICByZXR1cm47CiAKQEAgLTE3OCw5ICsxODAs
OSBAQCB2b2lkIGRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCogY29uCiAgICAgfQogfQog
Ci12b2lkIGdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0
LCBIYXNoU2V0PFN0cmluZz4mIGhvc3RuYW1lcykKK3ZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tp
ZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBIYXNoU2V0PFN0cmluZz4m
IGhvc3RuYW1lcykKIHsKLSAgICBTb3VwQ29va2llSmFyKiBjb29raWVKYXIgPSBjb250ZXh0ID8g
Y29va2llSmFyRm9yQ29udGV4dChjb250ZXh0KSA6IHNvdXBDb29raWVKYXIoKTsKKyAgICBTb3Vw
Q29va2llSmFyKiBjb29raWVKYXIgPSBjb29raWVKYXJGb3JTZXNzaW9uKHNlc3Npb24pOwogICAg
IEdPd25QdHI8R1NMaXN0PiBjb29raWVzKHNvdXBfY29va2llX2phcl9hbGxfY29va2llcyhjb29r
aWVKYXIpKTsKICAgICBmb3IgKEdTTGlzdCogaXRlbSA9IGNvb2tpZXMuZ2V0KCk7IGl0ZW07IGl0
ZW0gPSBnX3NsaXN0X25leHQoaXRlbSkpIHsKICAgICAgICAgR093blB0cjxTb3VwQ29va2llPiBj
b29raWUoc3RhdGljX2Nhc3Q8U291cENvb2tpZSo+KGl0ZW0tPmRhdGEpKTsKQEAgLTE5MCwxMCAr
MTkyLDEwIEBAIHZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya2luZ0MKICAgICB9
CiB9CiAKLXZvaWQgZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKE5ldHdvcmtpbmdDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQordm9pZCBkZWxldGVDb29raWVzRm9ySG9z
dG5hbWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBTdHJpbmcm
IGhvc3RuYW1lKQogewogICAgIENTdHJpbmcgaG9zdE5hbWVTdHJpbmcgPSBob3N0bmFtZS51dGY4
KCk7Ci0gICAgU291cENvb2tpZUphciogY29va2llSmFyID0gY29udGV4dCA/IGNvb2tpZUphckZv
ckNvbnRleHQoY29udGV4dCkgOiBzb3VwQ29va2llSmFyKCk7CisgICAgU291cENvb2tpZUphciog
Y29va2llSmFyID0gY29va2llSmFyRm9yU2Vzc2lvbihzZXNzaW9uKTsKICAgICBHT3duUHRyPEdT
TGlzdD4gY29va2llcyhzb3VwX2Nvb2tpZV9qYXJfYWxsX2Nvb2tpZXMoY29va2llSmFyKSk7CiAg
ICAgZm9yIChHU0xpc3QqIGl0ZW0gPSBjb29raWVzLmdldCgpOyBpdGVtOyBpdGVtID0gZ19zbGlz
dF9uZXh0KGl0ZW0pKSB7CiAgICAgICAgIFNvdXBDb29raWUqIGNvb2tpZSA9IHN0YXRpY19jYXN0
PFNvdXBDb29raWUqPihpdGVtLT5kYXRhKTsKQEAgLTIwMyw5ICsyMDUsOSBAQCB2b2lkIGRlbGV0
ZUNvb2tpZXNGb3JIb3N0bmFtZShOZXR3b3JraW5nCiAgICAgfQogfQogCi12b2lkIGRlbGV0ZUFs
bENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQpCit2b2lkIGRlbGV0ZUFsbENvb2tp
ZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uKQogewotICAgIFNvdXBDb29r
aWVKYXIqIGNvb2tpZUphciA9IGNvbnRleHQgPyBjb29raWVKYXJGb3JDb250ZXh0KGNvbnRleHQp
IDogc291cENvb2tpZUphcigpOworICAgIFNvdXBDb29raWVKYXIqIGNvb2tpZUphciA9IGNvb2tp
ZUphckZvclNlc3Npb24oc2Vzc2lvbik7CiAgICAgR093blB0cjxHU0xpc3Q+IGNvb2tpZXMoc291
cF9jb29raWVfamFyX2FsbF9jb29raWVzKGNvb2tpZUphcikpOwogICAgIGZvciAoR1NMaXN0KiBp
dGVtID0gY29va2llcy5nZXQoKTsgaXRlbTsgaXRlbSA9IGdfc2xpc3RfbmV4dChpdGVtKSkgewog
ICAgICAgICBTb3VwQ29va2llKiBjb29raWUgPSBzdGF0aWNfY2FzdDxTb3VwQ29va2llKj4oaXRl
bS0+ZGF0YSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvRE5T
U291cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL0ROU1NvdXAuY3BwCShyZXZpc2lvbiAxMzg0MTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvRE5TU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMw
LDcgQEAKIAogI2luY2x1ZGUgIkdPd25QdHJTb3VwLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5k
bGUuaCIKKyNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxl
U291cC5jcHAJKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2
ICs0MCw3IEBACiAjaW5jbHVkZSAiTG9jYWxpemVkU3RyaW5ncy5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiTmV0d29ya2lu
Z0NvbnRleHQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3dpbi9Db29raWVKYXJXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphcldpbi5jcHAJKHJldmlzaW9uIDEz
ODQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvd2luL0Nvb2tpZUphcldp
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkNvb2tp
ZS5oIgogI2luY2x1ZGUgIktVUkwuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2luY2x1
ZGUgPFdpbmluZXQuaD4KQEAgLTM1LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci12b2lkIHNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYs
IGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgc2V0Q29va2llc0Zy
b21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgS1VSTCYsIGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKICAgICAvLyBGSVhNRTogRGVhbCB3aXRo
IGZpcnN0UGFydHkgYXJndW1lbnQuCiAgICAgU3RyaW5nIHN0ciA9IHVybC5zdHJpbmcoKTsKQEAg
LTQzLDcgKzQ0LDcgQEAgdm9pZCBzZXRDb29raWVzRnJvbURPTShOZXR3b3JraW5nQ29udGV4dAog
ICAgIEludGVybmV0U2V0Q29va2llKHN0ci5jaGFyYWN0ZXJzV2l0aE51bGxUZXJtaW5hdGlvbigp
LCAwLCB2YWwuY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSk7CiB9CiAKLVN0cmluZyBj
b29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgS1VSTCYsIGNvbnN0IEtVUkwm
IHVybCkKK1N0cmluZyBjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYs
IGNvbnN0IEtVUkwmLCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgLy8gRklYTUU6IERlYWwgd2l0
aCBmaXJzdFBhcnR5IGFyZ3VtZW50LgogCkBAIC02NCw0MCArNjUsNDAgQEAgU3RyaW5nIGNvb2tp
ZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqLAogICAgIHJldHVybiBTdHJpbmc6OmFkb3B0KGJ1
ZmZlcik7CiB9CiAKLVN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3Jr
aW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYg
dXJsKQorU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VS
TCYgdXJsKQogewogICAgIC8vIEZJWE1FOiBpbmNsdWRlIEh0dHBPbmx5IGNvb2tpZQotICAgIHJl
dHVybiBjb29raWVzRm9yRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJu
IGNvb2tpZXNGb3JET00oc2Vzc2lvbi5jb250ZXh0KCksIGZpcnN0UGFydHksIHVybCk7CiB9CiAK
LWJvb2wgY29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtV
UkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQorYm9vbCBjb29raWVzRW5h
YmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8q
Zmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovKQogewogICAgIHJldHVybiB0cnVlOwog
fQogCi1ib29sIGdldFJhd0Nvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAvKnVybCovLCBWZWN0b3I8Q29va2ll
PiYgcmF3Q29va2llcykKK2Jvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIC8qZmlyc3RQYXJ0eSovLCBjb25zdCBLVVJMJiAv
KnVybCovLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykKIHsKICAgICAvLyBGSVhNRTogTm90
IHlldCBpbXBsZW1lbnRlZAogICAgIHJhd0Nvb2tpZXMuY2xlYXIoKTsKICAgICByZXR1cm4gZmFs
c2U7IC8vIHJldHVybiB0cnVlIHdoZW4gaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxldGVDb29r
aWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJikKK3ZvaWQg
ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IEtVUkwmLCBj
b25zdCBTdHJpbmcmKQogewogICAgIC8vIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCiB9CiAK
LXZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqLCBIYXNoU2V0
PFN0cmluZz4mIGhvc3RuYW1lcykKK3ZvaWQgZ2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgSGFzaFNldDxTdHJpbmc+JiBob3N0bmFtZXMpCiB7CiAg
ICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KIAotdm9pZCBkZWxldGVDb29raWVz
Rm9ySG9zdG5hbWUoTmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBTdHJpbmcmIGhvc3RuYW1lKQor
dm9pZCBkZWxldGVDb29raWVzRm9ySG9zdG5hbWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgU3RyaW5nJiBob3N0bmFtZSkKIHsKICAgICAvLyBGSVhNRTogTm90IHlldCBpbXBs
ZW1lbnRlZAogfQogCi12b2lkIGRlbGV0ZUFsbENvb2tpZXMoTmV0d29ya2luZ0NvbnRleHQqKQor
dm9pZCBkZWxldGVBbGxDb29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYpCiB7CiAg
ICAgLy8gRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvd2luL1Jlc291cmNlSGFuZGxlV2luLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3dpbi9SZXNvdXJjZUhhbmRsZVdpbi5j
cHAJKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
d2luL1Jlc291cmNlSGFuZGxlV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgIkRhdGFVUkwuaCIKICNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1
ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJOZXR3b3JraW5nQ29udGV4dC5oIgog
I2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VFcnJvci5oIgog
I2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lv
biAxMzg0MTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSw2MCBAQAorMjAxMi0xMi0yMiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxl
LmNvbT4KKworICAgICAgICBBZGQgYSBzZXBhcmF0ZSBjbGFzcyBmb3IgbmV0d29ya2luZyByZWxh
dGVkIHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwNTY3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOiBX
ZSBubyBsb25nZXIgbmVlZCB0byBjcmVhdGUKKyAgICAgICAgZmFrZSBSZW1vdGVOZXR3b3JraW5n
Q29udGV4dHMgaGVyZSEgVXNlIGFuIGFjdHVhbCBkZWZhdWx0IG9yIHByaXZhdGUgc3RvcmFnZSBz
ZXNzaW9uLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFp
bk1hYy5tbTogVXBkYXRlZCBmb3JtIG9mIFdlYlN5c3RlbUludGVyZmFjZS5oIGluY2x1ZGUsCisg
ICAgICAgIGl0J3Mgbm90IGEgc3lzdGVtIG9uZS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oOiBFeHBvc2UgcHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbigpLAorICAgICAgICBzbyB0aGF0IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIGNv
dWxkIHVzZSBpdC4gV2UgY2FuIGdlbmVyYWxpemUgdGhlIGludGVyZmFjZQorICAgICAgICBvbmUg
d2Ugc3VwcG9ydCBtb3JlIHNlc3Npb25zLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvbWFj
L1JlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1tOiBUaGlzIGNsYXNzIG5vdyBvbmx5IHRyYWNrcyBw
cml2YXRlCisgICAgICAgIGJyb3dzaW5nIHNlc3Npb24sIHdpdGggbW9zdCBvdGhlciBjb2RlIGJl
aW5nIGluIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbi4KKworICAgICAgICAqIFNoYXJlZC9OZXR3b3Jr
L0N1c3RvbVByb3RvY29scy9tYWMvQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWFjLm1tOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvZ3RrL1Byb2Nlc3NMYXVuY2hlckd0ay5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL2Vm
bC9XZWJQcm9jZXNzTWFpbkVmbC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9ndGsvV2ViUHJv
Y2Vzc01haW5HdGsuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL2NmbmV0L0Rv
d25sb2FkQ0ZOZXQuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL2VmbC9Eb3du
bG9hZFNvdXBFcnJvcnNFZmwuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxvYWRzL2d0
ay9Eb3dubG9hZFNvdXBFcnJvcnNHdGsuY3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvRG93bmxv
YWRzL21hYy9Eb3dubG9hZE1hYy5tbToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2Vi
UmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICBVcGRhdGVkIGluY2x1ZGVzIGZvciBSZXNvdXJj
ZUhhbmRsZSBjaGFuZ2UuIEZvciBzb21lIHBvcnRzLCB0aGUgaW5jbHVkZXMgY291bGQgYmUKKyAg
ICAgICAgbWFkZSBtb3JlIHRpZ2h0LCBidXQgSSBoYXZlIG5vIHByYWN0aWNhbCB3YXkgdG8gZG8g
dGhhdC4KKworICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogUmVt
b3ZlZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXNNYWMubW0uCisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tp
ZU1hbmFnZXI6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29va2llTWFuYWdlcjo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQWxsQ29va2llcyk6CisgICAgICAgIFBhc3MgYSBw
cm9wZXIgc2Vzc2lvbiBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gYSBzdHJhdGVneSB0byBjYWxsIGJh
Y2sgdG8gV2ViS2l0CisgICAgICAgIGZvciBkZWZhdWx0IGNvb2tpZSBzdG9yYWdlICh3ZSBkb24n
dCBldmVuIGhhdmUgc3RyYXRlZ2llcyBpbml0aWFsaXplZCBpbiBOZXR3b3JrUHJvY2VzcykuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnN3aXRjaE5ldHdvcmtMb2FkZXJUb05l
d1Rlc3RpbmdTZXNzaW9uKTogSW5pdGlhbGl6ZSBXQ1NJCisgICAgICAgIGJlZm9yZSBjYWxsaW5n
IGEgZnVuY3Rpb24gdGhhdCBub3cgdXNlcyBpbiBpbiBXZWJDb3JlLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6IFdl
IG5vIGxvbmdlciBuZWVkIGEgc3RyYXRlZ3kKKyAgICAgICAgZm9yIGRlZmF1bHQgY29va2llIHN0
b3JhZ2UhIFVwZGF0ZWQgb3RoZXIgZnVuY3Rpb25zIHRvIHVzZSBzZXNzaW9ucy4KKworICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0Lm1tOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYlBsYXRmb3JtU3RyYXRlZ2llc01hYy5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6Cisg
ICAgICAgIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQgaXMgbm93IHNpbXBsZXIsIHdpdGggbW9y
ZSB0cmFja2luZyBiZWluZyBkb25yZSB0aHJvdWdoIFdlYkNvcmUuCisKIDIwMTItMTItMjEgIEVs
bGlvdHQgU3ByZWhuICA8ZXNwcmVobkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVwbGFjZSBk
b2N1bWVudEZyYWdtZW50SXNTaGFkb3dSb290IHdpdGggaXNUcmVlU2NvcGUKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ0LDE2ICsxNDQsOSBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzOjpzZXRTCiAgICAgbV9zZXJpYWxMb2FkaW5nRW5hYmxlZCA9IGVuYWJsZWQ7CiB9
CiAKLXN0YXRpYyBSZW1vdGVOZXR3b3JraW5nQ29udGV4dCogbmV0d29ya2luZ0NvbnRleHQoYm9v
bCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQorc3RhdGljIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c3RvcmFnZVNlc3Npb24oYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogewotICAgIC8vIFRo
aXMgbmV0d29ya2luZyBjb250ZXh0IGlzIG9ubHkgbmVlZGVkIHRvIGdldCBzdG9yYWdlIHNlc3Np
b24gZnJvbS4KLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkgewotICAgICAgICBzdGF0
aWMgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQgPSBSZW1vdGVOZXR3b3JraW5nQ29u
dGV4dDo6Y3JlYXRlKGZhbHNlLCBmYWxzZSwgdHJ1ZSkubGVha1JlZigpOwotICAgICAgICByZXR1
cm4gY29udGV4dDsKLSAgICB9IGVsc2UgewotICAgICAgICBzdGF0aWMgUmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQqIGNvbnRleHQgPSBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6Y3JlYXRlKGZhbHNl
LCBmYWxzZSwgZmFsc2UpLmxlYWtSZWYoKTsKLSAgICAgICAgcmV0dXJuIGNvbnRleHQ7Ci0gICAg
fQorICAgIHJldHVybiBwcml2YXRlQnJvd3NpbmdFbmFibGVkID8gUmVtb3RlTmV0d29ya2luZ0Nv
bnRleHQ6OnByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSA6IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6
ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OnN0YXJ0RG93bmxvYWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCB1aW50
NjRfdCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCkBAIC0xNjQs
MzIgKzE1NywzMiBAQCB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFyCiAK
IHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvb2tpZXNGb3JET00oYm9vbCBw
cml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiB1cmwsIFN0cmluZyYgcmVzdWx0KQogewotICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZXNG
b3JET00obmV0d29ya2luZ0NvbnRleHQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFy
dHksIHVybCk7CisgICAgcmVzdWx0ID0gV2ViQ29yZTo6Y29va2llc0ZvckRPTShzdG9yYWdlU2Vz
c2lvbihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAogdm9p
ZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c2V0Q29va2llc0Zyb21ET00oYm9vbCBw
cml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQogewotICAgIFdlYkNvcmU6OnNldENv
b2tpZXNGcm9tRE9NKG5ldHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBm
aXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CisgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zy
b21ET00oc3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIGZpcnN0UGFydHks
IHVybCwgY29va2llU3RyaW5nKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJv
Y2Vzczo6Y29va2llc0VuYWJsZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGJvb2wmIHJlc3VsdCkKIHsKLSAgICBy
ZXN1bHQgPSBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChuZXR3b3JraW5nQ29udGV4dChwcml2YXRl
QnJvd3NpbmdFbmFibGVkKSwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXN1bHQgPSBXZWJDb3Jl
Ojpjb29raWVzRW5hYmxlZChzdG9yYWdlU2Vzc2lvbihwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwg
Zmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
czo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFi
bGVkLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFN0cmluZyYgcmVz
dWx0KQogewotICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKG5ldHdvcmtpbmdDb250ZXh0KHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5
LCB1cmwpOworICAgIHJlc3VsdCA9IFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKHN0b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1
cmwpOwogfQogCiB2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpnZXRSYXdDb29r
aWVzKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmVzdWx0KQogewotICAgIFdlYkNvcmU6
OmdldFJhd0Nvb2tpZXMobmV0d29ya2luZ0NvbnRleHQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCks
IGZpcnN0UGFydHksIHVybCwgcmVzdWx0KTsKKyAgICBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHN0
b3JhZ2VTZXNzaW9uKHByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBmaXJzdFBhcnR5LCB1cmwsIHJl
c3VsdCk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmRlbGV0ZUNv
b2tpZShib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShuZXR3b3Jr
aW5nQ29udGV4dChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSwgdXJsLCBjb29raWVOYW1lKTsKKyAg
ICBXZWJDb3JlOjpkZWxldGVDb29raWUoc3RvcmFnZVNlc3Npb24ocHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCksIHVybCwgY29va2llTmFtZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL05ldHdvcmtQcm9jZXNzTWFpbk1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0
d29ya1Byb2Nlc3NNYWluTWFjLm1tCShyZXZpc2lvbiAxMzg0MTEpCisrKyBTb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9tYWMvTmV0d29ya1Byb2Nlc3NNYWluTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw5ICszMSw5IEBACiAjaW1wb3J0ICJDb21tYW5kTGluZS5oIgogI2ltcG9ydCAi
RW52aXJvbm1lbnRVdGlsaXRpZXMuaCIKICNpbXBvcnQgIk5ldHdvcmtQcm9jZXNzLmgiCisjaW1w
b3J0ICJXZWJTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPFdlYkNvcmUvUnVuTG9vcC5oPgog
I2ltcG9ydCA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+Ci0jaW1wb3J0IDxXZWJTeXN0ZW1JbnRl
cmZhY2UuaD4KICNpbXBvcnQgPG1hY2gvbWFjaF9lcnJvci5oPgogI2ltcG9ydCA8cnVudGltZS9J
bml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW1wb3J0IDxzZXJ2ZXJzL2Jvb3RzdHJhcC5oPgpJbmRl
eDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1JlbW90ZU5ldHdvcmtpbmdDb250
ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvbWFjL1Jl
bW90ZU5ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJL
aXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Miw2ICs0Miw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBlbnN1cmVQ
cml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveVByaXZhdGVC
cm93c2luZ1Nlc3Npb24oKTsKIAorICAgIHN0YXRpYyBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsgLy8gQ2FuIG9ubHkgYmUgY2FsbGVkIHdo
ZW4gdGhlIHNlc3Npb24gZXhpc3RzLgorCiBwcml2YXRlOgogICAgIFJlbW90ZU5ldHdvcmtpbmdD
b250ZXh0KGJvb2wgbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MsIGJvb2wgbG9jYWxGaWxlQ29udGVu
dFNuaWZmaW5nRW5hYmxlZCwgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKIApAQCAtNDks
OCArNTEsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCBib29sIG5lZWRzU2l0ZVNwZWNpZmlj
UXVpcmtzKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBib29sIGxvY2FsRmlsZUNvbnRl
bnRTbmlmZmluZ0VuYWJsZWQoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGJvb2wgaW5Q
cml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBDRlVSTFN0
b3JhZ2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uKCkgY29u
c3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBOU09wZXJhdGlvblF1ZXVlICpzY2hlZHVsZWRPcGVy
YXRpb25RdWV1ZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29u
c3QgT1ZFUlJJREU7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9S
ZW1vdGVOZXR3b3JraW5nQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9tYWMvUmVtb3RlTmV0d29ya2luZ0NvbnRleHQubW0JKHJldmlzaW9uIDEz
ODQxMSkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL21hYy9SZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsMTIgQEAgdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgQ0ZVUkxTdG9y
YWdlU2Vzc2lvblJlZiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbjsKK3N0YXRpYyBPd25Q
dHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiYgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24o
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChPd25QdHI8TmV0d29ya1N0b3JhZ2VTZXNzaW9uPiwgc2Vzc2lvbiwgKCkpOworICAgIHJldHVy
biBzZXNzaW9uOworfQogCiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6UmVtb3RlTmV0d29ya2lu
Z0NvbnRleHQoYm9vbCBuZWVkc1NpdGVTcGVjaWZpY1F1aXJrcywgYm9vbCBsb2NhbEZpbGVDb250
ZW50U25pZmZpbmdFbmFibGVkLCBib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiAgICAgOiBt
X25lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKG5lZWRzU2l0ZVNwZWNpZmljUXVpcmtzKQpAQCAtNjMs
MTkgKzY4LDIwIEBAIGJvb2wgUmVtb3RlTmV0d29ya2luZ0NvbnRleHQ6OmxvY2FsRmlsZUMKICAg
ICByZXR1cm4gbV9sb2NhbEZpbGVDb250ZW50U25pZmZpbmdFbmFibGVkOwogfQogCi1ib29sIFJl
bW90ZU5ldHdvcmtpbmdDb250ZXh0OjppblByaXZhdGVCcm93c2luZ01vZGUoKSBjb25zdAorTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Np
b24oKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQ7CisgICAg
aWYgKG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkgeworICAgICAgICBBU1NFUlQocHJpdmF0ZUJy
b3dzaW5nU3RvcmFnZVNlc3Npb24oKSk7CisgICAgICAgIHJldHVybiAqcHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb24oKTsKKyAgICB9CisKKyAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNz
aW9uOjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKTsKIH0KIAotQ0ZVUkxTdG9yYWdlU2Vzc2lvblJl
ZiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAorTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dDo6cHJpdmF0ZUJyb3dzaW5n
U2Vzc2lvbigpCiB7Ci0gICAgaWYgKGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpKSB7Ci0gICAgICAg
IEFTU0VSVChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbik7Ci0gICAgICAgIHJldHVybiBw
cml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbjsKLSAgICB9Ci0gICAgLy8gRklYTUUgKE5ldHdv
cmtQcm9jZXNzKTogUmV0dXJuIGEgZGVmYXVsdCBzZXNzaW9uIHRoYXQncyB1c2VkIGZvciB0ZXN0
aW5nLgotICAgIHJldHVybiAwOworICAgIEFTU0VSVChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vz
c2lvbigpKTsKKyAgICByZXR1cm4gKnByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCk7CiB9
CiAKIE5TT3BlcmF0aW9uUXVldWUgKlJlbW90ZU5ldHdvcmtpbmdDb250ZXh0OjpzY2hlZHVsZWRP
cGVyYXRpb25RdWV1ZSgpIGNvbnN0CkBAIC0xMDgsMjMgKzExNCwxOCBAQCB2b2lkIFJlbW90ZU5l
dHdvcmtpbmdDb250ZXh0OjpzZXRQcml2YXRlCiAKIHZvaWQgUmVtb3RlTmV0d29ya2luZ0NvbnRl
eHQ6OmVuc3VyZVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7Ci0gICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKQorICAgIGlm
IChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBBU1NFUlQoIXByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmllckJhc2UoKS5p
c051bGwoKSk7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50aWZpZXIgPSBTdHJp
bmcocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpICsgIi5Qcml2
YXRlQnJvd3NpbmciKS5jcmVhdGVDRlN0cmluZygpOwogCi0gICAgcHJpdmF0ZUJyb3dzaW5nU3Rv
cmFnZVNlc3Npb24gPSBXS0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihjZklkZW50aWZpZXIu
Z2V0KCkpOworICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkgPSBOZXR3b3JrU3Rv
cmFnZVNlc3Npb246OmNyZWF0ZVByaXZhdGVCcm93c2luZ1Nlc3Npb24ocHJpdmF0ZUJyb3dzaW5n
U3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpKTsKIH0KIAogdm9pZCBSZW1vdGVOZXR3b3Jr
aW5nQ29udGV4dDo6ZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQogewotICAgIGlmICgh
cHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIENG
UmVsZWFzZShwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbik7Ci0gICAgcHJpdmF0ZUJyb3dz
aW5nU3RvcmFnZVNlc3Npb24gPSAwOworICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9u
KCkgPSBudWxscHRyOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29y
ay9DdXN0b21Qcm90b2NvbHMvbWFjL0N1c3RvbVByb3RvY29sTWFuYWdlck1hYy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvTmV0d29yay9DdXN0b21Qcm90b2NvbHMvbWFj
L0N1c3RvbVByb3RvY29sTWFuYWdlck1hYy5tbQkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzL21hYy9DdXN0b21Qcm90b2Nv
bE1hbmFnZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQg
IldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzcy5oIgogI2ltcG9y
dCA8V2ViQ29yZS9LVVJMLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0xhdW5jaGVyL2VmbC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9lZmwvUHJvY2Vzc0xhdW5jaGVyRWZsLmNwcAko
cmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2Vm
bC9Qcm9jZXNzTGF1bmNoZXJFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw5IEBA
CiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0V4ZWN1dGFibGVQ
YXRoLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya2lu
Z0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJH
dGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9MYXVuY2hlci9n
dGsvUHJvY2Vzc0xhdW5jaGVyR3RrLmNwcAkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0xhdW5jaGVyL2d0ay9Qcm9jZXNzTGF1bmNoZXJHdGsuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw5IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiUHJvY2Vzc0V4ZWN1dGFibGVQYXRoLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvTmV0d29ya2luZ0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+CiAjaW5jbHVk
ZSA8ZXJybm8uaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTA0Myw3
ICsxMDQzLDYgQEAKIAkJRTFCNzg0NzMxNjNGMjUzRTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtp
bmdDb250ZXh0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTFCNzg0NzIxNjNGMjUzRTAwMDdCNjkyIC8qIFJlbW90ZU5ldHdvcmtpbmdDb250ZXh0Lm1t
ICovOyB9OwogCQlFMUNDMUI5MDEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUNDMUI4RTEyRDdFQURG
MDA2MjU4MzggLyogUHJpbnRJbmZvLmggKi87IH07CiAJCUUxQ0MxQjkxMTJEN0VBREYwMDYyNTgz
OCAvKiBQcmludEluZm9NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMUNDMUI4RjEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvTWFjLm1tICov
OyB9OwotCQlFMUQyMjk3MTE2NTJEQzUyMDBCQUE0QkQgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVz
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFE
MjI5NkUxNjUyREI5QzAwQkFBNEJEIC8qIFdlYlBsYXRmb3JtU3RyYXRlZ2llc01hYy5tbSAqLzsg
fTsKIAkJRTFFREZEQTYxNjI4ODY4RTAwMzlFQ0RBIC8qIE1haW5NYWNQcm9jZXNzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNkZBMzEwMTFFMzky
MUUwMERCMTM3MSAvKiBNYWluTWFjUHJvY2Vzcy5jcHAgKi87IH07CiAJCUUxRURGREE3MTYyODg2
OTYwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRURGRDlCMTYyODdEMEIwMDM5RUNE
QSAvKiBTaGFyZWRXb3JrZXJQcm9jZXNzTWFpbk1hYy5tbSAqLzsgfTsKIAkJRTFFREZEQTgxNjI4
ODY5OTAwMzlFQ0RBIC8qIFNoYXJlZFdvcmtlclByb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUVERkRBMjE2Mjg4MzhDMDAzOUVDREEg
LyogU2hhcmVkV29ya2VyUHJvY2Vzc01hYy5tbSAqLzsgfTsKQEAgLTIzNDQsNyArMjM0Myw2IEBA
CiAJCUUxQjc4NDcyMTYzRjI1M0UwMDA3QjY5MiAvKiBSZW1vdGVOZXR3b3JraW5nQ29udGV4dC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlbW90ZU5ldHdvcmtp
bmdDb250ZXh0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUNDMUI4RTEyRDdF
QURGMDA2MjU4MzggLyogUHJpbnRJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFByaW50SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUNDMUI4RjEy
RDdFQURGMDA2MjU4MzggLyogUHJpbnRJbmZvTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gUHJpbnRJbmZvTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlFMUQyMjk2RTE2NTJEQjlDMDBCQUE0QkQgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVz
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUVERkQ5
ODE2Mjg3QkQxMDAzOUVDREEgLyogU2hhcmVkV29ya2VyUHJvY2Vzc01haW4uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzc01haW4uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFFREZEOUIxNjI4N0QwQjAwMzlFQ0RBIC8qIFNoYXJl
ZFdvcmtlclByb2Nlc3NNYWluTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gU2hhcmVkV29ya2VyUHJvY2Vzc01haW5NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUUxRURGRDlEMTYyODdGMTkwMDM5RUNEQSAvKiBTaGFyZWRXb3JrZXJQcm9j
ZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNoYXJlZFdvcmtlclByb2Nl
c3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM3MzMsNyArMzczMSw2IEBACiAJ
CQkJQkMxMTFBREYxMTJGNUJDMjAwMzM3QkFCIC8qIFdlYkVycm9yc01hYy5tbSAqLywKIAkJCQk5
MzkxRjI4MzEyMUIzOEY1MDBFQkY3RTggLyogV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oICov
LAogCQkJCTkzOTFGMjg0MTIxQjM4RjUwMEVCRjdFOCAvKiBXZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0Lm1tICovLAotCQkJCUUxRDIyOTZFMTY1MkRCOUMwMEJBQTRCRCAvKiBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXNNYWMubW0gKi8sCiAJCQkJQkNDNDNBQzYxMjdCOTlERTAwMzE3RjE2IC8qIFdlYlBv
cHVwTWVudU1hYy5tbSAqLywKIAkJCQlCQ0M1NzE1OTExNUFEQUVGMDAxQ0NBRjkgLyogV2ViU3lz
dGVtSW50ZXJmYWNlLmggKi8sCiAJCQkJQkNDNTcxNUExMTVBREFFRjAwMUNDQUY5IC8qIFdlYlN5
c3RlbUludGVyZmFjZS5tbSAqLywKQEAgLTU5NzgsNyArNTk3NSw2IEBACiAJCQkJNTEyMTc0NjAx
NjRDMjBFMzAwMzdBNUMxIC8qIFNoYXJlYWJsZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUxMjE3NDY0MTY0QzIxMzcwMDM3QTVDMSAvKiBXZWJSZXNvdXJjZUJ1ZmZlci5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkxQUYxQUM2QjE2NTE3NTlFMDBDMTdEN0YgLyogUmVtb3RlTGF5ZXJU
cmVlVHJhbnNhY3Rpb24ubW0gaW4gU291cmNlcyAqLywKLQkJCQlFMUQyMjk3MTE2NTJEQzUyMDBC
QUE0QkQgLyogV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUFBM0Q3NUIxNjUxQjQ0RjAwODcxM0QwIC8qIFJlbW90ZUxheWVyVHJlZUhvc3QubW0gaW4gU291
cmNlcyAqLywKIAkJCQkxQUEzRDc2MTE2NTFCN0QzMDA4NzEzRDAgLyogUmVtb3RlTGF5ZXJUcmVl
SG9zdE1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUZEMThCNTE2NTFG
QkFEMDBEQkUxQ0UgLyogTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLApJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAx
Mzg0MTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvTWVt
b3J5U3RhdGlzdGljcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQVhPYmplY3RDYWNoZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Dcm9zc09y
aWdpblByZWZsaWdodFJlc3VsdENhY2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Gb250Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Gb250Q2FjaGUuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvQ29va2llcy9XZWJDb29raWVNYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0Nvb2tpZXMvV2ViQ29va2llTWFuYWdlci5jcHAJKHJldmlzaW9u
IDEzODQxMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9XZWJDb29raWVN
YW5hZ2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIldl
YkNvb2tpZU1hbmFnZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgog
I2luY2x1ZGUgPFdlYkNvcmUvQ29va2llU3RvcmFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0
d29ya1N0b3JhZ2VTZXNzaW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybUNvb2tpZUph
ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTU1LDcgKzU2LDcgQEAgdm9pZCBX
ZWJDb29raWVNYW5hZ2VyOjpnZXRIb3N0bmFtZXNXaXRoQwogewogICAgIEhhc2hTZXQ8U3RyaW5n
PiBob3N0bmFtZXM7CiAKLSAgICBXZWJDb3JlOjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcygwLCBo
b3N0bmFtZXMpOworICAgIFdlYkNvcmU6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCksIGhvc3RuYW1lcyk7CiAKICAg
ICBWZWN0b3I8U3RyaW5nPiBob3N0bmFtZUxpc3Q7CiAgICAgY29weVRvVmVjdG9yKGhvc3RuYW1l
cywgaG9zdG5hbWVMaXN0KTsKQEAgLTY1LDEyICs2NiwxMiBAQCB2b2lkIFdlYkNvb2tpZU1hbmFn
ZXI6OmdldEhvc3RuYW1lc1dpdGhDCiAKIHZvaWQgV2ViQ29va2llTWFuYWdlcjo6ZGVsZXRlQ29v
a2llc0Zvckhvc3RuYW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUpCiB7Ci0gICAgV2ViQ29yZTo6
ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lKDAsIGhvc3RuYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxl
dGVDb29raWVzRm9ySG9zdG5hbWUoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFn
ZVNlc3Npb24oKSwgaG9zdG5hbWUpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXI6OmRlbGV0
ZUFsbENvb2tpZXMoKQogewotICAgIFdlYkNvcmU6OmRlbGV0ZUFsbENvb2tpZXMoMCk7CisgICAg
V2ViQ29yZTo6ZGVsZXRlQWxsQ29va2llcyhOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRT
dG9yYWdlU2Vzc2lvbigpKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyOjpzdGFydE9ic2Vy
dmluZ0Nvb2tpZUNoYW5nZXMoKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3du
bG9hZHMvY2ZuZXQvRG93bmxvYWRDRk5ldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvY2ZuZXQvRG93bmxvYWRDRk5ldC5jcHAJKHJldmlzaW9u
IDEzODQxMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93bmxvYWRzL2NmbmV0L0Rv
d25sb2FkQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAKICNwcmFn
bWEgd2FybmluZyhwdXNoLCAwKQogI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DRi5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0Rvd25sb2FkQnVuZGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Mb2FkZXJSdW5M
b29wQ0YuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9lZmwvRG93bmxvYWRTb3VwRXJyb3JzRWZs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9l
ZmwvRG93bmxvYWRTb3VwRXJyb3JzRWZsLmNwcAkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvZWZsL0Rvd25sb2FkU291cEVycm9yc0VmbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJEb3dubG9hZFNv
dXBFcnJvcnMuaCIKIAogI2luY2x1ZGUgPFdlYkNvcmUvRXJyb3JzRWZsLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9ndGsvRG93bmxvYWRTb3Vw
RXJyb3JzR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rv
d25sb2Fkcy9ndGsvRG93bmxvYWRTb3VwRXJyb3JzR3RrLmNwcAkocmV2aXNpb24gMTM4NDExKQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3dubG9hZHMvZ3RrL0Rvd25sb2FkU291cEVy
cm9yc0d0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJE
b3dubG9hZFNvdXBFcnJvcnMuaCIKIAogI2luY2x1ZGUgPFdlYkNvcmUvRXJyb3JzR3RrLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93
bmxvYWRNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Eb3du
bG9hZHMvbWFjL0Rvd25sb2FkTWFjLm1tCShyZXZpc2lvbiAxMzg0MTEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9tYWMvRG93bmxvYWRNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiRG93bmxv
YWQuaCIKIAorI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9BdXRoZW50aWNhdGlvbk1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9Ob3RJ
bXBsZW1lbnRlZC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03Nyw2ICs3NywxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oPgogI2VuZGlmCiAKKyNpZiBQTEFURk9STShNQUMpCisjaW5jbHVkZSAiV2ViU3lz
dGVtSW50ZXJmYWNlLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCkBAIC0zMDMsNyArMzA3LDggQEAgdm9pZCBJbmplY3RlZEJ1bmRs
ZTo6c3dpdGNoTmV0d29ya0xvYWRlcgogewogI2lmIChQTEFURk9STShNQUMpIHx8IFVTRShDRk5F
VFdPUkspKSAmJiAhUExBVEZPUk0oV0lOKQogICAgIC8vIEZJWE1FIChOZXR3b3JrUHJvY2Vzcyk6
IERvIHRoaXMgaW4gbmV0d29yayBwcm9jZXNzLCB0b28uCi0gICAgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6c3dpdGNoVG9OZXdUZXN0aW5nU2Vzc2lvbigpOworICAgIEluaXRXZWJDb3JlU3lz
dGVtSW50ZXJmYWNlKCk7CisgICAgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzd2l0Y2hUb05ld1Rl
c3RpbmdTZXNzaW9uKCk7CiAjZW5kaWYKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lv
biAxMzg0MTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3Vy
Y2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZGVyLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAko
cmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICsz
OCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Db2xvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvS1VS
TC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTG9hZGVyU3RyYXRlZ3kuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1Db29raWVKYXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtUGFzdGVib2FyZC5oPgpAQCAtMTEzLDkwICsxMTQsODMgQEAgdm9pZCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6Om5vdGlmeUNvb2tpZQogICAgIFdlYkNvb2tpZU1hbmFnZXI6OnNoYXJl
ZCgpLmRpc3BhdGNoQ29va2llc0RpZENoYW5nZSgpOwogfQogCi0jaWYgUExBVEZPUk0oV0lOKSAm
JiBVU0UoQ0ZORVRXT1JLKQotUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6ZGVmYXVsdENvb2tpZVN0b3JhZ2UoKQotewotICAgIHJldHVybiAw
OwotfQotI2VuZGlmCi0KLVN0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3JE
T00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNv
bnN0IEtVUkwmIHVybCkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3JE
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykK
ICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKICAg
ICAgICAgU3RyaW5nIHJlc3VsdDsKLSAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5u
ZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0ZvckRPTShjb250ZXh0ICYmIGNvbnRl
eHQtPmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNGb3JET006OlJlcGx5KHJlc3Vs
dCksIDApKQorICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0
aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpDb29raWVzRm9yRE9NKHNlc3Npb24uaXNQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKCksIGZpcnN0UGFydHksIHVybCksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6Q29va2llc0ZvckRPTTo6UmVwbHkocmVzdWx0KSwgMCkpCiAgICAgICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogI2VuZGlmCiAK
LSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1
cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0UGFy
dHksIHVybCk7CiB9CiAKLXZvaWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJv
bURPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VT
UykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsK
LSAgICAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0
Q29va2llc0Zyb21ET00oY29udGV4dCAmJiBjb250ZXh0LT5pblByaXZhdGVCcm93c2luZ01vZGUo
KSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpLCAwKTsKKyAgICAgICAgV2ViUHJvY2Vz
czo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6U2V0Q29va2llc0Zyb21ET00oc2Vz
c2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Npb24oKSwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVT
dHJpbmcpLCAwKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgogCi0gICAgV2ViQ29y
ZTo6c2V0Q29va2llc0Zyb21ET00oY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJp
bmcpOworICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHks
IHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNv
b2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29sIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29v
a2llc0VuYWJsZWQoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktf
UFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNz
KCkpIHsKICAgICAgICAgYm9vbCByZXN1bHQ7Ci0gICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hh
cmVkKCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkKGNvbnRleHQg
JiYgY29udGV4dC0+aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCksIGZpcnN0UGFydHksIHVybCksIE1l
c3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llc0VuYWJsZWQ6OlJl
cGx5KHJlc3VsdCksIDApKQorICAgICAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdv
cmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVzRW5hYmxlZChzZXNzaW9uLmlzUHJpdmF0ZUJy
b3dzaW5nU2Vzc2lvbigpLCBmaXJzdFBhcnR5LCB1cmwpLCBNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZXNFbmFibGVkOjpSZXBseShyZXN1bHQpLCAwKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAj
ZW5kaWYKIAotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChjb250ZXh0LCBmaXJz
dFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzZXNzaW9u
LCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJiB1cmwpCiB7CiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJv
Y2Vzczo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgU3RyaW5nIHJl
c3VsdDsKLSAgICAgICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlv
bigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29udGV4dCAmJiBjb250
ZXh0LT5pblByaXZhdGVCcm93c2luZ01vZGUoKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6
Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRW
YWx1ZTo6UmVwbHkocmVzdWx0KSwgMCkpCisgICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVk
KCkubmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZh
bHVlKHNlc3Npb24uaXNQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCksIGZpcnN0UGFydHksIHVybCks
IE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29va2llUmVxdWVzdEhl
YWRlckZpZWxkVmFsdWU6OlJlcGx5KHJlc3VsdCksIDApKQogICAgICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICNlbmRpZgogCi0gICAgcmV0
dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnRleHQsIGZpcnN0
UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVs
ZFZhbHVlKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLWJvb2wgV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdD
b29raWVzKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFJhd0Nvb2tpZXMoY29uc3Qg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBj
b25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewogI2lmIEVOQUJM
RShORVRXT1JLX1BST0NFU1MpCiAgICAgaWYgKFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3
b3JrUHJvY2VzcygpKSB7Ci0gICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29y
a0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXMoY29udGV4dCAmJiBjb250ZXh0LT5p
blByaXZhdGVCcm93c2luZ01vZGUoKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpHZXRSYXdDb29raWVzOjpSZXBseShyYXdDb29raWVz
KSwgMCkpCisgICAgICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nvbm5lY3Rp
b24oKS0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M6OkdldFJhd0Nvb2tpZXMoc2Vzc2lvbi5pc1ByaXZhdGVCcm93c2luZ1Nlc3Np
b24oKSwgZmlyc3RQYXJ0eSwgdXJsKSwgTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzOjpHZXRSYXdDb29raWVzOjpSZXBseShyYXdDb29raWVzKSwgMCkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICNlbmRpZgogCi0g
ICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJs
LCByYXdDb29raWVzKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhzZXNzaW9u
LCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12b2lkIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6ZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpkZWxldGVDb29raWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9u
LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKIHsKICNpZiBFTkFC
TEUoTkVUV09SS19QUk9DRVNTKQogICAgIGlmIChXZWJQcm9jZXNzOjpzaGFyZWQoKS51c2VzTmV0
d29ya1Byb2Nlc3MoKSkgewotICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29u
bmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpEZWxldGVDb29raWUoY29udGV4dCAmJiBjb250ZXh0LT5pblByaXZhdGVC
cm93c2luZ01vZGUoKSwgdXJsLCBjb29raWVOYW1lKSwgMCk7CisgICAgICAgIFdlYlByb2Nlc3M6
OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkRlbGV0ZUNvb2tpZShzZXNzaW9uLmlz
UHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpLCB1cmwsIGNvb2tpZU5hbWUpLCAwKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICNlbmRpZgogCi0gICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKGNvbnRl
eHQsIHVybCwgY29va2llTmFtZSk7CisgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHNlc3Npb24s
IHVybCwgY29va2llTmFtZSk7CiB9CiAKIC8vIERhdGFiYXNlU3RyYXRlZ3kKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtNTcsMTUgKzU3LDEyIEBAIHByaXZhdGU6CiAKICAgICAvLyBXZWJD
b3JlOjpDb29raWVzU3RyYXRlZ3kKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0NoYW5n
ZWQoKSBPVkVSUklERTsKLSNpZiBQTEFURk9STShNQUMpIHx8IFVTRShDRk5FVFdPUkspCi0gICAg
dmlydHVhbCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gZGVmYXVsdENvb2tpZVN0
b3JhZ2UoKSBPVkVSUklERTsKLSNlbmRpZgotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JE
T00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lk
IHNldENvb2tpZXNGcm9tRE9NKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmlu
ZyYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChXZWJDb3JlOjpO
ZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0
IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdl
YkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsK
LSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4
dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwm
LCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVDb29raWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTdHJpbmcgY29va2ll
c0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdl
YkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wg
Y29va2llc0VuYWJsZWQoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNv
bnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24m
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwg
VmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVs
ZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdl
YkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklERTsKIAogICAgIC8vIFdlYkNvcmU6
OkRhdGFiYXNlU3RyYXRlZ3kKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvbWFjL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkocmV2aXNpb24gMTM4NDEx
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMCArMzQsOCBAQCBw
dWJsaWM6CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgc2V0UHJpdmF0ZUJyb3dzaW5nU3RvcmFn
ZVNlc3Npb25JZGVudGlmaWVyQmFzZShjb25zdCBTdHJpbmcmKTsKLSAgICBzdGF0aWMgdm9pZCBz
d2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7CiAgICAgc3RhdGljIHZvaWQgZW5zdXJlUHJpdmF0
ZUJyb3dzaW5nU2Vzc2lvbigpOwogICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3lQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKCk7Ci0gICAgc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgZGVmYXVsdFN0
b3JhZ2VTZXNzaW9uKCk7CiAgICAgc3RhdGljIHZvaWQgc2V0Q29va2llQWNjZXB0UG9saWN5Rm9y
QWxsQ29udGV4dHMoSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAKIHByaXZhdGU6CkBAIC00OCw4
ICs0Niw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNTaXRlU3BlY2lmaWNR
dWlya3MoKSBjb25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgbG9jYWxGaWxlQ29udGVu
dFNuaWZmaW5nRW5hYmxlZCgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBpblBy
aXZhdGVCcm93c2luZ01vZGUoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIENGVVJMU3Rv
cmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24oKSBjb25z
dCBPVkVSUklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjaGVkdWxlUGFpckhhc2hTZXQqIHNj
aGVkdWxlZFJ1bkxvb3BQYWlycygpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JikgY29uc3QgT1ZFUlJJREU7CiB9OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZpc2lvbiAxMzg0MTEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJGcmFtZU5ldHdvcmtpbmdDb250
ZXh0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw2IEBACiAjaW1wb3J0ICJjb25maWcu
aCIKICNpbXBvcnQgIldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKIAotI2ltcG9ydCA8V2Vi
Q29yZS9Db29raWVTdG9yYWdlQ0ZOZXQuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVMb2FkZXJD
bGllbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNv
dXJjZUVycm9yLmg+CkBAIC0zMiw4ICszMSwxMSBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGRl
ZmF1bHRDRlN0b3JhZ2VTZXNzaW9uOwotc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgcHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb247CitzdGF0aWMgT3duUHRyPE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbj4mIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+LCBzZXNzaW9uLCAoKSk7
CisgICAgcmV0dXJuIHNlc3Npb247Cit9CiAKIGJvb2wgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dDo6bmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSBjb25zdAogewpAQCAtNjcsMjYgKzY5LDE3IEBA
IHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0UHJpdmEKICAgICBwcml2YXRlQnJv
d3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkgPSBpZGVudGlmaWVyOwogfQogCi12
b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24o
KQotewotICAgIC8vIFNldCBhIHByaXZhdGUgc2Vzc2lvbiBmb3IgdGVzdGluZyB0byBhdm9pZCBp
bnRlcmZlcmluZyB3aXRoIGdsb2JhbCBjb29raWVzLiBUaGlzIHNob3VsZCBiZSBkaWZmZXJlbnQg
ZnJvbSBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb24uCi0gICAgaWYgKGRlZmF1bHRDRlN0b3JhZ2VT
ZXNzaW9uKQotICAgICAgICBDRlJlbGVhc2UoZGVmYXVsdENGU3RvcmFnZVNlc3Npb24pOwotICAg
IGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uID0gV0tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Npb24o
Q0ZTVFIoIlByaXZhdGUgV2ViS2l0IFNlc3Npb24iKSk7Ci19Ci0KIHZvaWQgV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7CiAgICAgLy8g
RklYTUUgKE5ldHdvcmtQcm9jZXNzKTogRG9uJ3QgY3JlYXRlIGFuIHVubmVjZXNzYXJ5IHNlc3Np
b24gd2hlbiB1c2luZyBuZXR3b3JrIHByb2Nlc3MuCiAKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwotICAgIGlmIChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbikKKyAgICBpZiAocHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3Ry
aW5nIGJhc2UgPSBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCku
aXNOdWxsKCkgPyBTdHJpbmcoW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVy
XSkgOiBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCk7Ci0gICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklkZW50aWZpZXIgPSBTdHJpbmcoYmFzZSArICIuUHJp
dmF0ZUJyb3dzaW5nIikuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICBTdHJpbmcgaWRlbnRpZmllckJh
c2UgPSBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkuaXNOdWxs
KCkgPyBTdHJpbmcoW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBidW5kbGVJZGVudGlmaWVyXSkgOiBw
cml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCk7CiAKLSAgICBwcml2
YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbiA9IFdLQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VTZXNzaW9u
KGNmSWRlbnRpZmllci5nZXQoKSk7CisgICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24o
KSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihp
ZGVudGlmaWVyQmFzZSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVz
dHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKQpAQCAtOTQsMzkgKzg3LDI4IEBAIHZvaWQgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVzdHJveVAKICAgICBpZiAoIXByaXZhdGVCcm93c2lu
Z1N0b3JhZ2VTZXNzaW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBDRlJlbGVhc2UocHJpdmF0
ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pOwotICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNz
aW9uID0gMDsKLX0KLQotQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBXZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0OjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKQotewotICAgIHJldHVybiBkZWZhdWx0Q0ZT
dG9yYWdlU2Vzc2lvbjsKLX0KLQotYm9vbCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjppblBy
aXZhdGVCcm93c2luZ01vZGUoKSBjb25zdAotewotICAgIHJldHVybiBmcmFtZSgpICYmIGZyYW1l
KCktPnNldHRpbmdzKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCgpOworICAgIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkgPSBudWxscHRyOwog
fQogCi1DRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0
b3JhZ2VTZXNzaW9uKCkgY29uc3QKK05ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3
b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAogewotICAgIGlmIChpblByaXZh
dGVCcm93c2luZ01vZGUoKSkgewotICAgICAgICBBU1NFUlQocHJpdmF0ZUJyb3dzaW5nU3RvcmFn
ZVNlc3Npb24pOwotICAgICAgICByZXR1cm4gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb247
CisgICAgYm9vbCBpblByaXZhdGVCcm93c2luZ01vZGUgPSBmcmFtZSgpICYmIGZyYW1lKCktPnNl
dHRpbmdzKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgp
OworICAgIGlmIChpblByaXZhdGVCcm93c2luZ01vZGUpIHsKKyAgICAgICAgQVNTRVJUKHByaXZh
dGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpOworICAgICAgICByZXR1cm4gKnByaXZhdGVCcm93
c2luZ1N0b3JhZ2VTZXNzaW9uKCk7CiAgICAgfQotICAgIHJldHVybiBkZWZhdWx0Q0ZTdG9yYWdl
U2Vzc2lvbjsKKyAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZhdWx0U3RvcmFn
ZVNlc3Npb24oKTsKIH0KIAogdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRDb29r
aWVBY2NlcHRQb2xpY3lGb3JBbGxDb250ZXh0cyhIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGlj
eSkKIHsKICAgICBbW05TSFRUUENvb2tpZVN0b3JhZ2Ugc2hhcmVkSFRUUENvb2tpZVN0b3JhZ2Vd
IHNldENvb2tpZUFjY2VwdFBvbGljeTpzdGF0aWNfY2FzdDxOU0hUVFBDb29raWVBY2NlcHRQb2xp
Y3k+KHBvbGljeSldOwogCi0gICAgaWYgKFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVm
PiBjb29raWVTdG9yYWdlID0gZGVmYXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKSkKKyAgICBpZiAo
UmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKSkK
ICAgICAgICAgV0tTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KGNvb2tpZVN0b3JhZ2UuZ2V0KCks
IHBvbGljeSk7CiAKLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24pIHsKLSAg
ICAgICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IHByaXZhdGVCcm93c2luZ0Nv
b2tpZVN0b3JhZ2UgPSBhZG9wdENGKFdLQ29weUhUVFBDb29raWVTdG9yYWdlKHByaXZhdGVCcm93
c2luZ1N0b3JhZ2VTZXNzaW9uKSk7Ci0gICAgICAgIFdLU2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eShwcml2YXRlQnJvd3NpbmdDb29raWVTdG9yYWdlLmdldCgpLCBwb2xpY3kpOworICAgIGlmIChw
cml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpKSB7CisgICAgICAgIFdLU2V0SFRUUENvb2tp
ZUFjY2VwdFBvbGljeShwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpLT5jb29raWVTdG9y
YWdlKCkuZ2V0KCksIHBvbGljeSk7CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXNNYWMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9t
YWMvV2ViUGxhdGZvcm1TdHJhdGVnaWVzTWFjLm1tCShyZXZpc2lvbiAxMzg0MTEpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXNNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCIK
LQotI2luY2x1ZGUgIldlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaCIKLSNpbmNsdWRlIDxXZWJL
aXRTeXN0ZW1JbnRlcmZhY2UuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVz
cGFjZSBXZWJLaXQgewotCi1SZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpkZWZhdWx0Q29va2llU3RvcmFnZSgpCi17Ci0gICAgaWYgKENGVVJM
U3RvcmFnZVNlc3Npb25SZWYgc2Vzc2lvbiA9IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OmRl
ZmF1bHRTdG9yYWdlU2Vzc2lvbigpKQotICAgICAgICByZXR1cm4gYWRvcHRDRihXS0NvcHlIVFRQ
Q29va2llU3RvcmFnZShzZXNzaW9uKSk7Ci0KLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIHJldHVy
biBXS0dldERlZmF1bHRIVFRQQ29va2llU3RvcmFnZSgpOwotI2Vsc2UKLSAgICAvLyBXaGVuIHVz
aW5nIE5TVVJMQ29ubmVjdGlvbiwgd2UgYWxzbyB1c2UgaXRzIHNoYXJlZCBjb29raWUgc3RvcmFn
ZS4KLSAgICByZXR1cm4gMDsKLSNlbmRpZgotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvd2luL1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L3dpbi9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlz
aW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
d2luL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsOCAr
NDUsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9j
a2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CiAKICNpZiBV
U0UoQ0ZORVRXT1JLKQotICAgIHZpcnR1YWwgYm9vbCBpblByaXZhdGVCcm93c2luZ01vZGUoKSBj
b25zdDsKLSAgICB2aXJ0dWFsIENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24o
KSBjb25zdDsKKyAgICB2aXJ0dWFsIFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3Rv
cmFnZVNlc3Npb24oKSBjb25zdDsKICNlbmRpZgogCiAgICAgU3RyaW5nIG1fdXNlckFnZW50OwpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CShyZXZpc2lvbiAxMzg0MTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9KU0VsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0pTUmFuZ2UuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL01haW5SZXNvdXJjZUxvYWRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTmV0
d29ya2luZ0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vZGVUcmF2ZXJzYWwuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRvY3VtZW50
Lmg+CkBAIC0yNDgsNyArMjQ5LDcgQEAgdm9pZCBXZWJGcmFtZTo6c3RhcnREb3dubG9hZChjb25z
dCBXZWJDbwogCiAjaWYgRU5BQkxFKE5FVFdPUktfUFJPQ0VTUykKICAgICBpZiAoV2ViUHJvY2Vz
czo6c2hhcmVkKCkudXNlc05ldHdvcmtQcm9jZXNzKCkpIHsKLSAgICAgICAgYm9vbCBwcml2YXRl
QnJvd3NpbmdFbmFibGVkID0gbV9jb3JlRnJhbWUtPmxvYWRlcigpLT5uZXR3b3JraW5nQ29udGV4
dCgpLT5pblByaXZhdGVCcm93c2luZ01vZGUoKTsKKyAgICAgICAgYm9vbCBwcml2YXRlQnJvd3Np
bmdFbmFibGVkID0gbV9jb3JlRnJhbWUtPmxvYWRlcigpLT5uZXR3b3JraW5nQ29udGV4dCgpLT5z
dG9yYWdlU2Vzc2lvbigpLmlzUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwogICAgICAgICBXZWJQ
cm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29ubmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTdGFydERvd25sb2FkKHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQsIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QpLCAwKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9tYWMvV2ViUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHJldmlzaW9uIDEzODQxMSkKKysrIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxDb252ZXJ0ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUv
S2V5Ym9hcmRFdmVudC5oPgorI2ltcG9ydCA8V2ViQ29yZS9OZXR3b3JraW5nQ29udGV4dC5oPgog
I2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9h
cmRFdmVudC5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgpAQCAtNjc4LDcg
KzY3OSw3IEBAIGJvb2wgV2ViUGFnZTo6cGxhdGZvcm1IYXNMb2NhbERhdGFGb3JVUkwKICAgICBO
U011dGFibGVVUkxSZXF1ZXN0KiByZXF1ZXN0ID0gW1tOU011dGFibGVVUkxSZXF1ZXN0IGFsbG9j
XSBpbml0V2l0aFVSTDp1cmxdOwogICAgIFtyZXF1ZXN0IHNldFZhbHVlOihOU1N0cmluZyopdXNl
ckFnZW50KCkgZm9ySFRUUEhlYWRlckZpZWxkOkAiVXNlci1BZ2VudCJdOwogICAgIE5TQ2FjaGVk
VVJMUmVzcG9uc2UgKmNhY2hlZFJlc3BvbnNlOwotICAgIGlmIChDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmIHN0b3JhZ2VTZXNzaW9uID0gY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5u
ZXR3b3JraW5nQ29udGV4dCgpLT5zdG9yYWdlU2Vzc2lvbigpKQorICAgIGlmIChDRlVSTFN0b3Jh
Z2VTZXNzaW9uUmVmIHN0b3JhZ2VTZXNzaW9uID0gY29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPmxv
YWRlcigpLT5uZXR3b3JraW5nQ29udGV4dCgpLT5zdG9yYWdlU2Vzc2lvbigpLnBsYXRmb3JtU2Vz
c2lvbigpKQogICAgICAgICBjYWNoZWRSZXNwb25zZSA9IFdLQ2FjaGVkUmVzcG9uc2VGb3JSZXF1
ZXN0KHN0b3JhZ2VTZXNzaW9uLCByZXF1ZXN0KTsKICAgICBlbHNlCiAgICAgICAgIGNhY2hlZFJl
c3BvbnNlID0gW1tOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXSBjYWNoZWRSZXNwb25zZUZvclJl
cXVlc3Q6cmVxdWVzdF07CkBAIC02OTIsNyArNjkzLDcgQEAgc3RhdGljIE5TQ2FjaGVkVVJMUmVz
cG9uc2UgKmNhY2hlZFJlc3BvbgogICAgIFJldGFpblB0cjxOU011dGFibGVVUkxSZXF1ZXN0PiBy
ZXF1ZXN0KEFkb3B0TlMsIFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6
dXJsXSk7CiAgICAgW3JlcXVlc3QuZ2V0KCkgc2V0VmFsdWU6KE5TU3RyaW5nICopd2ViUGFnZS0+
dXNlckFnZW50KCkgZm9ySFRUUEhlYWRlckZpZWxkOkAiVXNlci1BZ2VudCJdOwogCi0gICAgaWYg
KENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24gPSB3ZWJQYWdlLT5jb3JlUGFn
ZSgpLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPm5ldHdvcmtpbmdDb250ZXh0KCktPnN0b3JhZ2VT
ZXNzaW9uKCkpCisgICAgaWYgKENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24g
PSB3ZWJQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPm5ldHdvcmtpbmdD
b250ZXh0KCktPnN0b3JhZ2VTZXNzaW9uKCkucGxhdGZvcm1TZXNzaW9uKCkpCiAgICAgICAgIHJl
dHVybiBXS0NhY2hlZFJlc3BvbnNlRm9yUmVxdWVzdChzdG9yYWdlU2Vzc2lvbiwgcmVxdWVzdC5n
ZXQoKSk7CiAKICAgICByZXR1cm4gW1tOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXSBjYWNoZWRS
ZXNwb25zZUZvclJlcXVlc3Q6cmVxdWVzdC5nZXQoKV07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc01haW5FZmwuY3BwCShyZXZpc2lvbiAx
Mzg0MTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL2VmbC9XZWJQcm9jZXNzTWFpbkVm
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDggQEAKICNpbmNsdWRlICJXS0Jhc2Uu
aCIKICNpbmNsdWRlIDxFY29yZS5oPgogI2luY2x1ZGUgPEVmcmVldC5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05ldHdv
cmtpbmdDb250ZXh0Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUnVuTG9vcC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV2ViUHJvY2Vzcy5o
PgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvZ3RrL1dlYlByb2Nl
c3NNYWluR3RrLmNwcAkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9ndGsvV2ViUHJvY2Vzc01haW5HdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICsz
MCw4IEBACiAjZGVmaW5lIExJQlNPVVBfVVNFX1VOU1RBQkxFX1JFUVVFU1RfQVBJCiAKICNpbmNs
dWRlICJXS0Jhc2UuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JraW5nQ29udGV4dC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KICNp
bmNsdWRlIDxXZWJLaXQyL1dlYlByb2Nlc3MuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHJldmlz
aW9uIDEzODQxMikKKysrIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDIwIEBACisyMDEyLTEyLTIyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBA
YXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhIHNlcGFyYXRlIGNsYXNzIGZvciBuZXR3b3JraW5n
IHJlbGF0ZWQgc3RvcmFnZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA1Njc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuY3BwOgorICAg
ICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjb29raWVzRm9yRE9NKToKKyAgICAgICAgKFBs
YXRmb3JtU3RyYXRlZ2llc0VmbDo6c2V0Q29va2llc0Zyb21ET00pOgorICAgICAgICAoUGxhdGZv
cm1TdHJhdGVnaWVzRWZsOjpjb29raWVzRW5hYmxlZCk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0
ZWdpZXNFZmw6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKToKKyAgICAgICAgKFBsYXRm
b3JtU3RyYXRlZ2llc0VmbDo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0
ZWdpZXNFZmw6OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZv
cm1TdHJhdGVnaWVzRWZsLmg6CisgICAgICAgIENvb2tpZSBmdW5jdGlvbnMgbm93IHRha2UgYSBO
ZXR3b3JrU3RvcmFnZVNlc3Npb24sIG5vdCBhIE5ldHdvcmtpbmdDb250ZXh0LgorCiAyMDEyLTEy
LTIxICBTZW9ranUgS3dvbiAgPHNlb2tqdS5rd29uQGdtYWlsLmNvbT4KIAogICAgICAgICBbRUZM
XSBBZGQgZ3VhcmQgYXJvdW5kIENvbnRleHRNZW51SXRlbVRhZ0luc3BlY3RFbGVtZW50CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRm
b3JtU3RyYXRlZ2llc0VmbC5jcHAJKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0VmbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg2LDM0ICs4NiwzNCBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6bm90aWZ5
Q29va2llCiB7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNvb2tpZXNGb3JE
T00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNv
bnN0IEtVUkwmIHVybCkKK1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmNvb2tpZXNGb3JE
T00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNG
b3JET00oY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29v
a2llc0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lkIFBsYXRmb3Jt
U3RyYXRlZ2llc0VmbDo6c2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBjb29raWVTdHJpbmcpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6c2V0Q29va2llc0Zy
b21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKQog
ewotICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVy
bCwgY29va2llU3RyaW5nKTsKKyAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShzZXNzaW9u
LCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CiB9CiAKLWJvb2wgUGxhdGZvcm1TdHJh
dGVnaWVzRWZsOjpjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29u
c3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBQbGF0Zm9ybVN0cmF0
ZWdpZXNFZmw6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vz
c2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJl
dHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOwor
ICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzZXNzaW9uLCBmaXJzdFBhcnR5LCB1
cmwpOwogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzRWZsOjpjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc0VmbDo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0g
ICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnRleHQs
IGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFk
ZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLWJvb2wgUGxhdGZv
cm1TdHJhdGVnaWVzRWZsOjpnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+
JiByYXdDb29raWVzKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNFZmw6OmdldFJhd0Nvb2tpZXMo
Y29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewotICAg
IHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCwg
cmF3Q29va2llcyk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lvbiwg
Zmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0ZWdp
ZXNFZmw6OmRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2ll
c0VmbDo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0gICAgV2ViQ29y
ZTo6ZGVsZXRlQ29va2llKGNvbnRleHQsIHVybCwgY29va2llTmFtZSk7CisgICAgV2ViQ29yZTo6
ZGVsZXRlQ29va2llKHNlc3Npb24sIHVybCwgY29va2llTmFtZSk7CiB9CiAKIHZvaWQgUGxhdGZv
cm1TdHJhdGVnaWVzRWZsOjpyZWZyZXNoUGx1Z2lucygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNFZmwuaAko
cmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvUGxh
dGZvcm1TdHJhdGVnaWVzRWZsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDEyICs0NywxMiBAQCBw
cml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5CiAgICAgdmlydHVhbCB2
b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkKCk7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llc0Zv
ckRPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZp
cnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29v
a2llc0Zyb21ET00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7Ci0g
ICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0
KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYp
OwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFdlYkNv
cmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKFdl
YkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0
eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7Ci0gICAg
dmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNv
bnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBj
b29raWVzRm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0
IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxl
ZChjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCBTdHJp
bmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0
b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAg
IHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8g
V2ViQ29yZTo6RGF0YWJhc2VTdHJhdGVneQogICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1l
bnRhdGlvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzODQxMikKKysrIFNvdXJj
ZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisy
MDEyLTEyLTIyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBhIHNlcGFyYXRlIGNsYXNzIGZvciBuZXR3b3JraW5nIHJlbGF0ZWQgc3RvcmFnZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1Njc2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNHdGsuY3BwOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVn
aWVzR3RrOjpjb29raWVzRm9yRE9NKToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6
c2V0Q29va2llc0Zyb21ET00pOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjb29r
aWVzRW5hYmxlZCk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Z2V0
UmF3Q29va2llcyk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmRlbGV0ZUNvb2tp
ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmg6Cisg
ICAgICAgIENvb2tpZSBmdW5jdGlvbnMgbm93IHRha2UgYSBOZXR3b3JrU3RvcmFnZVNlc3Npb24s
IG5vdCBhIE5ldHdvcmtpbmdDb250ZXh0LgorCiAyMDEyLTEyLTE4ICBBbGV4ZXkgUHJvc2t1cnlh
a292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBmdW5jdGlv
bnMgZnJvbSBDb29raWVzU3RyYXRlZ3kKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzR3RrLmNwcAkocmV2aXNp
b24gMTM4NDExKQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1T
dHJhdGVnaWVzR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODAsMzQgKzgwLDM0IEBAIHZvaWQg
UGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpub3RpZnlDb29raWUKIHsKIH0KIAotU3RyaW5nIFBsYXRm
b3JtU3RyYXRlZ2llc0d0azo6Y29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4
dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRm
b3JtU3RyYXRlZ2llc0d0azo6Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsK
LSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0ZvckRPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1
cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0UGFy
dHksIHVybCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpzZXRDb29raWVzRnJv
bURPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0cmluZykKK3ZvaWQgUGxhdGZv
cm1TdHJhdGVnaWVzR3RrOjpzZXRDb29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwg
Y29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCiB7Ci0gICAgV2ViQ29yZTo6c2V0Q29va2llc0Zy
b21ET00oY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOworICAgIFdlYkNv
cmU6OnNldENvb2tpZXNGcm9tRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3Ry
aW5nKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmNvb2tpZXNFbmFibGVkKE5l
dHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBL
VVJMJiB1cmwpCitib29sIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6Y29va2llc0VuYWJsZWQoY29u
c3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNFbmFibGVk
KGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZXNF
bmFibGVkKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVN0
cmF0ZWdpZXNHdGs6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitT
dHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1
ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0
UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1
cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQ
YXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNHdGs6OmdldFJhd0Nvb2tp
ZXMoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNv
bnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4mIHJhd0Nvb2tpZXMpCitib29sIFBsYXRmb3Jt
U3RyYXRlZ2llc0d0azo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24m
IHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9y
PENvb2tpZT4mIHJhd0Nvb2tpZXMpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tp
ZXMoY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKKyAgICByZXR1cm4gV2Vi
Q29yZTo6Z2V0UmF3Q29va2llcyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMp
OwogfQogCi12b2lkIFBsYXRmb3JtU3RyYXRlZ2llc0d0azo6ZGVsZXRlQ29va2llKE5ldHdvcmtp
bmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2ll
TmFtZSkKK3ZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzR3RrOjpkZWxldGVDb29raWUoY29uc3QgTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgY29va2llTmFtZSkKIHsKLSAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoY29udGV4dCwgdXJs
LCBjb29raWVOYW1lKTsKKyAgICBXZWJDb3JlOjpkZWxldGVDb29raWUoc2Vzc2lvbiwgdXJsLCBj
b29raWVOYW1lKTsKIH0KIAogLy8gUGx1Z2luU3RyYXRlZ3kKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc0d0ay5o
CShyZXZpc2lvbiAxMzg0MTEpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9Q
bGF0Zm9ybVN0cmF0ZWdpZXNHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsMTIgKzQ2LDEyIEBA
IHByaXZhdGU6CiAKICAgICAvLyBXZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKICAgICB2aXJ0dWFs
IHZvaWQgbm90aWZ5Q29va2llc0NoYW5nZWQoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVz
Rm9yRE9NKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRD
b29raWVzRnJvbURPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsK
LSAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRl
eHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJM
Jik7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoV2Vi
Q29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMo
V2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBh
cnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0Kiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgU3RyaW5n
IGNvb2tpZXNGb3JET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAg
IHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3Rv
cmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJD
b3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFi
bGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIFN0
cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3Jr
U3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBX
ZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2Vi
Q29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQ
YXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7Cisg
ICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFn
ZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAv
LyBXZWJDb3JlOjpEYXRhYmFzZVN0cmF0ZWd5CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxl
bWVudGF0aW9uLgpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTM4NDEyKQorKysgU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzcgQEAK
KzIwMTItMTItMjIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CisKKyAgICAg
ICAgQWRkIGEgc2VwYXJhdGUgY2xhc3MgZm9yIG5ldHdvcmtpbmcgcmVsYXRlZCBzdG9yYWdlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU2NzYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICBVcGRhdGVkIGZvciBSZXNv
dXJjZUhhbmRsZSBpbmNsdWRlIGNoYW5nZXMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbToKKyAgICAgICAgVGhpcyBjbGFzcyBpcyBub3cgc2lt
cGxlciwgd2l0aCBtb3JlIHNlc3Npb24gdHJhY2tpbmcgYmVpbmcgaW4gV2ViQ29yZSBub3cuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMubW06CisgICAgICAgIChX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3JET00pOgorICAgICAgICAoV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpOgorICAgICAgICAoV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2ll
czo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgV2Ugbm8gbG9uZ2VyIG5lZWQgYSBmdW5jdGlvbiBm
b3IgZGVmYXVsdCBjb29raWUgc3RvcmFnZSEgT3RoZXIgY29va2llIGZ1bmN0aW9ucworICAgICAg
ICBub3cgdGFrZSBhIHNlc3Npb24uCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2Vz
Lm1tOgorICAgICAgICAoK1tXZWJQcmVmZXJlbmNlcyBfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3
VGVzdGluZ1Nlc3Npb25dKTogSW5pdGlhbGl6ZSBXQ1NJIGJlZm9yZQorICAgICAgICBjYWxsaW5n
IGEgV2ViQ29yZSB0aGF0IHVzZXMgaXQuCisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIF9zZXRD
dXJyZW50TmV0d29ya0xvYWRlclNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6XSk6IFVzZQorICAg
ICAgICBOZXR3b3JrU3RvcmFnZVNlc3Npb24gZm9yIHNlc3Npb24gdHJhY2tpbmcuCisKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlZpZXcubW06ICgtW1dlYlZpZXcgX2NhY2hlZFJlc3BvbnNlRm9yVVJM
Ol0pOiBVcGRhdGVkIGZvciBuZXR3b3JraW5nCisgICAgICAgIGNvbnRleHQgbm93IHJldHVybmlu
ZyBhIGNsYXNzIGZvciBzZXNzaW9uLgorCiAyMDEyLTEyLTIwICBJbHlhIFRpa2hvbm92c2t5ICA8
bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBmb3Ig
Y2hyb21pdW0gbWFjIGFmdGVyIHIxMzgyMDYuCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNp
b24gMTM4NDExKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2ICsxMDgsNyBAQAogI2ltcG9y
dCA8V2ViQ29yZS9Nb3VzZUV2ZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBv
cnQgPFdlYkNvcmUvUGx1Z2luVmlld0Jhc2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUHJvdGVjdGlv
blNwYWNlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbXBvcnQgPFdl
YkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIu
aD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29y
a2luZ0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgJKHJldmlzaW9uIDEzODQxMSkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTMgKzI3LDggQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQoZnJhbWUpKTsKICAgICB9
CiAKLSAgICBzdGF0aWMgdm9pZCBzZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50
aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyB2b2lkIHN3aXRjaFRvTmV3VGVz
dGluZ1Nlc3Npb24oKTsKICAgICBzdGF0aWMgdm9pZCBlbnN1cmVQcml2YXRlQnJvd3NpbmdTZXNz
aW9uKCk7CiAgICAgc3RhdGljIHZvaWQgZGVzdHJveVByaXZhdGVCcm93c2luZ1Nlc3Npb24oKTsK
LSAgICBzdGF0aWMgQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBkZWZhdWx0U3RvcmFnZVNlc3Npb24o
KTsKLQotICAgIHN0YXRpYyB2b2lkIHNldENvb2tpZUFjY2VwdFBvbGljeUZvclRlc3RpbmdDb250
ZXh0KE5TSFRUUENvb2tpZUFjY2VwdFBvbGljeSk7CiAKIHByaXZhdGU6CiAgICAgV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dChXZWJDb3JlOjpGcmFtZSogZnJhbWUpCkBAIC00Myw4ICszOCw3IEBA
IHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSBj
b25zdCBPVkVSUklERTsKICAgICB2aXJ0dWFsIGJvb2wgbG9jYWxGaWxlQ29udGVudFNuaWZmaW5n
RW5hYmxlZCgpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBpblByaXZhdGVCcm93
c2luZ01vZGUoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIENGVVJMU3RvcmFnZVNlc3Np
b25SZWYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYkNv
cmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3RvcmFnZVNlc3Npb24oKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjaGVkdWxlUGFpckhhc2hTZXQqIHNjaGVkdWxlZFJ1
bkxvb3BQYWlycygpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29u
c3QgT1ZFUlJJREU7CiB9OwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Lm1tCShyZXZpc2lv
biAxMzg0MTEpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAjaW1w
b3J0ICJXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgiCiAKICNpbXBvcnQgPFdlYkNvcmUvRnJh
bWVMb2FkZXJDbGllbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTmV0d29ya1N0b3JhZ2VTZXNzaW9u
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VF
cnJvci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgpAQCAtMjgsOCArMjksMTEgQEAK
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uOwotc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25S
ZWYgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb247CitzdGF0aWMgT3duUHRyPE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbj4mIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+LCBzZXNzaW9u
LCAoKSk7CisgICAgcmV0dXJuIHNlc3Npb247Cit9CiAKIGJvb2wgV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dDo6bmVlZHNTaXRlU3BlY2lmaWNRdWlya3MoKSBjb25zdAogewpAQCAtNTEsNjkgKzU1
LDI3IEBAIFJlc291cmNlRXJyb3IgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDoKICAgICByZXR1
cm4gZnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgpLT5ibG9ja2VkRXJyb3IocmVxdWVzdCk7CiB9
CiAKLXN0YXRpYyBTdHJpbmcmIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRpZmll
ckJhc2UoKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChTdHJpbmcsIGJhc2UsICgpKTsKLSAgICByZXR1cm4gYmFzZTsKLX0KLQotdm9pZCBX
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzZXRQcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lv
bklkZW50aWZpZXJCYXNlKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKLXsKLSAgICBwcml2YXRl
QnJvd3NpbmdTdG9yYWdlU2Vzc2lvbklkZW50aWZpZXJCYXNlKCkgPSBpZGVudGlmaWVyOwotfQot
Ci12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Np
b24oKQotewotICAgIC8vIFNldCBhIHByaXZhdGUgc2Vzc2lvbiBmb3IgdGVzdGluZyB0byBhdm9p
ZCBpbnRlcmZlcmluZyB3aXRoIGdsb2JhbCBjb29raWVzLiBUaGlzIHNob3VsZCBiZSBkaWZmZXJl
bnQgZnJvbSBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb24uCi0gICAgaWYgKGRlZmF1bHRDRlN0b3Jh
Z2VTZXNzaW9uKQotICAgICAgICBDRlJlbGVhc2UoZGVmYXVsdENGU3RvcmFnZVNlc3Npb24pOwot
ICAgIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uID0gV0tDcmVhdGVQcml2YXRlU3RvcmFnZVNlc3Np
b24oQ0ZTVFIoIlByaXZhdGUgV2ViS2l0IFNlc3Npb24iKSk7Ci19Ci0KIHZvaWQgV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNl
c3Npb24pCisgICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFN0cmluZyBiYXNlID0gcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b25JZGVudGlmaWVyQmFzZSgpLmlzTnVsbCgpID8gU3RyaW5nKFtbTlNCdW5kbGUgbWFpbkJ1bmRs
ZV0gYnVuZGxlSWRlbnRpZmllcl0pIDogcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVu
dGlmaWVyQmFzZSgpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY2ZJZGVudGlmaWVyID0g
U3RyaW5nKGJhc2UgKyAiLlByaXZhdGVCcm93c2luZyIpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0KLSAg
ICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbiA9IFdLQ3JlYXRlUHJpdmF0ZVN0b3JhZ2VT
ZXNzaW9uKGNmSWRlbnRpZmllci5nZXQoKSk7CisgICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNl
c3Npb24oKSA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6Y3JlYXRlUHJpdmF0ZUJyb3dzaW5nU2Vz
c2lvbihbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZUlkZW50aWZpZXJdKTsKIH0KIAogdm9p
ZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpkZXN0cm95UHJpdmF0ZUJyb3dzaW5nU2Vzc2lv
bigpCiB7Ci0gICAgaWYgKCFwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbikKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgQ0ZSZWxlYXNlKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKTsK
LSAgICBwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbiA9IDA7Ci19Ci0KLUNGVVJMU3RvcmFn
ZVNlc3Npb25SZWYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZGVmYXVsdFN0b3JhZ2VTZXNz
aW9uKCkKLXsKLSAgICByZXR1cm4gZGVmYXVsdENGU3RvcmFnZVNlc3Npb247CisgICAgcHJpdmF0
ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSA9IG51bGxwdHI7CiB9CiAKLWJvb2wgV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dDo6aW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkgY29uc3QKK05ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24o
KSBjb25zdAogewotICAgIHJldHVybiBmcmFtZSgpICYmIGZyYW1lKCktPnNldHRpbmdzKCkgJiYg
ZnJhbWUoKS0+c2V0dGluZ3MoKS0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwotfQotCi1DRlVS
TFN0b3JhZ2VTZXNzaW9uUmVmIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnN0b3JhZ2VTZXNz
aW9uKCkgY29uc3QKLXsKLSAgICBpZiAoaW5Qcml2YXRlQnJvd3NpbmdNb2RlKCkpIHsKLSAgICAg
ICAgQVNTRVJUKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKTsKLSAgICAgICAgcmV0dXJu
IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uOworICAgIGJvb2wgaW5Qcml2YXRlQnJvd3Np
bmdNb2RlID0gZnJhbWUoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpICYmIGZyYW1lKCktPnNldHRp
bmdzKCktPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBpZiAoaW5Qcml2YXRlQnJvd3Np
bmdNb2RlKSB7CisgICAgICAgIEFTU0VSVChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigp
KTsKKyAgICAgICAgcmV0dXJuICpwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpOwogICAg
IH0KLSAgICByZXR1cm4gZGVmYXVsdENGU3RvcmFnZVNlc3Npb247CisgICAgcmV0dXJuIE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKLXZvaWQgV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yVGVzdGluZ0Nv
bnRleHQoTlNIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSkKLXsKLSAgICBBU1NFUlQoZGVm
YXVsdENGU3RvcmFnZVNlc3Npb24pOwotICAgIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdl
UmVmPiBkZWZhdWx0Q29va2llU3RvcmFnZSA9IGFkb3B0Q0YoV0tDb3B5SFRUUENvb2tpZVN0b3Jh
Z2UoZGVmYXVsdENGU3RvcmFnZVNlc3Npb24pKTsKLSAgICBXS1NldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3koZGVmYXVsdENvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7Ci19CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0
cmF0ZWdpZXMuaAkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDEz
ICs1MywxMiBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5CiAg
ICAgdmlydHVhbCB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkKCkgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCBSZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gZGVmYXVsdENvb2tpZVN0b3Jh
Z2UoKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKFdlYkNvcmU6
Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVz
RnJvbURPTShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwm
IGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKSBPVkVSUklE
RTsKLSAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQoV2ViQ29yZTo6TmV0d29ya2luZ0Nv
bnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpL
VVJMJikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBib29sIGdldFJhd0Nvb2tpZXMoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdl
YkNvcmU6OkNvb2tpZT4mKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2ll
KFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0
IFN0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29u
c3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBzZXRDb29raWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Np
b24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJM
JiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFi
bGVkKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6
OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGdldFJh
d0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJD
b3JlOjpDb29raWU+JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUNvb2tpZShj
b25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiwgY29uc3QgU3RyaW5nJikgT1ZFUlJJREU7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0
cmF0ZWd5CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgpJbmRleDogU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3Jt
U3RyYXRlZ2llcy5tbQkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04
Nyw0NyArODcsMzQgQEAgdm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Om5vdGlmeUNvb2tpZQog
ewogfQogCi1SZXRhaW5QdHI8Q0ZIVFRQQ29va2llU3RvcmFnZVJlZj4gV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpkZWZhdWx0Q29va2llU3RvcmFnZSgpCitTdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVn
aWVzOjpjb29raWVzRm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwg
Y29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIGlmIChDRlVS
TFN0b3JhZ2VTZXNzaW9uUmVmIHNlc3Npb24gPSBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpk
ZWZhdWx0U3RvcmFnZVNlc3Npb24oKSkKLSAgICAgICAgcmV0dXJuIGFkb3B0Q0YoV0tDb3B5SFRU
UENvb2tpZVN0b3JhZ2Uoc2Vzc2lvbikpOwotCi0jaWYgVVNFKENGTkVUV09SSykKLSAgICByZXR1
cm4gV0tHZXREZWZhdWx0SFRUUENvb2tpZVN0b3JhZ2UoKTsKLSNlbHNlCi0gICAgLy8gV2hlbiB1
c2luZyBOU1VSTENvbm5lY3Rpb24sIHdlIGFsc28gdXNlIGl0cyBzaGFyZWQgY29va2llIHN0b3Jh
Z2UuCi0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRl
Z2llczo6Y29va2llc0ZvckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQotewotICAgIHJldHVybiBXZWJDb3JlOjpj
b29raWVzRm9yRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNv
cmU6OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBX
ZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0
IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OnNldENv
b2tpZXNGcm9tRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3Qg
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZVN0
cmluZykKIHsKLSAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURPTShjb250ZXh0LCBmaXJzdFBh
cnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CisgICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00o
c2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOwogfQogCi1ib29sIFdlYlBs
YXRmb3JtU3RyYXRlZ2llczo6Y29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgV2ViUGxh
dGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsK
LSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoY29udGV4dCwgZmlyc3RQYXJ0eSwg
dXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQ
YXJ0eSwgdXJsKTsKIH0KIAotU3RyaW5nIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Y29va2llUmVx
dWVzdEhlYWRlckZpZWxkVmFsdWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtV
UkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJs
KQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShj
b250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi1ib29s
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6Z2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCog
Y29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8
Q29va2llPiYgcmF3Q29va2llcykKK2Jvb2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdD
b29raWVzKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29va2llPiYgcmF3Q29va2llcykK
IHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Z2V0UmF3Q29va2llcyhjb250ZXh0LCBmaXJzdFBhcnR5
LCB1cmwsIHJhd0Nvb2tpZXMpOworICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKHNl
c3Npb24sIGZpcnN0UGFydHksIHVybCwgcmF3Q29va2llcyk7CiB9CiAKLXZvaWQgV2ViUGxhdGZv
cm1TdHJhdGVnaWVzOjpkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNv
bnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQordm9pZCBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNl
c3Npb24sIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewotICAg
IFdlYkNvcmU6OmRlbGV0ZUNvb2tpZShjb250ZXh0LCB1cmwsIGNvb2tpZU5hbWUpOworICAgIFdl
YkNvcmU6OmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCiB2b2lk
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6cmVmcmVzaFBsdWdpbnMoKQpJbmRleDogU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiAxMzg0MTEpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw4ICszOSw5IEBACiAjaW1wb3J0ICJXZWJLaXRWZXJzaW9uQ2hlY2tzLmgiCiAj
aW1wb3J0ICJXZWJOU0RpY3Rpb25hcnlFeHRyYXMuaCIKICNpbXBvcnQgIldlYk5TVVJMRXh0cmFz
LmgiCisjaW1wb3J0ICJXZWJTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPFdlYkNvcmUvQXBw
bGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KLSNpbXBvcnQgPFdlYkNvcmUvQ29va2llU3RvcmFnZUNG
TmV0Lmg+CisjaW1wb3J0IDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lvbi5oPgogI2ltcG9y
dCA8V2ViQ29yZS9SZXNvdXJjZUhhbmRsZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgog
CkBAIC0xMjg2LDEyICsxMjg3LDEzIEBAICsgKHZvaWQpX3NldElCQ3JlYXRvcklEOihOU1N0cmlu
ZyAqKXN0cmkKIAogKyAodm9pZClfc3dpdGNoTmV0d29ya0xvYWRlclRvTmV3VGVzdGluZ1Nlc3Np
b24KIHsKLSAgICBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpzd2l0Y2hUb05ld1Rlc3RpbmdT
ZXNzaW9uKCk7CisgICAgSW5pdFdlYkNvcmVTeXN0ZW1JbnRlcmZhY2UoKTsKKyAgICBOZXR3b3Jr
U3RvcmFnZVNlc3Npb246OnN3aXRjaFRvTmV3VGVzdGluZ1Nlc3Npb24oKTsKIH0KIAogKyAodm9p
ZClfc2V0Q3VycmVudE5ldHdvcmtMb2FkZXJTZXNzaW9uQ29va2llQWNjZXB0UG9saWN5OihOU0hU
VFBDb29raWVBY2NlcHRQb2xpY3kpcG9saWN5CiB7Ci0gICAgV2ViRnJhbWVOZXR3b3JraW5nQ29u
dGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yVGVzdGluZ0NvbnRleHQocG9saWN5KTsKKyAg
ICBXS1NldEhUVFBDb29raWVBY2NlcHRQb2xpY3koTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWZh
dWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVTdG9yYWdlKCkuZ2V0KCksIHBvbGljeSk7CiB9CiAK
IC0gKEJPT0wpaXNET01QYXN0ZUFsbG93ZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0JKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjAxNiw3ICsyMDE2LDcgQEAgLSAoTlNDYWNo
ZWRVUkxSZXNwb25zZSAqKV9jYWNoZWRSZXNwb25zZQogICAgIGlmICghX3ByaXZhdGUtPnBhZ2Up
CiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBpZiAoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBz
dG9yYWdlU2Vzc2lvbiA9IF9wcml2YXRlLT5wYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPm5l
dHdvcmtpbmdDb250ZXh0KCktPnN0b3JhZ2VTZXNzaW9uKCkpCisgICAgaWYgKENGVVJMU3RvcmFn
ZVNlc3Npb25SZWYgc3RvcmFnZVNlc3Npb24gPSBfcHJpdmF0ZS0+cGFnZS0+bWFpbkZyYW1lKCkt
PmxvYWRlcigpLT5uZXR3b3JraW5nQ29udGV4dCgpLT5zdG9yYWdlU2Vzc2lvbigpLnBsYXRmb3Jt
U2Vzc2lvbigpKQogICAgICAgICBjYWNoZWRSZXNwb25zZSA9IFdLQ2FjaGVkUmVzcG9uc2VGb3JS
ZXF1ZXN0KHN0b3JhZ2VTZXNzaW9uLCByZXF1ZXN0LmdldCgpKTsKICAgICBlbHNlCiAgICAgICAg
IGNhY2hlZFJlc3BvbnNlID0gW1tOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXSBjYWNoZWRSZXNw
b25zZUZvclJlcXVlc3Q6cmVxdWVzdC5nZXQoKV07CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNp
b24gMTM4NDEyKQorKysgU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyNCBAQAorMjAxMi0xMi0yMiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFw
cGxlLmNvbT4KKworICAgICAgICBBZGQgYSBzZXBhcmF0ZSBjbGFzcyBmb3IgbmV0d29ya2luZyBy
ZWxhdGVkIHN0b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwNTY3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3BwOgorICAgICAg
ICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmNvb2tpZXNGb3JET00pOgorICAgICAgICAoUGxhdGZv
cm1TdHJhdGVnaWVzUXQ6OnNldENvb2tpZXNGcm9tRE9NKToKKyAgICAgICAgKFBsYXRmb3JtU3Ry
YXRlZ2llc1F0Ojpjb29raWVzRW5hYmxlZCk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNR
dDo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpOgorICAgICAgICAoUGxhdGZvcm1TdHJh
dGVnaWVzUXQ6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzUXQ6
OmRlbGV0ZUNvb2tpZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVn
aWVzUXQuaDoKKyAgICAgICAgQ29va2llIGZ1bmN0aW9ucyBub3cgdGFrZSBhIE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiwgbm90IGEgTmV0d29ya2luZ0NvbnRleHQuCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9RV2ViRnJhbWVBZGFwdGVyLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9R
V2ViUGFnZUFkYXB0ZXIuY3BwOgorICAgICAgICBVcGRhdGVkIGZvciBSZXNvdXJjZUhhbmRsZSBp
bmNsdWRlIGNoYW5nZXMuCisKIDIwMTItMTItMTggIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHVubmVjZXNzYXJ5IGZ1bmN0aW9ucyBmcm9tIENv
b2tpZXNTdHJhdGVneQpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0
Zm9ybVN0cmF0ZWdpZXNRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5jcHAJKHJldmlzaW9uIDEzODQxMSkKKysr
IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzUXQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC05OSwzNCArOTksMzQgQEAgdm9pZCBQbGF0Zm9ybVN0cmF0ZWdp
ZXNRdDo6bm90aWZ5Q29va2llcwogewogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6
OmNvb2tpZXNGb3JET00oTmV0d29ya2luZ0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZp
cnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK1N0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6
Y29va2llc0ZvckRPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICByZXR1cm4gV2ViQ29y
ZTo6Y29va2llc0ZvckRPTShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBX
ZWJDb3JlOjpjb29raWVzRm9yRE9NKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLXZv
aWQgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OnNldENvb2tpZXNGcm9tRE9NKE5ldHdvcmtpbmdDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgY29va2llU3RyaW5nKQordm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNRdDo6c2V0
Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2ll
U3RyaW5nKQogewotICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKGNvbnRleHQsIGZpcnN0
UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURP
TShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CiB9CiAKLWJvb2wgUGxh
dGZvcm1TdHJhdGVnaWVzUXQ6OmNvb2tpZXNFbmFibGVkKE5ldHdvcmtpbmdDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitib29sIFBsYXRm
b3JtU3RyYXRlZ2llc1F0Ojpjb29raWVzRW5hYmxlZChjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Np
b24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKIHsK
LSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoY29udGV4dCwgZmlyc3RQYXJ0eSwg
dXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llc0VuYWJsZWQoc2Vzc2lvbiwgZmlyc3RQ
YXJ0eSwgdXJsKTsKIH0KIAotU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojpjb29raWVSZXF1
ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2ll
c1F0Ojpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb25zdCBOZXR3b3JrU3RvcmFnZVNl
c3Npb24mIHNlc3Npb24sIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkK
IHsKLSAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29u
dGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotYm9vbCBQ
bGF0Zm9ybVN0cmF0ZWdpZXNRdDo6Z2V0UmF3Q29va2llcyhOZXR3b3JraW5nQ29udGV4dCogY29u
dGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsLCBWZWN0b3I8Q29v
a2llPiYgcmF3Q29va2llcykKK2Jvb2wgUGxhdGZvcm1TdHJhdGVnaWVzUXQ6OmdldFJhd0Nvb2tp
ZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQogewot
ICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKGNvbnRleHQsIGZpcnN0UGFydHksIHVy
bCwgcmF3Q29va2llcyk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoc2Vzc2lv
biwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVN0cmF0
ZWdpZXNRdDo6ZGVsZXRlQ29va2llKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSkKK3ZvaWQgUGxhdGZvcm1TdHJhdGVn
aWVzUXQ6OmRlbGV0ZUNvb2tpZShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQogewotICAgIFdlYkNv
cmU6OmRlbGV0ZUNvb2tpZShjb250ZXh0LCB1cmwsIGNvb2tpZU5hbWUpOworICAgIFdlYkNvcmU6
OmRlbGV0ZUNvb2tpZShzZXNzaW9uLCB1cmwsIGNvb2tpZU5hbWUpOwogfQogCiB2b2lkIFBsYXRm
b3JtU3RyYXRlZ2llc1F0OjpyZWZyZXNoUGx1Z2lucygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1F0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNRdC5oCShyZXZp
c2lvbiAxMzg0MTEpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1BsYXRmb3Jt
U3RyYXRlZ2llc1F0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDEyICs1OCwxMiBAQCBwcml2YXRl
OgogICAgIAogICAgIC8vIFdlYkNvcmU6OkNvb2tpZXNTdHJhdGVneQogICAgIHZpcnR1YWwgdm9p
ZCBub3RpZnlDb29raWVzQ2hhbmdlZCgpOwotICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JE
T00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJz
dFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvb2tp
ZXNGcm9tRE9NKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwotICAg
IHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCos
IGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsK
LSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShXZWJDb3Jl
OjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhXZWJD
b3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHks
IGNvbnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOwotICAgIHZp
cnR1YWwgdm9pZCBkZWxldGVDb29raWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29v
a2llc0ZvckRPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmly
dHVhbCB2b2lkIHNldENvb2tpZXNGcm9tRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6
OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIGJvb2wgY29va2llc0VuYWJsZWQo
Y29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VS
TCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgU3RyaW5n
IGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNv
cmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0UmF3Q29va2llcyhjb25zdCBXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5
LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIFdl
YkNvcmU6OkRhdGFiYXNlU3RyYXRlZ3kKICAgICAvLyAtIFVzaW5nIGRlZmF1bHQgaW1wbGVtZW50
YXRpb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJGcmFtZUFk
YXB0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
UVdlYkZyYW1lQWRhcHRlci5jcHAJKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvUVdlYkZyYW1lQWRhcHRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIKICNpbmNsdWRlICJL
VVJMLmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvblNjaGVkdWxlci5oIgorI2luY2x1ZGUgIk5ldHdv
cmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJQYWdlLmgi
CiAjaW5jbHVkZSAiUVdlYlBhZ2VBZGFwdGVyLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9RV2ViUGFnZUFkYXB0ZXIuY3BwCShyZXZpc2lvbiAxMzg0
MTEpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L1FXZWJQYWdlQWRhcHRlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJMb2NhbGl6ZWRT
dHJpbmdzLmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1lbW9y
eUNhY2hlLmgiCisjaW5jbHVkZSAiTmV0d29ya2luZ0NvbnRleHQuaCIKICNpbmNsdWRlICJOb2Rl
TGlzdC5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvblByZXNlbnRlckNsaWVudFF0LmgiCiAjaW5j
bHVkZSAiUGFnZUdyb3VwLmgiCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzg0MTIp
CisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyOCBAQAorMjAxMi0xMi0yMiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4K
KworICAgICAgICBBZGQgYSBzZXBhcmF0ZSBjbGFzcyBmb3IgbmV0d29ya2luZyByZWxhdGVkIHN0
b3JhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NTY3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViQ29va2llTWFuYWdlckNGTmV0LmNwcDoKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAg
ICAgVXBkYXRlZCBpbmNsdWRlcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQuaDoKKyAgICAgICAgVGhpcyBjbGFzcyBpcyBub3cgc2ltcGxlciwg
d2l0aCBtb3N0IHNlc3Npb24gdHJhY2tpbmcgYmVpbmcgaW4gV2ViQ29yZS4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYlBsYXRmb3JtU3RyYXRlZ2llcy5jcHA6CisgICAgICAgIChXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNGb3JET00pOgorICAgICAgICAoV2ViUGxhdGZvcm1T
dHJhdGVnaWVzOjpzZXRDb29raWVzRnJvbURPTSk6CisgICAgICAgIChXZWJQbGF0Zm9ybVN0cmF0
ZWdpZXM6OmNvb2tpZXNFbmFibGVkKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUpOgorICAgICAgICAoV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpnZXRSYXdDb29raWVzKToKKyAgICAgICAgKFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6
ZGVsZXRlQ29va2llKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaDoKKyAgICAgICAgV2Ugbm8gbG9uZ2VyIG5lZWQgYSBmdW5jdGlvbiBmb3IgZGVmYXVs
dCBzdG9yYWdlISBPdGhlciBmdW5jdGlvbnMgbm93IHRha2UgYSBzZXNzaW9uLgorCiAyMDEyLTEy
LTIxICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAg
ICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTM4MzMxLgpJbmRleDogU291cmNlL1dlYktpdC93
aW4vV2ViQ29va2llTWFuYWdlckNGTmV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb29raWVNYW5hZ2VyQ0ZOZXQuY3BwCShyZXZpc2lvbiAxMzg0MTEpCisrKyBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb29raWVNYW5hZ2VyQ0ZOZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw3ICsyOCw3IEBACiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgogCiAjaW5jbHVk
ZSA8Q0ZOZXR3b3JrL0NGSFRUUENvb2tpZXNQcml2Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Db29r
aWVTdG9yYWdlQ0ZOZXQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05ldHdvcmtTdG9yYWdlU2Vzc2lv
bi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApJbmRleDogU291cmNlL1dlYktpdC93
aW4vV2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5j
cHAJKHJldmlzaW9uIDEzODQxMSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTQsNyArMTU0LDYgQEAKICNpZiBVU0UoQ0ZORVRXT1JLKQogI2lu
Y2x1ZGUgPENGTmV0d29yay9DRlVSTENhY2hlUHJpdi5oPgogI2luY2x1ZGUgPENGTmV0d29yay9D
RlVSTFByb3RvY29sUHJpdi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llU3RvcmFnZUNGTmV0
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFj
ZS5oPiAKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAkocmV2aXNp
b24gMTM4NDExKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDYgQEAKICNp
bmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2lmIFVTRShDRk5FVFdPUkspCiAjaW5jbHVk
ZSA8Q0ZOZXR3b3JrL0NGSFRUUENvb2tpZXNQcml2Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Db29r
aWVTdG9yYWdlQ0ZOZXQuaD4KICNlbmRpZgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4K
ICNpZiBVU0UoQ0ZORVRXT1JLKQpAQCAtMzMsOCArMzIsMTEgQEAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogCiAjaWYgVVNFKENGTkVUV09SSykKLXN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9u
UmVmIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uOwotc3RhdGljIENGVVJMU3RvcmFnZVNlc3Npb25S
ZWYgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb247CitzdGF0aWMgT3duUHRyPE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbj4mIHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkKK3sKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKE93blB0cjxOZXR3b3JrU3RvcmFnZVNlc3Npb24+LCBzZXNzaW9u
LCAoKSk7CisgICAgcmV0dXJuIHNlc3Npb247Cit9CiAjZW5kaWYKIAogUGFzc1JlZlB0cjxXZWJG
cmFtZU5ldHdvcmtpbmdDb250ZXh0PiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpjcmVhdGUo
RnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKQEAgLTY5LDc1ICs3MSw0MyBA
QCB2b2lkIFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ6OnNldFByaXZhCiAgICAgcHJpdmF0ZUJy
b3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpID0gaWRlbnRpZmllcjsKIH0KIAot
dm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0Ojpzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9u
KCkKLXsKLSNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIC8vIFNldCBhIHByaXZhdGUgc2Vzc2lvbiBm
b3IgdGVzdGluZyB0byBhdm9pZCBpbnRlcmZlcmluZyB3aXRoIGdsb2JhbCBjb29raWVzLiBUaGlz
IHNob3VsZCBiZSBkaWZmZXJlbnQgZnJvbSBwcml2YXRlIGJyb3dzaW5nIHNlc3Npb24uCi0gICAg
ZGVmYXVsdENGU3RvcmFnZVNlc3Npb24gPSB3a0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihD
RlNUUigiUHJpdmF0ZSBXZWJLaXQgU2Vzc2lvbiIpLCBkZWZhdWx0Q0ZTdG9yYWdlU2Vzc2lvbik7
Ci0jZW5kaWYKLX0KLQogdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogI2lm
IFVTRShDRk5FVFdPUkspCi0gICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKQor
ICAgIGlmIChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBTdHJpbmcgYmFzZSA9IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uSWRlbnRp
ZmllckJhc2UoKS5pc051bGwoKSA/IFN0cmluZyhyZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVm
PihDRkJ1bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rpb25hcnlLZXkoQ0ZCdW5kbGVHZXRNYWluQnVu
ZGxlKCksIGtDRkJ1bmRsZUlkZW50aWZpZXJLZXkpKSkgOiBwcml2YXRlQnJvd3NpbmdTdG9yYWdl
U2Vzc2lvbklkZW50aWZpZXJCYXNlKCk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjZklk
ZW50aWZpZXIgPSBTdHJpbmcoYmFzZSArICIuUHJpdmF0ZUJyb3dzaW5nIikuY3JlYXRlQ0ZTdHJp
bmcoKTsKKyAgICBTdHJpbmcgaWRlbnRpZmllckJhc2UgPSBwcml2YXRlQnJvd3NpbmdTdG9yYWdl
U2Vzc2lvbklkZW50aWZpZXJCYXNlKCkuaXNOdWxsKCkgPyBTdHJpbmcocmVpbnRlcnByZXRfY2Fz
dDxDRlN0cmluZ1JlZj4oQ0ZCdW5kbGVHZXRWYWx1ZUZvckluZm9EaWN0aW9uYXJ5S2V5KENGQnVu
ZGxlR2V0TWFpbkJ1bmRsZSgpLCBrQ0ZCdW5kbGVJZGVudGlmaWVyS2V5KSkpIDogcHJpdmF0ZUJy
b3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZSgpOwogCi0gICAgcHJpdmF0ZUJyb3dz
aW5nU3RvcmFnZVNlc3Npb24gPSB3a0NyZWF0ZVByaXZhdGVTdG9yYWdlU2Vzc2lvbihjZklkZW50
aWZpZXIuZ2V0KCksIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uKTsKKyAgICBwcml2YXRlQnJvd3Np
bmdTdG9yYWdlU2Vzc2lvbigpID0gTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpjcmVhdGVQcml2YXRl
QnJvd3NpbmdTZXNzaW9uKGlkZW50aWZpZXJCYXNlKTsKICNlbmRpZgogfQogCiB2b2lkIFdlYkZy
YW1lTmV0d29ya2luZ0NvbnRleHQ6OmRlc3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCkKIHsK
ICNpZiBVU0UoQ0ZORVRXT1JLKQotICAgIGlmICghcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Np
b24pCi0gICAgICAgIHJldHVybjsKLQotICAgIENGUmVsZWFzZShwcml2YXRlQnJvd3NpbmdTdG9y
YWdlU2Vzc2lvbik7Ci0gICAgcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24gPSAwOworICAg
IHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKCkgPSBudWxscHRyOwogI2VuZGlmCiB9CiAK
ICNpZiBVU0UoQ0ZORVRXT1JLKQotQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBXZWJGcmFtZU5ldHdv
cmtpbmdDb250ZXh0OjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKQorTmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjpzdG9yYWdlU2Vzc2lvbigpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uOwotfQotCi1ib29sIFdlYkZyYW1l
TmV0d29ya2luZ0NvbnRleHQ6OmluUHJpdmF0ZUJyb3dzaW5nTW9kZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIGZyYW1lKCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKSAmJiBmcmFtZSgpLT5zZXR0aW5n
cygpLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7Ci19Ci0KLUNGVVJMU3RvcmFnZVNlc3Npb25S
ZWYgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c3RvcmFnZVNlc3Npb24oKSBjb25zdAotewot
ICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IGluUHJpdmF0ZUJyb3dzaW5nTW9kZSgp
OwotICAgIGlmIChwcml2YXRlQnJvd3NpbmdFbmFibGVkKSB7Ci0gICAgICAgIEFTU0VSVChwcml2
YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbik7Ci0gICAgICAgIHJldHVybiBwcml2YXRlQnJvd3Np
bmdTdG9yYWdlU2Vzc2lvbjsKKyAgICBib29sIGluUHJpdmF0ZUJyb3dzaW5nTW9kZSA9IGZyYW1l
KCkgJiYgZnJhbWUoKS0+c2V0dGluZ3MoKSAmJiBmcmFtZSgpLT5zZXR0aW5ncygpLT5wcml2YXRl
QnJvd3NpbmdFbmFibGVkKCk7CisgICAgaWYgKGluUHJpdmF0ZUJyb3dzaW5nTW9kZSkgeworICAg
ICAgICBBU1NFUlQocHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKSk7CisgICAgICAgIHJl
dHVybiAqcHJpdmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb24oKTsKICAgICB9Ci0gICAgcmV0dXJu
IGRlZmF1bHRDRlN0b3JhZ2VTZXNzaW9uOwotfQotCi12b2lkIFdlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQ6OnNldENvb2tpZUFjY2VwdFBvbGljeUZvclRlc3RpbmdDb250ZXh0KENGSFRUUENvb2tp
ZVN0b3JhZ2VBY2NlcHRQb2xpY3kgcG9saWN5KQotewotICAgIEFTU0VSVChkZWZhdWx0Q0ZTdG9y
YWdlU2Vzc2lvbik7Ci0gICAgUmV0YWluUHRyPENGSFRUUENvb2tpZVN0b3JhZ2VSZWY+IGRlZmF1
bHRDb29raWVTdG9yYWdlID0gYWRvcHRDRih3a0NvcHlIVFRQQ29va2llU3RvcmFnZShkZWZhdWx0
Q0ZTdG9yYWdlU2Vzc2lvbikpOwotICAgIENGSFRUUENvb2tpZVN0b3JhZ2VTZXRDb29raWVBY2Nl
cHRQb2xpY3koZGVmYXVsdENvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7CisgICAgcmV0dXJu
IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9uKCk7CiB9CiAKIHZv
aWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6c2V0Q29va2llQWNjZXB0UG9saWN5Rm9yQWxs
Q29udGV4dHMoQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeSBwb2xpY3kpCiB7Ci0gICAg
aWYgKFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBjb29raWVTdG9yYWdlID0gZGVm
YXVsdENGSFRUUENvb2tpZVN0b3JhZ2UoKSkKKyAgICBpZiAoUmV0YWluUHRyPENGSFRUUENvb2tp
ZVN0b3JhZ2VSZWY+IGNvb2tpZVN0b3JhZ2UgPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1
bHRTdG9yYWdlU2Vzc2lvbigpLmNvb2tpZVN0b3JhZ2UoKSkKICAgICAgICAgQ0ZIVFRQQ29va2ll
U3RvcmFnZVNldENvb2tpZUFjY2VwdFBvbGljeShjb29raWVTdG9yYWdlLmdldCgpLCBwb2xpY3kp
OwogCi0gICAgaWYgKHByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uKSB7Ci0gICAgICAgIFJl
dGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBwcml2YXRlQnJvd3NpbmdDb29raWVTdG9y
YWdlID0gYWRvcHRDRih3a0NvcHlIVFRQQ29va2llU3RvcmFnZShwcml2YXRlQnJvd3NpbmdTdG9y
YWdlU2Vzc2lvbikpOwotICAgICAgICBDRkhUVFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0
UG9saWN5KHByaXZhdGVCcm93c2luZ0Nvb2tpZVN0b3JhZ2UuZ2V0KCksIHBvbGljeSk7Ci0gICAg
fQorICAgIGlmIChwcml2YXRlQnJvd3NpbmdTdG9yYWdlU2Vzc2lvbigpKQorICAgICAgICBDRkhU
VFBDb29raWVTdG9yYWdlU2V0Q29va2llQWNjZXB0UG9saWN5KHByaXZhdGVCcm93c2luZ1N0b3Jh
Z2VTZXNzaW9uKCktPmNvb2tpZVN0b3JhZ2UoKS5nZXQoKSwgcG9saWN5KTsKIH0KICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5n
Q29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSwxNCArMjksMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFdlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZShXZWJDb3JlOjpGcmFtZSos
IGNvbnN0IFdURjo6U3RyaW5nJiB1c2VyQWdlbnQpOwogCiAgICAgc3RhdGljIHZvaWQgc2V0UHJp
dmF0ZUJyb3dzaW5nU3RvcmFnZVNlc3Npb25JZGVudGlmaWVyQmFzZShjb25zdCBTdHJpbmcmKTsK
LSAgICBzdGF0aWMgdm9pZCBzd2l0Y2hUb05ld1Rlc3RpbmdTZXNzaW9uKCk7CiAgICAgc3RhdGlj
IHZvaWQgZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbigpOwogICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3lQcml2YXRlQnJvd3NpbmdTZXNzaW9uKCk7CiAKICNpZiBVU0UoQ0ZORVRXT1JLKQotICAg
IHN0YXRpYyBDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIGRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpOwot
Ci0gICAgc3RhdGljIHZvaWQgc2V0Q29va2llQWNjZXB0UG9saWN5Rm9yVGVzdGluZ0NvbnRleHQo
Q0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBvbGljeSk7CiAgICAgc3RhdGljIHZvaWQgc2V0Q29v
a2llQWNjZXB0UG9saWN5Rm9yQWxsQ29udGV4dHMoQ0ZIVFRQQ29va2llU3RvcmFnZUFjY2VwdFBv
bGljeSk7CiAjZW5kaWYKIApAQCAtNTAsOCArNDYsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
V1RGOjpTdHJpbmcgdXNlckFnZW50KCkgY29uc3Q7CiAgICAgdmlydHVhbCBXVEY6OlN0cmluZyBy
ZWZlcnJlcigpIGNvbnN0OwogI2lmIFVTRShDRk5FVFdPUkspCi0gICAgdmlydHVhbCBib29sIGlu
UHJpdmF0ZUJyb3dzaW5nTW9kZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgQ0ZVUkxTdG9yYWdlU2Vz
c2lvblJlZiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0OworICAgIHZpcnR1YWwgV2ViQ29yZTo6TmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiBzdG9yYWdlU2Vzc2lvbigpIGNvbnN0OwogI2VuZGlmCiAgICAg
dmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKIApJbmRleDogU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCShy
ZXZpc2lvbiAxMzg0MTEpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Niw0NCArODYsMzQgQEAg
dm9pZCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6Om5vdGlmeUNvb2tpZQogewogfQogCi0jaWYgVVNF
KENGTkVUV09SSykKLVJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXM6OmRlZmF1bHRDb29raWVTdG9yYWdlKCkKK1N0cmluZyBXZWJQbGF0Zm9ybVN0
cmF0ZWdpZXM6OmNvb2tpZXNGb3JET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNz
aW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCiB7Ci0gICAgaWYg
KENGVVJMU3RvcmFnZVNlc3Npb25SZWYgc2Vzc2lvbiA9IFdlYkZyYW1lTmV0d29ya2luZ0NvbnRl
eHQ6OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpKQotICAgICAgICByZXR1cm4gYWRvcHRDRih3a0Nv
cHlIVFRQQ29va2llU3RvcmFnZShzZXNzaW9uKSk7Ci0KLSAgICByZXR1cm4gd2tHZXREZWZhdWx0
SFRUUENvb2tpZVN0b3JhZ2UoKTsKLX0KLSNlbmRpZgotCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJh
dGVnaWVzOjpjb29raWVzRm9yRE9NKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCi17Ci0gICAgcmV0dXJuIFdlYkNvcmU6
OmNvb2tpZXNGb3JET00oY29udGV4dCwgZmlyc3RQYXJ0eSwgdXJsKTsKKyAgICByZXR1cm4gV2Vi
Q29yZTo6Y29va2llc0ZvckRPTShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwogfQogCi12b2lk
IFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIFdlYlBsYXRmb3JtU3RyYXRlZ2llczo6c2V0
Q29va2llc0Zyb21ET00oY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25z
dCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2ll
U3RyaW5nKQogewotICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9NKGNvbnRleHQsIGZpcnN0
UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKKyAgICBXZWJDb3JlOjpzZXRDb29raWVzRnJvbURP
TShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIGNvb2tpZVN0cmluZyk7CiB9CiAKLWJvb2wgV2Vi
UGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVzRW5hYmxlZChOZXR3b3JraW5nQ29udGV4dCogY29u
dGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBXZWJQ
bGF0Zm9ybVN0cmF0ZWdpZXM6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQog
ewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChjb250ZXh0LCBmaXJzdFBhcnR5
LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzZXNzaW9uLCBmaXJz
dFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpjb29raWVS
ZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3Qg
S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFdlYlBsYXRmb3JtU3Ry
YXRlZ2llczo6Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3Jh
Z2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1
cmwpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVl
KGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNvb2tpZVJl
cXVlc3RIZWFkZXJGaWVsZFZhbHVlKHNlc3Npb24sIGZpcnN0UGFydHksIHVybCk7CiB9CiAKLWJv
b2wgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpnZXRSYXdDb29raWVzKE5ldHdvcmtpbmdDb250ZXh0
KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3Rv
cjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXM6OmdldFJh
d0Nvb2tpZXMoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBLVVJM
JiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVz
KQogewotICAgIHJldHVybiBXZWJDb3JlOjpnZXRSYXdDb29raWVzKGNvbnRleHQsIGZpcnN0UGFy
dHksIHVybCwgcmF3Q29va2llcyk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMo
c2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKIH0KIAotdm9pZCBXZWJQbGF0
Zm9ybVN0cmF0ZWdpZXM6OmRlbGV0ZUNvb2tpZShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwg
Y29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCit2b2lkIFdlYlBsYXRm
b3JtU3RyYXRlZ2llczo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYg
c2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUpCiB7Ci0g
ICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKGNvbnRleHQsIHVybCwgY29va2llTmFtZSk7CisgICAg
V2ViQ29yZTo6ZGVsZXRlQ29va2llKHNlc3Npb24sIHVybCwgY29va2llTmFtZSk7CiB9CiAKIHZv
aWQgV2ViUGxhdGZvcm1TdHJhdGVnaWVzOjpyZWZyZXNoUGx1Z2lucygpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJQbGF0Zm9ybVN0cmF0
ZWdpZXMuaAkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViUGxhdGZvcm1TdHJhdGVnaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDE1ICs1
MiwxMiBAQCBwcml2YXRlOgogCiAgICAgLy8gV2ViQ29yZTo6Q29va2llc1N0cmF0ZWd5CiAgICAg
dmlydHVhbCB2b2lkIG5vdGlmeUNvb2tpZXNDaGFuZ2VkKCk7Ci0jaWYgVVNFKENGTkVUV09SSykK
LSAgICB2aXJ0dWFsIFJldGFpblB0cjxDRkhUVFBDb29raWVTdG9yYWdlUmVmPiBkZWZhdWx0Q29v
a2llU3RvcmFnZSgpOwotI2VuZGlmCi0gICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvckRPTShX
ZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFy
dHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zy
b21ET00oV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7Ci0gICAgdmly
dHVhbCBib29sIGNvb2tpZXNFbmFibGVkKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29u
c3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwotICAg
IHZpcnR1YWwgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKFdlYkNvcmU6Ok5l
dHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKFdlYkNvcmU6
Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29u
c3QgV2ViQ29yZTo6S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7Ci0gICAgdmlydHVh
bCB2b2lkIGRlbGV0ZUNvb2tpZShXZWJDb3JlOjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdl
YkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVz
Rm9yRE9NKGNvbnN0IFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNv
cmU6OktVUkwmIGZpcnN0UGFydHksIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0Q29va2llc0Zyb21ET00oY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNz
aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VS
TCYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgYm9vbCBjb29raWVzRW5hYmxlZChjb25z
dCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBm
aXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCBTdHJpbmcgY29v
a2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
S1VSTCYpOworICAgIHZpcnR1YWwgYm9vbCBnZXRSYXdDb29raWVzKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OktVUkwmLCBWZWN0b3I8V2ViQ29yZTo6Q29va2llPiYpOworICAgIHZpcnR1
YWwgdm9pZCBkZWxldGVDb29raWUoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9u
JiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gV2ViQ29y
ZTo6RGF0YWJhc2VTdHJhdGVneQogICAgIC8vIC0gVXNpbmcgZGVmYXVsdCBpbXBsZW1lbnRhdGlv
bi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzg0MTIpCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbmNlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisy
MDEyLTEyLTIyICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAg
IEFkZCBhIHNlcGFyYXRlIGNsYXNzIGZvciBuZXR3b3JraW5nIHJlbGF0ZWQgc3RvcmFnZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA1Njc2CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5jcHA6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0
ZWdpZXNXaW5DRTo6Y29va2llc0ZvckRPTSk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNX
aW5DRTo6c2V0Q29va2llc0Zyb21ET00pOgorICAgICAgICAoUGxhdGZvcm1TdHJhdGVnaWVzV2lu
Q0U6OmNvb2tpZXNFbmFibGVkKToKKyAgICAgICAgKFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdp
ZXNXaW5DRTo6Z2V0UmF3Q29va2llcyk6CisgICAgICAgIChQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5D
RTo6ZGVsZXRlQ29va2llKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0
ZWdpZXNXaW5DRS5oOgorICAgICAgICBDb29raWUgZnVuY3Rpb25zIG5vdyB0YWtlIGEgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uLCBub3QgYSBOZXR3b3JraW5nQ29udGV4dC4KKwogMjAxMi0xMi0xOCAg
QWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW5u
ZWNlc3NhcnkgZnVuY3Rpb25zIGZyb20gQ29va2llc1N0cmF0ZWd5CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L1BsYXRmb3JtU3Ry
YXRlZ2llc1dpbkNFLmNwcAkocmV2aXNpb24gMTM4NDExKQorKysgU291cmNlL1dlYktpdC93aW5j
ZS9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTgzLDM0ICs4MywzNCBAQCB2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpub3Rp
ZnlDb29rCiB7CiB9CiAKLVN0cmluZyBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y29va2llc0Zv
ckRPTShOZXR3b3JraW5nQ29udGV4dCogY29udGV4dCwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwg
Y29uc3QgS1VSTCYgdXJsKQorU3RyaW5nIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpjb29raWVz
Rm9yRE9NKGNvbnN0IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYg
Zmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29r
aWVzRm9yRE9NKGNvbnRleHQsIGZpcnN0UGFydHksIHVybCk7CisgICAgcmV0dXJuIFdlYkNvcmU6
OmNvb2tpZXNGb3JET00oc2Vzc2lvbiwgZmlyc3RQYXJ0eSwgdXJsKTsKIH0KIAotdm9pZCBQbGF0
Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6c2V0Q29va2llc0Zyb21ET00oTmV0d29ya2luZ0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBjb29raWVTdHJpbmcpCit2b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpzZXRD
b29raWVzRnJvbURPTShjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIGNvbnN0
IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVT
dHJpbmcpCiB7Ci0gICAgV2ViQ29yZTo6c2V0Q29va2llc0Zyb21ET00oY29udGV4dCwgZmlyc3RQ
YXJ0eSwgdXJsLCBjb29raWVTdHJpbmcpOworICAgIFdlYkNvcmU6OnNldENvb2tpZXNGcm9tRE9N
KHNlc3Npb24sIGZpcnN0UGFydHksIHVybCwgY29va2llU3RyaW5nKTsKIH0KIAotYm9vbCBQbGF0
Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6Y29va2llc0VuYWJsZWQoTmV0d29ya2luZ0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgUGxh
dGZvcm1TdHJhdGVnaWVzV2luQ0U6OmNvb2tpZXNFbmFibGVkKGNvbnN0IE5ldHdvcmtTdG9yYWdl
U2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgS1VSTCYgdXJs
KQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChjb250ZXh0LCBmaXJzdFBh
cnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVzRW5hYmxlZChzZXNzaW9uLCBm
aXJzdFBhcnR5LCB1cmwpOwogfQogCi1TdHJpbmcgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OmNv
b2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKE5ldHdvcmtpbmdDb250ZXh0KiBjb250ZXh0LCBj
b25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1cmwpCitTdHJpbmcgUGxhdGZvcm1T
dHJhdGVnaWVzV2luQ0U6OmNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvbnN0IE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgZmlyc3RQYXJ0eSwgY29uc3Qg
S1VSTCYgdXJsKQogewotICAgIHJldHVybiBXZWJDb3JlOjpjb29raWVSZXF1ZXN0SGVhZGVyRmll
bGRWYWx1ZShjb250ZXh0LCBmaXJzdFBhcnR5LCB1cmwpOworICAgIHJldHVybiBXZWJDb3JlOjpj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwpOwog
fQogCi1ib29sIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpnZXRSYXdDb29raWVzKE5ldHdvcmtp
bmdDb250ZXh0KiBjb250ZXh0LCBjb25zdCBLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBLVVJMJiB1
cmwsIFZlY3RvcjxDb29raWU+JiByYXdDb29raWVzKQorYm9vbCBQbGF0Zm9ybVN0cmF0ZWdpZXNX
aW5DRTo6Z2V0UmF3Q29va2llcyhjb25zdCBOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24s
IGNvbnN0IEtVUkwmIGZpcnN0UGFydHksIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tpZT4m
IHJhd0Nvb2tpZXMpCiB7Ci0gICAgcmV0dXJuIFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMoY29udGV4
dCwgZmlyc3RQYXJ0eSwgdXJsLCByYXdDb29raWVzKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Z2V0
UmF3Q29va2llcyhzZXNzaW9uLCBmaXJzdFBhcnR5LCB1cmwsIHJhd0Nvb2tpZXMpOwogfQogCi12
b2lkIFBsYXRmb3JtU3RyYXRlZ2llc1dpbkNFOjpkZWxldGVDb29raWUoTmV0d29ya2luZ0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lKQor
dm9pZCBQbGF0Zm9ybVN0cmF0ZWdpZXNXaW5DRTo6ZGVsZXRlQ29va2llKGNvbnN0IE5ldHdvcmtT
dG9yYWdlU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGNv
b2tpZU5hbWUpCiB7Ci0gICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKGNvbnRleHQsIHVybCwgY29v
a2llTmFtZSk7CisgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKHNlc3Npb24sIHVybCwgY29va2ll
TmFtZSk7CiB9CiAKIHZvaWQgUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0U6OnJlZnJlc2hQbHVnaW5z
KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJh
dGVnaWVzV2luQ0UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVT
dXBwb3J0L1BsYXRmb3JtU3RyYXRlZ2llc1dpbkNFLmgJKHJldmlzaW9uIDEzODQxMSkKKysrIFNv
dXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvUGxhdGZvcm1TdHJhdGVnaWVzV2luQ0Uu
aAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTIgKzUxLDEyIEBAIHByaXZhdGU6CiAKICAgICAvLyBX
ZWJDb3JlOjpDb29raWVzU3RyYXRlZ3kKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29va2llc0No
YW5nZWQoKTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVzRm9yRE9NKFdlYkNvcmU6Ok5ldHdv
cmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRDb29raWVzRnJvbURPTShXZWJDb3Jl
OjpOZXR3b3JraW5nQ29udGV4dCosIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OktVUkwmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIGJvb2wgY29v
a2llc0VuYWJsZWQoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRleHQqLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7Ci0gICAgdmlydHVhbCBTdHJp
bmcgY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoV2ViQ29yZTo6TmV0d29ya2luZ0NvbnRl
eHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJM
Jik7Ci0gICAgdmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoV2ViQ29yZTo6TmV0d29ya2luZ0Nv
bnRleHQqLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpL
VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkNvb2tpZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRl
Q29va2llKFdlYkNvcmU6Ok5ldHdvcmtpbmdDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYs
IGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JET00oY29uc3Qg
V2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmly
c3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb29r
aWVzRnJvbURPTShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgY29uc3QgU3Ry
aW5nJik7CisgICAgdmlydHVhbCBib29sIGNvb2tpZXNFbmFibGVkKGNvbnN0IFdlYkNvcmU6Ok5l
dHdvcmtTdG9yYWdlU2Vzc2lvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGZpcnN0UGFydHksIGNv
bnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBjb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRWYWx1ZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25z
dCBXZWJDb3JlOjpLVVJMJiBmaXJzdFBhcnR5LCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAg
dmlydHVhbCBib29sIGdldFJhd0Nvb2tpZXMoY29uc3QgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VT
ZXNzaW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgZmlyc3RQYXJ0eSwgY29uc3QgV2ViQ29yZTo6
S1VSTCYsIFZlY3RvcjxXZWJDb3JlOjpDb29raWU+Jik7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0
ZUNvb2tpZShjb25zdCBXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBXZWJDb3JlOjpEYXRhYmFzZVN0
cmF0ZWd5CiAgICAgLy8gLSBVc2luZyBkZWZhdWx0IGltcGxlbWVudGF0aW9uLgo=
</data>
<flag name="review"
          id="197927"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="197928"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>